diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index e94837a7..fde91243 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -4,14 +4,22 @@ on: [push] jobs: build: - runs-on: ubuntu-latest + strategy: + matrix: + php-versions: ['7.2', '7.3', '7.4', '8.0' ] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + tools: composer - name: Validate composer.json and composer.lock - run: php7.4 $(which composer) validate + run: composer validate - name: setup templates_c run: mkdir templates_c || true @@ -20,15 +28,45 @@ jobs: run: touch config.local.php && php -v - name: Install dependencies - run: php7.4 $(which composer) install --prefer-dist -n + run: composer install --prefer-dist -n - name: Build/test - run: php7.4 $(which composer) build + run: composer build - - name: setup coveralls - run: mkdir -p build/logs || true + - name: build coveralls coverage + run: php -m xdebug.mode=coverage vendor/bin/phpunit tests - name: Coveralls - run: vendor/bin/coveralls ./clover.xml || true + run: vendor/bin/php-coveralls ./clover.xml || true env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + + post_build: + needs: [build] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + tools: composer + + - name: setup templates_c + run: mkdir templates_c || true + + - name: touch config.local.php + run: touch config.local.php && php -v + + - name: Install dependencies + run: composer install --prefer-dist -n + + - name: build coveralls coverage + run: php -d xdebug.mode=coverage vendor/bin/phpunit tests + + - name: Coveralls + run: vendor/bin/php-coveralls || true + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + diff --git a/ADDITIONS/README.TXT b/ADDITIONS/README.md similarity index 72% rename from ADDITIONS/README.TXT rename to ADDITIONS/README.md index eecb1c64..6e0238ab 100644 --- a/ADDITIONS/README.TXT +++ b/ADDITIONS/README.md @@ -1,52 +1,69 @@ -# -# Postfix Admin ADDITIONS -# -BEFORE YOU START ----------------- +# BEFORE YOU START + **** ALL THESE SCRIPTS ARE CREATED BY THIRD PARTIES **** **** THEY ARE AS IS, USE AT YOUR OWN RISK! **** -ADDITIONS ---------- +# ADDITIONS In this directory you will find additional scripts that are build by others. -- change_password.tgz +## change_password.tgz + by George Vieira SquirrelMail plugin to change your passwor -- cleanupdirs.pl +## cleanupdirs.pl + by jared bell Displays a list of mailboxes that need to be deleted -- mailbox_remover.pl +## mailbox_remover.pl + by Petr Znojemsky Deletes all unused mailboxes -- mkeveryone.pl +## mkeveryone.pl + by Joshua Preston Generate an 'everybody' alias for a domain. -- pfa_maildir_cleanup.pl +## pfa_maildir_cleanup.pl by Stephen Fulton Deletes all unused mailboxes -- postfixadmin-0.3-1.4.tar.gz +## postfixadmin-0.3-1.4.tar.gz + by Florian Kimmerl + The Postfixadmin SquirrelMail plugin let users change their virtual alias, vacation status/message and password. -- virtualmaildel.php +See also : https://github.com/postfixadmin/postfixadmin/tree/master/ADDITIONS/squirrelmail-plugin + + +## virtualmaildel.php + by George Vieira Deletes all unused mailboxes +## Example mailbox / domain scripts for Postfixadmin + - postfixadmin-mailbox-postcreation.sh - postfixadmin-mailbox-postdeletion.sh - postfixadmin-domain-postdeletion.sh by Troels Arvin + Examples of scripts relevant to the optional + + $CONF['mailbox_postcreation_script'], $CONF['mailbox_postdeletion_script'] and $CONF['domain_postdeletion_script'] configuration options. + + +## Cyrus Quota Usage + +See https://github.com/o-m-d/cyrus-quotausage-to-pfa + diff --git a/ADDITIONS/postfixadmin-mailbox-postpassword.sh b/ADDITIONS/postfixadmin-mailbox-postpassword.sh index f7a86131..807e5128 100644 --- a/ADDITIONS/postfixadmin-mailbox-postpassword.sh +++ b/ADDITIONS/postfixadmin-mailbox-postpassword.sh @@ -3,11 +3,14 @@ # Example script for dovecot mail-crypt-plugin # https://doc.dovecot.org/configuration_manual/mail_crypt_plugin/ +IFS= read -r -d $'\0' OLD_PASSWORD +IFS= read -r -d $'\0' NEW_PASSWORD + # New user -if [ -z "$3" ]; then - doveadm -o plugin/mail_crypt_private_password="$4" mailbox cryptokey generate -u "$1" -U - exit 0 +if [ -z "$OLD_PASSWORD" ]; then + OLD_PASSWORD="$(openssl rand -hex 16)" + doveadm -o plugin/mail_crypt_private_password="$OLD_PASSWORD" mailbox cryptokey generate -u "$1" -U fi # Password change -doveadm mailbox cryptokey password -u "$1" -o "$3" -n "$4" +printf "%s\n%s\n" "$OLD_PASSWORD" "$NEW_PASSWORD" | doveadm mailbox cryptokey password -u "$1" -N -O "" diff --git a/DOCUMENTS/Password_Expiration.md b/DOCUMENTS/Password_Expiration.md index 0d9fb826..6e64d2ba 100644 --- a/DOCUMENTS/Password_Expiration.md +++ b/DOCUMENTS/Password_Expiration.md @@ -86,7 +86,7 @@ do QUERY="SELECT username,password_expiry FROM mailbox WHERE password_expiry > now() + interval $LOWER DAY AND password_expiry < NOW() + interval $INTERVAL DAY" mysql --defaults-extra-file="$MYSQL_CREDENTIALS_FILE" "$POSTFIX_DB" -B -N -e "$QUERY" | while IFS=$'\t' read -a RESULT ; do - echo -e "Dear User, \n Your password will expire on ${RESULT[1]}" | mail -s "Password 30 days before expiration notication" -r $REPLY_ADDRESS ${RESULT[0]} + echo -e "Dear User, \n Your password will expire on ${RESULT[1]}" | mail -s "Password $INTERVAL days before expiration notication" -r $REPLY_ADDRESS ${RESULT[0]} done done diff --git a/DOCUMENTS/screenshots/README.md b/DOCUMENTS/screenshots/README.md new file mode 100644 index 00000000..b60bcf03 --- /dev/null +++ b/DOCUMENTS/screenshots/README.md @@ -0,0 +1,73 @@ +# Some screenshots of Postfixadmin + +## 1. Setup process + +When you visit visit https://your-site.com/postfixadmin/setup.php you'll see this - + +![Initial setup greeting page](setup-step1.png?raw=true "Initial setup load") + +After creating and adding the setup password hash into your config file, and then logging into the setup page with that password, you should see : + +![Setup after auth](setup-step2.png?raw=true "Setup after auth") + +If there are any hosting errors, or issues with your environment, they may be listed here. + +Create a new admin account using your setup password .... then you can login as an admin and start creating domains and mailboxes. + +## 2. As an Admin user + +### Login + +![Admin Login](admin-login.png?raw=true "Admin Login") + +### Welcome page + +![Admin Welcome](admin-welcome.png?raw=true "Admin welcome") + +### View other admins + +![Admin list](admin-list.png?raw=true "Admin list") + + +### View mailboxes and aliases for domain + +![Virtual overview](mailboxes-and-forwards-for-domain.png?raw=true "Viewing aliases and mailboxes for a domain") + +### Add mailbox + +You can create as many mailboxes as you want ... + +![Mailbox adding](mailbox-adding.png?raw=true "Creating a new mailbox") + + +### Add aliases (forwards) + +![Foward adding](create-new-alias.png?raw=true "Creating a new forward") + +### Add Fetchmail config for mailbox + +![Setup Fetchmail](fetchmail-new-config.png?raw=true "Fetchmail settings") + +## 3. As a User + +### Login + +![User loginl](users-login.png?raw=true "User login") + +### Welcome page + + +![User welcome](users-welcome.png?raw=true "User welcome") + +### Change your mail forward + +![User - edit mail forward(s)](users-edit-mail-forward.png?raw=true "User mail forwards") + +### Set / Unset autoresponse (Vacation) + +![User - autoresponder](users-enable-vacation-autoresponse.png?raw=true "User setup autoresponder") + +### I forgot my password + + +![User - forgot password](users-forgotten-password.png?raw=true "User forgot password") diff --git a/DOCUMENTS/screenshots/README.txt b/DOCUMENTS/screenshots/README.txt deleted file mode 100644 index e97b5262..00000000 --- a/DOCUMENTS/screenshots/README.txt +++ /dev/null @@ -1,2 +0,0 @@ -Random Screenshots taken on 2007/09/25, using a version of Postfixadmin from subversion. - diff --git a/DOCUMENTS/screenshots/admin-list.png b/DOCUMENTS/screenshots/admin-list.png new file mode 100644 index 00000000..f659f659 Binary files /dev/null and b/DOCUMENTS/screenshots/admin-list.png differ diff --git a/DOCUMENTS/screenshots/admin-login.png b/DOCUMENTS/screenshots/admin-login.png new file mode 100644 index 00000000..895d40cf Binary files /dev/null and b/DOCUMENTS/screenshots/admin-login.png differ diff --git a/DOCUMENTS/screenshots/admin-welcome.png b/DOCUMENTS/screenshots/admin-welcome.png new file mode 100644 index 00000000..396ba9ae Binary files /dev/null and b/DOCUMENTS/screenshots/admin-welcome.png differ diff --git a/DOCUMENTS/screenshots/create-new-alias.png b/DOCUMENTS/screenshots/create-new-alias.png new file mode 100644 index 00000000..3876bb9c Binary files /dev/null and b/DOCUMENTS/screenshots/create-new-alias.png differ diff --git a/DOCUMENTS/screenshots/domain-audit-log.png b/DOCUMENTS/screenshots/domain-audit-log.png new file mode 100644 index 00000000..477047bd Binary files /dev/null and b/DOCUMENTS/screenshots/domain-audit-log.png differ diff --git a/DOCUMENTS/screenshots/domain-edit.png b/DOCUMENTS/screenshots/domain-edit.png new file mode 100644 index 00000000..3d1ebb5d Binary files /dev/null and b/DOCUMENTS/screenshots/domain-edit.png differ diff --git a/DOCUMENTS/screenshots/domain-list.png b/DOCUMENTS/screenshots/domain-list.png new file mode 100644 index 00000000..84d33960 Binary files /dev/null and b/DOCUMENTS/screenshots/domain-list.png differ diff --git a/DOCUMENTS/screenshots/fetchmail-new-config.png b/DOCUMENTS/screenshots/fetchmail-new-config.png new file mode 100644 index 00000000..428fb021 Binary files /dev/null and b/DOCUMENTS/screenshots/fetchmail-new-config.png differ diff --git a/DOCUMENTS/screenshots/mailbox-adding.png b/DOCUMENTS/screenshots/mailbox-adding.png new file mode 100644 index 00000000..55448e7f Binary files /dev/null and b/DOCUMENTS/screenshots/mailbox-adding.png differ diff --git a/DOCUMENTS/screenshots/mailboxes-and-forwards-for-domain.png b/DOCUMENTS/screenshots/mailboxes-and-forwards-for-domain.png new file mode 100644 index 00000000..44cd94a5 Binary files /dev/null and b/DOCUMENTS/screenshots/mailboxes-and-forwards-for-domain.png differ diff --git a/DOCUMENTS/screenshots/postfixadmin-admin-create-alias.jpg b/DOCUMENTS/screenshots/postfixadmin-admin-create-alias.jpg deleted file mode 100644 index a1a087fa..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-admin-create-alias.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-admin-create-domain.jpg b/DOCUMENTS/screenshots/postfixadmin-admin-create-domain.jpg deleted file mode 100644 index 7a2f4e53..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-admin-create-domain.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-admin-create-mailbox.jpg b/DOCUMENTS/screenshots/postfixadmin-admin-create-mailbox.jpg deleted file mode 100644 index 0e598ece..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-admin-create-mailbox.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-admin-domain-list.jpg b/DOCUMENTS/screenshots/postfixadmin-admin-domain-list.jpg deleted file mode 100644 index 5d4fa15a..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-admin-domain-list.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-admin-virtual-list.jpg b/DOCUMENTS/screenshots/postfixadmin-admin-virtual-list.jpg deleted file mode 100644 index daa2336a..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-admin-virtual-list.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-inital-welcome.jpg b/DOCUMENTS/screenshots/postfixadmin-inital-welcome.jpg deleted file mode 100644 index 7f2fff85..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-inital-welcome.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-mail-admin-login.jpg b/DOCUMENTS/screenshots/postfixadmin-mail-admin-login.jpg deleted file mode 100644 index 19ef94a0..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-mail-admin-login.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-user-change-forward.jpg b/DOCUMENTS/screenshots/postfixadmin-user-change-forward.jpg deleted file mode 100644 index 262a6fb9..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-user-change-forward.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-user-overview.jpg b/DOCUMENTS/screenshots/postfixadmin-user-overview.jpg deleted file mode 100644 index 1b2069fa..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-user-overview.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/postfixadmin-user-vacation.jpg b/DOCUMENTS/screenshots/postfixadmin-user-vacation.jpg deleted file mode 100644 index 44cc9d99..00000000 Binary files a/DOCUMENTS/screenshots/postfixadmin-user-vacation.jpg and /dev/null differ diff --git a/DOCUMENTS/screenshots/setup-step1.png b/DOCUMENTS/screenshots/setup-step1.png new file mode 100644 index 00000000..c8926fd4 Binary files /dev/null and b/DOCUMENTS/screenshots/setup-step1.png differ diff --git a/DOCUMENTS/screenshots/setup-step2.png b/DOCUMENTS/screenshots/setup-step2.png new file mode 100644 index 00000000..ec7505d0 Binary files /dev/null and b/DOCUMENTS/screenshots/setup-step2.png differ diff --git a/DOCUMENTS/screenshots/users-edit-mail-forward.png b/DOCUMENTS/screenshots/users-edit-mail-forward.png new file mode 100644 index 00000000..c7364d94 Binary files /dev/null and b/DOCUMENTS/screenshots/users-edit-mail-forward.png differ diff --git a/DOCUMENTS/screenshots/users-enable-vacation-autoresponse.png b/DOCUMENTS/screenshots/users-enable-vacation-autoresponse.png new file mode 100644 index 00000000..c7f7d051 Binary files /dev/null and b/DOCUMENTS/screenshots/users-enable-vacation-autoresponse.png differ diff --git a/DOCUMENTS/screenshots/users-forgotten-password.png b/DOCUMENTS/screenshots/users-forgotten-password.png new file mode 100644 index 00000000..f03f69b1 Binary files /dev/null and b/DOCUMENTS/screenshots/users-forgotten-password.png differ diff --git a/DOCUMENTS/screenshots/users-login.png b/DOCUMENTS/screenshots/users-login.png new file mode 100644 index 00000000..5c43e93c Binary files /dev/null and b/DOCUMENTS/screenshots/users-login.png differ diff --git a/DOCUMENTS/screenshots/users-welcome.png b/DOCUMENTS/screenshots/users-welcome.png new file mode 100644 index 00000000..9b324773 Binary files /dev/null and b/DOCUMENTS/screenshots/users-welcome.png differ diff --git a/INSTALL.TXT b/INSTALL.TXT index ca10092d..8e93cb52 100644 --- a/INSTALL.TXT +++ b/INSTALL.TXT @@ -106,10 +106,11 @@ Create /srv/postfixadmin/config.local.php file for your local configuration: @@ -118,7 +119,7 @@ See config.inc.php for all available config options and their default value. You can also edit config.inc.php instead of creating a config.local.php, but this will make updates harder and is therefore not recommended. -The most important settings are those for your database server. +The most important settings are those for your database server, and the hashing mechanism to be used to store passwords in your database. You must also change the line that says : @@ -140,12 +141,34 @@ The easiest way to do this is $ mkdir -p /srv/postfixadmin/templates_c $ chown -R www-data /srv/postfixadmin/templates_c -(If you're using e.g. CentOS or another distribution which enables SELinux, something like the following may be necessary as well : + +4a. SELinux (CentOS/Fedora etc) +------------------------------- + +If you're using e.g. CentOS (or another distribution) which enables SELinux, something like the following will be necessary : + ```bash - chcon -R -t httpd_sys_content_rw_t /usr/share/postfixadmin/templates_c + semanage fcontext -a -t httpd_sys_content_t "/srv/postfixadmin(/.*)?" + semanage fcontext -a -t httpd_sys_rw_content_t "/srv/postfixadmin/templates_c(/.*)?" + restorecon -R /srv/postfixadmin ``` -) + +(Allow the webserver to read /srv/postfixadmin/* and write to /srv/postfixadmin/templates_c/*) + + +And if the webserver (PHP) needs to make network connections out to a database server, you'll probably need this : + +```bash + semanage boolean -m --on httpd_can_network_connect_db +```` + +If additionally need the webserve (PHP) to talk to an imap server, then you'll probably also need : + +```bash + semanage boolean -m --on httpd_can_network_connect +```` + 5. Check settings, and create Admin user ---------------------------------------- @@ -168,16 +191,14 @@ You need to specify that same password in the setup.php page, and click 'Login w You should then see a list of 'OK' messages. -The setup.php script will attempt to create the database structure -(or upgrade it if you're coming from a previous version). +The setup.php script will attempt to create the database structure (or upgrade it if you're coming from a previous version). You can then create an Superadmin user (or add another), using the form displayed (you'll need to re-enter the your setup password). 6. Use PostfixAdmin ------------------- -This is all that is needed. Fire up your browser and go to the site that you -specified to host Postfix Admin. +This is all that is needed. Fire up your browser and go to the site that you specified to host Postfix Admin. Login with the Superadmin user you've just created. 7. Integration with Postfix, Dovecot etc. ----------------------------------------- diff --git a/README.md b/README.md index bafaee05..44d20473 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/postfixadmin/Lobby) [![Coverage Status](https://coveralls.io/repos/github/postfixadmin/postfixadmin/badge.svg?branch=master)](https://coveralls.io/github/postfixadmin/postfixadmin?branch=master) ![GitHub repo size](https://img.shields.io/github/repo-size/postfixadmin/postfixadmin) -[![Chat](https://img.shields.io/badge/chat-on%20freenode-brightgreen.svg)](https://kiwiirc.com/nextclient/irc.freenode.net/#postfixadmin) +[![IRC Chat - #postfixadmin](https://img.shields.io/badge/IRC%20libera-brightgreen.svg)](https://web.libera.chat/#postfixadmin) # PostfixAdmin @@ -27,7 +27,10 @@ Integrates with : - Users have the ability to login, change their password or vacation (out of office) status. - Integration with Squirrelmail / Roundcube (via plugins) - Optional XMLRPC based API - - Supports PHP7.0+ + - Supports PHP7.2+ (older versions of PHP should work with older releases) + +[Some screenshots of Postfixadmin in action (as admin and user)](DOCUMENTS/screenshots/README.md) + ## Useful Links @@ -38,4 +41,4 @@ Integrates with : - [Installation instructions](/INSTALL.TXT) - [Wiki](https://sourceforge.net/p/postfixadmin/wiki/) - [Mailing list](https://sourceforge.net/p/postfixadmin/discussion/676076) - - [IRC channel](irc://irc.freenode.net/postfixadmin) (#postfixadmin on irc.freenode.net). + - [IRC channel](irc://irc.libera.chat/#postfixadmin) (#postfixadmin on Libera.chat). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..44496b78 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,23 @@ +# Security Policy + +## Supported Versions + +As of 2021/08 - + +| Version | Supported | +| ------- | ------------------ | +| 'dev' | :x: GitHub 'master' branch, use at own risk! | +| 3.3.x | :white_check_mark: | +| 3.2.x | Security/critical fixes only | +| < 3.2.x | :x: | + +Releases are published at : + + * https://github.com/postfixadmin/postfixadmin/releases + * ocassionally at https://sourceforge.net/projects/postfixadmin/ - sometimes with RPM/DEB packages. + +## Reporting a Vulnerability + +Either message GingerDog or cboltz on the PostfixAdmin libera chat - IRC channel, or email. Email addresses can be found in the 'git' changelog. + + diff --git a/VIRTUAL_VACATION/vacation.pl b/VIRTUAL_VACATION/vacation.pl index 824aa79d..385a1e8b 100644 --- a/VIRTUAL_VACATION/vacation.pl +++ b/VIRTUAL_VACATION/vacation.pl @@ -66,8 +66,8 @@ our $smtp_client = 'localhost'; our $smtp_helo = 'localhost.localdomain'; # send mail encrypted or plaintext -# if 'starttls', use STARTTLS; if 'ssl' (or 1), connect securely; otherwise, no security -our $smtp_ssl = 'starttls'; +# if 1, connect securely via ssl; otherwise, no security +our $smtp_ssl = 0; # maximum time in secs to wait for server; default is 120 our $smtp_timeout = '120'; @@ -496,10 +496,16 @@ sub send_vacation_email { $subject = Encode::encode_utf8($subject) if(Encode::is_utf8($subject)); $body = Encode::encode_utf8($body) if(Encode::is_utf8($body)); + + my $email_from = $from; + if($friendly_from ne '') { + $email_from = encode_mimewords($friendly_from, 'Charset', 'UTF-8') . " $from <$from>"; + } + $email = Email::Simple->create( header => [ To => $to, - From => $from, + From => $email_from, Subject => encode_mimewords($subject, 'Charset', 'UTF-8'), Precedence => 'junk', 'Content-Type' => "text/plain; charset=utf-8", diff --git a/common.php b/common.php index 372df07b..4677d6f3 100644 --- a/common.php +++ b/common.php @@ -30,6 +30,9 @@ if (!defined('POSTFIXADMIN')) { if (empty($_SESSION['flash'])) { $_SESSION['flash'] = array(); } + + // avoid clickjacking attacks? + header('X-Frame-Options: DENY'); } } diff --git a/composer.json b/composer.json index bdec2245..cb33b806 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ ], "check-format": "@php vendor/bin/php-cs-fixer fix --ansi --dry-run --diff", "format": "@php vendor/bin/php-cs-fixer fix --ansi", - "lint": "@php ./vendor/bin/parallel-lint --exclude vendor/ --exclude lib/block_random_int.php --exclude lib/array_column.php .", + "lint": "@php ./vendor/bin/parallel-lint --exclude vendor/ .", "test": "@php ./vendor/bin/phpunit --coverage-clover ./clover.xml tests/", "test-fixup": "mkdir -p templates_c ; test -f config.local.php || touch config.local.php", "psalm": "@php ./vendor/bin/psalm --no-cache --show-info=false " @@ -28,7 +28,7 @@ "friendsofphp/php-cs-fixer": "^2.19", "php-parallel-lint/php-parallel-lint": "^1.0", "php": ">7.2.0", - "cedx/coveralls": "^11.0", + "php-coveralls/php-coveralls": "*", "phpunit/phpunit": "8.*", "vimeo/psalm":"^4.0", "shardj/zf1-future" : "^1.12" diff --git a/config.inc.php b/config.inc.php index b16c1008..03758941 100644 --- a/config.inc.php +++ b/config.inc.php @@ -600,9 +600,10 @@ $CONF['mailbox_postedit_script'] = ''; $CONF['mailbox_postdeletion_script'] = ''; // Optional: See NOTE above. -// Script to run after setting a mailbox password. (New mailbox [$4 = empty] or change existing password) +// Script to run after setting a mailbox password. (New mailbox [old password = empty] or change existing password) // Disables changing password without entering old password. -// Parameters: (1) username (2) domain (3) old password (4) new password +// Parameters: (1) username (2) domain +// STDIN: old password + \0 + new password // $CONF['mailbox_postpassword_script']='sudo -u dovecot /usr/local/bin/postfixadmin-mailbox-postpassword.sh'; $CONF['mailbox_postpassword_script'] = ''; diff --git a/debian/postfixadmin.examples b/debian/postfixadmin.examples index 3d44bcc7..eceda75d 100644 --- a/debian/postfixadmin.examples +++ b/debian/postfixadmin.examples @@ -13,4 +13,4 @@ ADDITIONS/delete-mailq-by-domain.pl ADDITIONS/pfa_maildir_cleanup.pl ADDITIONS/quota_usage.pl ADDITIONS/fetchmail.pl -ADDITIONS/README.TXT +ADDITIONS/README.md diff --git a/functions.inc.php b/functions.inc.php index 01096457..ff6a50d3 100644 --- a/functions.inc.php +++ b/functions.inc.php @@ -108,7 +108,8 @@ function init_session($username, $is_admin = false) $_SESSION['sessid']['roles'] = array(); $_SESSION['sessid']['roles'][] = $is_admin ? 'admin' : 'user'; $_SESSION['sessid']['username'] = $username; - $_SESSION['PFA_token'] = md5(uniqid("", true)); + + $_SESSION['PFA_token'] = md5(random_bytes(8) . uniqid('pfa', true)); return $status; } @@ -959,8 +960,10 @@ function _pacrypt_crypt($pw, $pw_db = '') if ($pw_db) { return crypt($pw, $pw_db); } - // Throws E_NOTICE as salt is not specified. - return crypt($pw); + // PHP8 - we have to specify a salt here.... + $salt = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 2); + + return crypt($pw, $salt); } /** @@ -1597,6 +1600,8 @@ function db_connection_string() if ($socket) { $dsn = "mysql:unix_socket={$socket};dbname={$database_name}"; + } elseif ($CONF['database_port'] != null) { + $dsn = "mysql:host={$CONF['database_host']};port={$CONF['database_port']};dbname={$database_name}"; } else { $dsn = "mysql:host={$CONF['database_host']};dbname={$database_name}"; } @@ -2342,7 +2347,7 @@ function gen_show_status($show_alias) } } } else { - $stat_string .= "; "; + $stat_string .= " "; } // $stat_string .= "    " . diff --git a/languages/bg.lang b/languages/bg.lang index 29957037..c73cc51a 100644 --- a/languages/bg.lang +++ b/languages/bg.lang @@ -58,9 +58,9 @@ $PALANG['pMenu_viewlog'] = 'Преглед на Log'; $PALANG['pMenu_logout'] = 'Изход'; $PALANG['pMain_welcome'] = 'Добре дошли!'; -$PALANG['pMain_overview'] = 'Преглед на alias-ите и пощенските кутии. Оттук можете да редактирате/триете.'; -$PALANG['pMain_create_alias'] = 'Създаване на нов alias за вашият домейн.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Създаване на нова пощенска кутия за вашия домейн.'; +$PALANG['pMain_overview'] = 'Преглед на alias-ите и пощенските кутии. Оттук можете да редактирате/триете.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Създаване на нов alias за вашият домейн.'; # # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Създаване на нова пощенска кутия за вашия домейн.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Изпрати е-мейл до един от новосъздадени пощенски кутии.'; $PALANG['pMain_password'] = 'Смяна на паролата за администраторския акаунт.'; $PALANG['pMain_viewlog'] = 'Преглед на log файла.'; @@ -200,6 +200,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Разглеждане на последните %s действия за '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Дата'; $PALANG['pViewlog_action'] = 'Действие'; $PALANG['pViewlog_data'] = 'Данни'; diff --git a/languages/ca.lang b/languages/ca.lang index b2fa08d9..363729f7 100644 --- a/languages/ca.lang +++ b/languages/ca.lang @@ -56,9 +56,9 @@ $PALANG['pMenu_viewlog'] = 'Veure Logs'; $PALANG['pMenu_logout'] = 'Sortir'; $PALANG['pMain_welcome'] = 'Benvingut al Postfix Admin!'; -$PALANG['pMain_overview'] = 'Llistat dels seus àlies i bústies. Pot editar-los / borrar-los des d\'aquí.'; -$PALANG['pMain_create_alias'] = 'Creació d\'un nou àlies pel seu domini.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Creació d\'una nova bústia pel seu domini.'; +$PALANG['pMain_overview'] = 'Llistat dels seus àlies i bústies. Pot editar-los / borrar-los des d\'aquí.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Creació d\'un nou àlies pel seu domini.'; # # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Creació d\'una nova bústia pel seu domini.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Enviar un e-mail a una de les bústies acabades de crear.'; $PALANG['pMain_password'] = 'Canviar la contrasenya per la seva compta d\'administració.'; $PALANG['pMain_viewlog'] = 'Veure Logs.'; @@ -198,6 +198,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Veure les últimes %s accions per '; +$PALANG['pViewlog_welcome_all'] = 'Veure les últimes %s accions '; $PALANG['pViewlog_timestamp'] = 'Data/Hora'; $PALANG['pViewlog_action'] = 'Acció'; $PALANG['pViewlog_data'] = 'Dades'; diff --git a/languages/cn.lang b/languages/cn.lang index 30abf195..d2caa790 100644 --- a/languages/cn.lang +++ b/languages/cn.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = '查看日志'; $PALANG['pMenu_logout'] = '退出'; $PALANG['pMain_welcome'] = '欢迎来到Postfix Admin!'; -$PALANG['pMain_overview'] = '显示你的邮件别名和邮箱. 你可以在这儿进行编辑/删除操作.'; -$PALANG['pMain_create_alias'] = '在您的域中新建一个别名.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = '在您的域中新建一个邮箱.'; +$PALANG['pMain_overview'] = '显示你的邮件别名和邮箱. 你可以在这儿进行编辑/删除操作.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = '在您的域中新建一个别名.'; # # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = '在您的域中新建一个邮箱.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = '发一封邮件到你新建的一个邮箱中.'; $PALANG['pMain_password'] = '修改你的管理员密码.'; $PALANG['pMain_viewlog'] = '查看日志文件.'; @@ -199,6 +199,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = '查看最新的%s项操作日志 域名: '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = '时间'; $PALANG['pViewlog_action'] = '操作'; $PALANG['pViewlog_data'] = '内容'; diff --git a/languages/cs.lang b/languages/cs.lang index 2a763253..4f929df6 100644 --- a/languages/cs.lang +++ b/languages/cs.lang @@ -65,9 +65,9 @@ $PALANG['pMenu_viewlog'] = 'Prohlížet log'; $PALANG['pMenu_logout'] = 'Odhlásit'; $PALANG['pMain_welcome'] = 'Vítejte v Postfix Adminu!'; -$PALANG['pMain_overview'] = 'Výpis přesměrování a schránek. Můžete je zde upravovat a mazat.'; -$PALANG['pMain_create_alias'] = 'Vytvořit nové přesměrování pro vaši doménu.'; -$PALANG['pMain_create_mailbox'] = 'Vytvořit schránku v této doméně.'; +$PALANG['pMain_overview'] = 'Výpis Vašich domén. Můžete je zde upravovat a mazat.'; +$PALANG['pMain_create_alias'] = 'Vytvořit nové přesměrování e-mailu.'; +$PALANG['pMain_create_mailbox'] = 'Vytvořit novou schránku.'; $PALANG['pMain_sendmail'] = 'Poslat email do jedné z nově vytvořených schránek.'; $PALANG['pMain_password'] = 'Změnit heslo administrátorského účtu.'; $PALANG['pMain_viewlog'] = 'Prohlížet záznamy změn v doméně.'; @@ -134,7 +134,7 @@ $PALANG['alias_updated'] = 'Přesměrování %s bylo upraveno!'; $PALANG['pCreate_alias_catchall_text'] = 'Pro vytvoření doménového koše použijte * jako alias. Pro přesměrování doména -> doména použijte *@domain.tld jako cíl.'; $PALANG['mailbox_alias_cant_be_deleted'] = 'Toto přesměrování je svázáno s emailem a nemůže být proto vymazáno!'; $PALANG['protected_alias_cant_be_deleted'] = 'Tento alias %s je chráněný a může být odstraněn pouze superadministrátorem'; -$PALANG['alias_points_to_itself'] = 'Alias may not point to itself'; # XXX +$PALANG['alias_points_to_itself'] = 'Alias nemůže směřovat sám na sebe'; $PALANG['pEdit_alias_welcome'] = 'Upravit nastavení přesměrování.'; $PALANG['pEdit_alias_help'] = 'Je možné zadat více cílových adres, jeden záznam na řádek.'; @@ -148,15 +148,15 @@ $PALANG['pEdit_alias_forward_only'] = 'Přesměrovat pouze na dané adresy.'; $PALANG['pEdit_alias_result_error'] = 'Nepodařilo se upravit přesměrování! (%s)'; $PALANG['pCreate_mailbox_welcome'] = 'Vytvořit novou lokální schránku v doméně.'; -$PALANG['pCreate_mailbox_local_part_error'] = 'Should be the bit before the @ sign.'; # XXX +$PALANG['pCreate_mailbox_local_part_error'] = 'Toto je ta část adresy před zavináčem (@).'; $PALANG['pCreate_mailbox_username_text_error1'] = 'Adresa není platná!'; $PALANG['pCreate_mailbox_username_text_error3'] = 'Dosáhli jste limitu, nemů¸ete vytvářet další schránky!'; $PALANG['pCreate_mailbox_password_text'] = 'Heslo pro POP3/IMAP/SMTP'; $PALANG['pCreate_mailbox_name_text'] = 'Celé jméno'; -$PALANG['pCreate_mailbox_phone'] = 'Mobile phone'; # XXX -$PALANG['pCreate_mailbox_phone_desc'] = "Used to send a SMS if the password is forgotten"; # XXX -$PALANG['pCreate_mailbox_email'] = 'Other e-mail'; # XXX -$PALANG['pCreate_mailbox_email_desc'] = "Used if the password is forgotten"; # XXX +$PALANG['pCreate_mailbox_phone'] = 'Mobilní telefon'; +$PALANG['pCreate_mailbox_phone_desc'] = "Použito k zaslání SMS v případě zapomenutí hesla"; +$PALANG['pCreate_mailbox_email'] = 'Jiný e-mail'; +$PALANG['pCreate_mailbox_email_desc'] = "Použito pro obnovu hesla v případě ztráty hesla"; $PALANG['pCreate_mailbox_mail'] = 'Odeslat uvítací email'; $PALANG['pCreate_mailbox_result_error'] = 'Vytvoření schránky %s selhalo!'; $PALANG['pCreate_mailbox_result_success'] = 'Schránka %s byla přidána do tabulky schránek!'; @@ -184,13 +184,13 @@ $PALANG['pPassword_password_text_error'] = 'Zadaná hesla jsou rozdílná nebo p $PALANG['change_password'] = 'Změna hesla'; $PALANG['pPassword_result_error'] = 'Nepodařilo se změnit heslo! (%s)'; $PALANG['pPassword_result_success'] = 'Heslo bylo změněno! (%s)'; -$PALANG['pPassword_recovery_title'] = 'Follow the instructions to reset your password.'; # XXX -$PALANG['pPassword_recovery_button'] = 'Send me the code'; # XXX -$PALANG['pPassword_recovery_email_body'] = "Hello,\n\nUse the following link to change your email password :\n%s\n\nRegards,\n\n" . $CONF['admin_name']; # XXX -$PALANG['pPassword_recovery_sms_body'] = "Hello,\nThe code to change your password is: %s\n" . $CONF['admin_name']; # XXX -$PALANG['pPassword_recovery_processed'] = "We processed your request. If you entered a valid username, you'll receive an email/SMS with a password code."; # XXX -$PALANG['pPassword_password_code'] = 'Code sent by email/SMS'; # XXX -$PALANG['pPassword_code_text_error'] = 'Invalid code'; # XXX +$PALANG['pPassword_recovery_title'] = 'Pro obnovu hesla k Vaší e-mailové schránce postupujte podle instrukcí.'; +$PALANG['pPassword_recovery_button'] = 'Zaslat kód pro obnovu hesla'; +$PALANG['pPassword_recovery_email_body'] = "Dobrý den,\n\npro obnovu hesla k Vaší e-mailové schránce použijte tento odkaz :\n%s\n\nS pozdravem\n\n" . $CONF['admin_name']; +$PALANG['pPassword_recovery_sms_body'] = "Kod pro obnovu hesla: %s\n" . $CONF['admin_name']; +$PALANG['pPassword_recovery_processed'] = "Váš požadavek byl přijat. Pokud bylo zadáno platné uživatelské jméno, bude Vám zaslán e-mail/SMS s kódem pro obnovu hesla."; +$PALANG['pPassword_password_code'] = 'Kód byl zaslán na záložní e-mailovou adresu/SMS'; +$PALANG['pPassword_code_text_error'] = 'Neplatný kód'; $PALANG['pEdit_vacation_set'] = 'Změnit / nastavit zprávu o nepřítomnosti'; $PALANG['pEdit_vacation_remove'] = 'Odstranit zprávu o nepřítomnosti'; @@ -209,6 +209,7 @@ $PALANG['reply_once_per_day'] = 'Odpovědět jednou za den'; $PALANG['reply_once_per_week'] = 'Odpovědět jednou za týden'; $PALANG['pViewlog_welcome'] = 'Prohlížet %s posledních akcí pro '; +$PALANG['pViewlog_welcome_all'] = 'Prohlížet %s posledních akcí '; $PALANG['pViewlog_timestamp'] = 'Časová značka'; $PALANG['pViewlog_action'] = 'Akce'; $PALANG['pViewlog_data'] = 'Poznámka'; @@ -279,12 +280,12 @@ $PALANG['domain_updated'] = 'Doména %s byla aktualizována.'; $PALANG['pAdminDelete_admin_error'] = 'Nepodařilo se odstranit admin uživatele!'; $PALANG['domain_postdel_failed'] = 'Spuštění skriptu po smazání domény selhalo, zkontrolujte log soubor!'; -$PALANG['domain_postedit_failed'] = 'The domain postedit script failed, check the error log for details!'; # XXX +$PALANG['domain_postedit_failed'] = 'Spuštění skriptu po úpravě domény selhalo, zkontrolujte log soubor!'; $PALANG['domain_postcreate_failed'] = 'Spuštění skriptu po vytvoření domény selhalo, zkontrolujte log soubor!'; $PALANG['mailbox_postdel_failed'] = 'Spuštění skriptu po smazání schránky selhalo, zkontrolujte log soubor!'; $PALANG['mailbox_postedit_failed'] = 'Spuštení skriptu po úpravě schránky selhalo, zkontrolujte log soubor!'; $PALANG['mailbox_postcreate_failed'] = 'Spuštení skriptu po vytvoření schránky selhalo, zkontrolujte log soubor!'; -$PALANG['mailbox_postpassword_failed'] = 'The mailbox postpassword script failed, check the error log for details!'; # XXX +$PALANG['mailbox_postpassword_failed'] = 'Spuštení skriptu po úpravě hesla schránky selhalo, zkontrolujte log soubor!'; $PALANG['pAdminDelete_alias_domain_error'] = 'Nepodařilo se odstranit přesměrování domény!'; $PALANG['domain_conflict_vacation_domain'] = 'Doménu využitou pro zprávy o nepřítomnosti nelze použít jako mailovou doménu!'; @@ -318,7 +319,7 @@ $PALANG['pAdminEdit_admin_result_success'] = 'Administrátor %s byl upraven!'; $PALANG['pUsersLogin_welcome'] = 'Zde se přihlašují uživatelé pro změnu hesla, přesměrování nebo automatické odpovědi.'; $PALANG['pUsersLogin_username_incorrect'] = 'Nesprávné uživatelské jmeno. Přihlašujte se svojí emailovou adresou!'; $PALANG['pUsersLogin_password_incorrect'] = 'Nesprávné heslo!'; -$PALANG['pUsersLogin_password_recover'] = 'I forgot my password'; # XXX +$PALANG['pUsersLogin_password_recover'] = 'Obnovit zapomenuté heslo'; $PALANG['pUsersMenu_vacation'] = 'Automatická odpověď'; $PALANG['pUsersMenu_edit_alias'] = 'Změna přesměrování'; @@ -355,13 +356,13 @@ $PALANG['pBroadcast_error_empty'] = 'Pole Od, Předmět a Zpráva by neměly bý $PALANG['broadcast_mailboxes_only'] = 'Pouze poslat do schránek'; $PALANG['broadcast_to_domains'] = 'Poslat na domény:'; $PALANG['pStatus_undeliverable'] = 'možná NEDORUČITELNÉ '; -$PALANG['pStatus_disabled'] = 'Account disabled '; # XXX -$PALANG['pStatus_expired'] = 'Password expired '; # XXX -$PALANG['pStatus_vacation'] = 'Vacation enabled '; # XXX +$PALANG['pStatus_disabled'] = 'Účet pozastaven '; +$PALANG['pStatus_expired'] = 'Heslo expirováno '; +$PALANG['pStatus_vacation'] = 'Aktivní mód dovolené '; $PALANG['pStatus_custom'] = 'Doručeno do '; $PALANG['pStatus_popimap'] = 'POP/IMAP '; $PALANG['password_too_short'] = "Heslo je příliš krátké - je vyžadováno minimálně %s znaků"; -$PALANG['password_no_characters'] = "Heslo musí obsahovat alespoň %s znak(-y)."; # XXX text changed to "Your password must contain at least %s letters (A-Z, a-z)." +$PALANG['password_no_characters'] = "Heslo musí obsahovat alespoň %s písmen/a (A-Z, a-z)."; $PALANG['password_no_digits'] = "Heslo musí obsahovat alespoň %s číslici(-ce)."; $PALANG['pInvalidDomainRegex'] = "Neplatné doménové jméno %s, nevyhovělo regulárnímu výrazu"; $PALANG['pInvalidDomainDNS'] = "Neplatná doména %s, a/nebo nezjištěn DNS záznam."; @@ -380,7 +381,7 @@ $PALANG['pFetchmail_password_missing'] = 'Prosím zadejte heslo ke vzdálené sc $PALANG['pFetchmail_field_id'] = 'ID'; $PALANG['pFetchmail_field_mailbox'] = 'Schránka'; $PALANG['pFetchmail_field_src_server'] = 'Server'; -$PALANG['pFetchmail_field_src_port'] = 'Port'; # XXX +$PALANG['pFetchmail_field_src_port'] = 'Port'; $PALANG['pFetchmail_field_src_auth'] = 'Typ autentizace'; $PALANG['pFetchmail_field_src_user'] = 'Uživatel'; $PALANG['pFetchmail_field_src_password'] = $PALANG['password']; # needed until fetchmail is migrated into FetchmailHandler @@ -400,7 +401,7 @@ $PALANG['pFetchmail_field_returned_text'] = 'Výstupní text'; $PALANG['pFetchmail_desc_id'] = 'ID záznamu'; $PALANG['pFetchmail_desc_mailbox'] = 'Místní schránka'; $PALANG['pFetchmail_desc_src_server'] = 'Vzdálený server'; -$PALANG['pFetchmail_desc_src_port'] = 'Remote port number, if a non-standard remote port is needed. (0: use default)'; # XXX +$PALANG['pFetchmail_desc_src_port'] = 'Číslo vzdáleného portu, pokud je potřeba zadat nestandardní (0: použij výchozí)'; $PALANG['pFetchmail_desc_src_auth'] = 'Většinou \'password\''; # Translators: Please do NOT translate 'password' here $PALANG['pFetchmail_desc_src_user'] = 'Vzdálený uživatel'; $PALANG['pFetchmail_desc_src_password'] = 'Heslo vzdáleného uživatele'; @@ -416,8 +417,8 @@ $PALANG['pFetchmail_desc_date'] = 'Datum posledního stažení pošt $PALANG['pFetchmail_desc_returned_text'] = 'Výstupní textový záznam posledního stahování pošty'; $PALANG['dateformat_pgsql'] = 'dd-mm-YYYY'; # translators: rearrange to your local date format, but make sure it's a valid PostgreSQL date format $PALANG['dateformat_mysql'] = '%d.%m.%Y'; # translators: rearrange to your local date format, but make sure it's a valid MySQL date format -$PALANG['password_expiration'] = 'Pass expires'; # XXX -$PALANG['password_expiration_desc'] = 'Date when password will expire'; # XXX +$PALANG['password_expiration'] = 'Heslo expiruje'; +$PALANG['password_expiration_desc'] = 'Datum expirace hesla'; $PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh /* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */ diff --git a/languages/da.lang b/languages/da.lang index 40776f27..ef498b6e 100644 --- a/languages/da.lang +++ b/languages/da.lang @@ -61,9 +61,9 @@ $PALANG['pMenu_viewlog'] = 'Vis log'; $PALANG['pMenu_logout'] = 'Log ud'; $PALANG['pMain_welcome'] = 'Velkommen til PostfixAdmin!'; -$PALANG['pMain_overview'] = 'Vis alle aliases og postbokse. Du kan redigere/slette dem herfra.'; -$PALANG['pMain_create_alias'] = 'Tilføj et nyt alias til et domæne.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Tilføj en ny postboks til et domæne.'; +$PALANG['pMain_overview'] = 'Vis alle aliases og postbokse. Du kan redigere/slette dem herfra.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Tilføj et nyt alias til et domæne.'; # # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Tilføj en ny postboks til et domæne.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Send en email til en eksisterende postboks.'; $PALANG['pMain_password'] = 'Ændre adgangskoden til din administratorkonto.'; $PALANG['pMain_viewlog'] = 'Vis logfiler.'; @@ -206,6 +206,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Vis de sidste %s poster for '; +$PALANG['pViewlog_welcome_all'] = 'Vis de sidste %s poster '; $PALANG['pViewlog_timestamp'] = 'Tidsstempel'; $PALANG['pViewlog_action'] = 'Handling'; $PALANG['pViewlog_data'] = 'Data'; diff --git a/languages/de.lang b/languages/de.lang index bb62ce34..7fcf52de 100644 --- a/languages/de.lang +++ b/languages/de.lang @@ -59,9 +59,9 @@ $PALANG['pMenu_viewlog'] = 'Log ansehen'; $PALANG['pMenu_logout'] = 'Logout'; $PALANG['pMain_welcome'] = 'Willkommen zu Postfix Admin!'; -$PALANG['pMain_overview'] = 'Listet Ihre Aliase und Mailboxen auf. Sie können sie hier bearbeiten und löschen.'; -$PALANG['pMain_create_alias'] = 'Neuen Alias für Ihre Domain anlegen'; -$PALANG['pMain_create_mailbox'] = 'Legt eine neue Mailbox für Ihre Domain an.'; +$PALANG['pMain_overview'] = 'Listet Ihre Domains auf. Sie können sie hier bearbeiten und löschen.'; +$PALANG['pMain_create_alias'] = 'Neue Weiterleitung für Ihre Domain anlegen'; +$PALANG['pMain_create_mailbox'] = 'Neue Mailbox für Ihre Domain anlegen.'; $PALANG['pMain_sendmail'] = 'Versenden Sie eine Email.'; $PALANG['pMain_password'] = 'Ändern Sie Ihr Admin-Passwort.'; $PALANG['pMain_viewlog'] = 'Lassen Sie sich das Log anzeigen.'; @@ -203,6 +203,7 @@ $PALANG['reply_once_per_day'] = 'Einmal pro Tag antworten'; $PALANG['reply_once_per_week'] = 'Einmal pro Woche antworten'; $PALANG['pViewlog_welcome'] = 'Zeigt die letzten %s Aktionen für '; +$PALANG['pViewlog_welcome_all'] = 'Zeigt die letzten %s Aktionen '; $PALANG['pViewlog_timestamp'] = 'Zeitpunkt'; $PALANG['pViewlog_action'] = 'Aktion'; $PALANG['pViewlog_data'] = 'Daten'; diff --git a/languages/en.lang b/languages/en.lang index 8b9c5b66..55a70201 100644 --- a/languages/en.lang +++ b/languages/en.lang @@ -49,7 +49,7 @@ $PALANG['pLogin_login_users'] = 'Users click here to login to the user section.' $PALANG['pMenu_main'] = 'Main'; $PALANG['pMenu_overview'] = 'Overview'; -$PALANG['add_alias'] = 'Add Alias'; +$PALANG['add_alias'] = 'Add Forward'; $PALANG['add_alias_domain'] = 'Add Alias Domain'; $PALANG['add_mailbox'] = 'Add Mailbox'; $PALANG['pMenu_fetchmail'] = 'Fetch Email'; @@ -59,9 +59,9 @@ $PALANG['pMenu_viewlog'] = 'View Log'; $PALANG['pMenu_logout'] = 'Logout'; $PALANG['pMain_welcome'] = 'Welcome to Postfix Admin!'; -$PALANG['pMain_overview'] = 'List your aliases and mailboxes. You can edit / delete them from here.'; -$PALANG['pMain_create_alias'] = 'Create a new alias for your domain.'; -$PALANG['pMain_create_mailbox'] = 'Create a new mailbox for your domain.'; +$PALANG['pMain_overview'] = 'List your domains. You can edit / delete them from here.'; +$PALANG['pMain_create_alias'] = 'Create a new email forward.'; +$PALANG['pMain_create_mailbox'] = 'Create a new mailbox.'; $PALANG['pMain_sendmail'] = 'Send an email to one of your newly created mailboxes.'; $PALANG['pMain_password'] = 'Change the password for your admin account.'; $PALANG['pMain_viewlog'] = 'View the log files.'; @@ -74,7 +74,7 @@ $PALANG['pOverview_up_arrow'] = 'Go Top'; $PALANG['pOverview_right_arrow'] = 'Next Page'; $PALANG['pOverview_left_arrow'] = 'Previous Page'; $PALANG['pOverview_alias_domain_title'] = ':: Domain Aliases'; -$PALANG['pOverview_alias_title'] = ':: Aliases'; +$PALANG['pOverview_alias_title'] = ':: Forwards '; $PALANG['pOverview_mailbox_title'] = ':: Mailboxes'; $PALANG['go'] = 'Go'; $PALANG['pOverview_welcome'] = 'Overview for '; @@ -129,11 +129,11 @@ $PALANG['alias_updated'] = 'The alias %s has been updated!'; $PALANG['pCreate_alias_catchall_text'] = 'To create a catch-all use an "*" as alias.'; # XXX don't propagate usage of *@target-domain.com for domain-aliasing any longer $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox and can\'t be deleted!'; $PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and can only be deleted by a superadmin'; -$PALANG['alias_points_to_itself'] = 'Alias may not point to itself'; +$PALANG['alias_points_to_itself'] = 'Forward may not point to itself'; $PALANG['pEdit_alias_welcome'] = 'Edit forwarding settings'; $PALANG['pEdit_alias_help'] = 'Accepts multiple targets, one entry per line.'; -$PALANG['alias'] = 'Alias'; +$PALANG['alias'] = 'Forward'; $PALANG['to'] = 'To'; $PALANG['pEdit_alias_goto_text_error1'] = 'You didn\'t enter anything at To'; $PALANG['pEdit_alias_goto_text_error2'] = 'The email address that you have entered is not valid: '; @@ -205,6 +205,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; $PALANG['reply_once_per_week'] = 'Reply once a week'; $PALANG['pViewlog_welcome'] = 'View the last %s actions for '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; $PALANG['pViewlog_timestamp'] = 'Timestamp'; $PALANG['pViewlog_action'] = 'Action'; $PALANG['pViewlog_data'] = 'Data'; @@ -257,7 +258,7 @@ $PALANG['pAdminMenu_create_domain'] = 'New Domain'; $PALANG['pAdminList_admin_count'] = 'Domains'; $PALANG['description'] = 'Description'; -$PALANG['aliases'] = 'Aliases'; +$PALANG['aliases'] = 'Forwards'; $PALANG['pAdminList_domain_quota'] = 'Domain quota (MB)'; $PALANG['pAdminList_domain_backupmx'] = 'Backup MX'; $PALANG['last_modified'] = 'Last modified'; diff --git a/languages/es.lang b/languages/es.lang index f7adcb12..211009b2 100644 --- a/languages/es.lang +++ b/languages/es.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Ver Logs'; $PALANG['pMenu_logout'] = 'Salir'; $PALANG['pMain_welcome'] = '¡Bienvenido a Postfix Admin!'; -$PALANG['pMain_overview'] = 'Listado de sus alias y buzones. Puede editarlos / borrarlos desde aquí.'; -$PALANG['pMain_create_alias'] = 'Creación de un nuevo alias para su dominio.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Creación de un nuevo buzón para su dominio.'; +$PALANG['pMain_overview'] = 'Listado de sus alias y buzones. Puede editarlos / borrarlos desde aquí.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Creación de un nuevo alias para su dominio.'; # # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Creación de un nuevo buzón para su dominio.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Enviar un e­mail a uno de los buzones recientemente creados.'; $PALANG['pMain_password'] = 'Cambiar la contraseña para su cuenta de administración.'; $PALANG['pMain_viewlog'] = 'Ver Logs.'; @@ -200,6 +200,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Ver las últimas %s acciones para '; +$PALANG['pViewlog_welcome_all'] = 'Ver las últimas %s acciones '; $PALANG['pViewlog_timestamp'] = 'Fecha/Hora'; $PALANG['pViewlog_action'] = 'Acción'; $PALANG['pViewlog_data'] = 'Datos'; diff --git a/languages/et.lang b/languages/et.lang index aaedb2d1..5cbd4829 100644 --- a/languages/et.lang +++ b/languages/et.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Vaata logi'; $PALANG['pMenu_logout'] = 'Logi välja'; $PALANG['pMain_welcome'] = 'Tere tulemast domeeni(de) administreerimise liidesesse!'; -$PALANG['pMain_overview'] = 'Loetelu aliastest ja postkastidest. Siin saab neid muuta ja kustutada.'; -$PALANG['pMain_create_alias'] = 'Loo uus alias domeenile.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Loo uus postkast domeenile.'; +$PALANG['pMain_overview'] = 'Loetelu aliastest ja postkastidest. Siin saab neid muuta ja kustutada.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Loo uus alias domeenile.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Loo uus postkast domeenile.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Saada kiri äsjaloodud postkasti.'; $PALANG['pMain_password'] = 'Muuda haldamise konto parool.'; $PALANG['pMain_viewlog'] = 'Vaata logi faili.'; @@ -199,6 +199,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Vaata %s viimast muudatust domeeniga '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Ajatempel'; $PALANG['pViewlog_action'] = 'Toiming'; $PALANG['pViewlog_data'] = 'Andmed'; diff --git a/languages/eu.lang b/languages/eu.lang index 588ce4c0..dd40eff7 100644 --- a/languages/eu.lang +++ b/languages/eu.lang @@ -56,9 +56,9 @@ $PALANG['pMenu_viewlog'] = 'Logak ikusi'; $PALANG['pMenu_logout'] = 'Irten'; $PALANG['pMain_welcome'] = 'Ongietorri Postfix Adminera!'; -$PALANG['pMain_overview'] = 'Alias eta postontzien zerrenda. Hemendik aldatu / ezabatu ditzakezu.'; -$PALANG['pMain_create_alias'] = 'Zure domeinuarentzako alias berri baten sorkuntza.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Zure domeinuarentzako postontzi berri baten sorkuntza.'; +$PALANG['pMain_overview'] = 'Alias eta postontzien zerrenda. Hemendik aldatu / ezabatu ditzakezu.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Zure domeinuarentzako alias berri baten sorkuntza.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Zure domeinuarentzako postontzi berri baten sorkuntza.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Duela gutxi sorturiko postontziren batera e-mail bat bidali.'; $PALANG['pMain_password'] = 'Kudeatzaile konturako pasahitza aldatu.'; $PALANG['pMain_viewlog'] = 'Logak ikusi.'; @@ -197,6 +197,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Honen azken %s ekintzak ikusi '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Data/ordua'; $PALANG['pViewlog_action'] = 'Ekintza'; $PALANG['pViewlog_data'] = 'Datuak'; diff --git a/languages/fi.lang b/languages/fi.lang index 782dd104..7714686f 100644 --- a/languages/fi.lang +++ b/languages/fi.lang @@ -58,9 +58,9 @@ $PALANG['pMenu_viewlog'] = 'Näytä loki'; $PALANG['pMenu_logout'] = 'Kirjaudu ulos'; $PALANG['pMain_welcome'] = 'Tervetuloa sähköpostin hallintaan.'; -$PALANG['pMain_overview'] = 'Listaa aliakset ja postilaatikot. Voit muokata ja poistaa niitä tästä.'; -$PALANG['pMain_create_alias'] = 'Luo uusi alias domainiin.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Luo uusi postilaatikko domainiin.'; +$PALANG['pMain_overview'] = 'Listaa aliakset ja postilaatikot. Voit muokata ja poistaa niitä tästä.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Luo uusi alias domainiin.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Luo uusi postilaatikko domainiin.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Lähetä sähköpostia juuri luotuun postilaatikkoon.'; $PALANG['pMain_password'] = 'Vaihda hallintatunnuksen salasanaa.'; $PALANG['pMain_viewlog'] = 'Näytä lokitiedostot.'; @@ -199,6 +199,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Näytä viimeiset kymmenen tapahtumaa domainille '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Aikaleima'; $PALANG['pViewlog_action'] = 'Tapahtuma'; $PALANG['pViewlog_data'] = 'Tiedot'; diff --git a/languages/fo.lang b/languages/fo.lang index 8eff1ef5..b0c8a95f 100644 --- a/languages/fo.lang +++ b/languages/fo.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Vís Logg'; $PALANG['pMenu_logout'] = 'Logga út'; $PALANG['pMain_welcome'] = 'Vælkomin til Postfix Admin!'; -$PALANG['pMain_overview'] = 'Vís tíni dulnevni og postkassar. Tú kanst broyta / strika tey her.'; -$PALANG['pMain_create_alias'] = 'Stovna eitt nýtt dulnevni á tínum navnaøki.'; -$PALANG['pMain_create_mailbox'] = 'Stovna ein nýggjan postkassa á tínum navnaøki.'; +$PALANG['pMain_overview'] = 'Vís tíni dulnevni og postkassar. Tú kanst broyta / strika tey her.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Stovna eitt nýtt dulnevni á tínum navnaøki.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Stovna ein nýggjan postkassa á tínum navnaøki.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Send ein e-post til ein av tínum nýstovnaðu postkassum.'; $PALANG['pMain_password'] = 'Broyt loyniorðið á tíni umsitara konto.'; $PALANG['pMain_viewlog'] = 'Vís logg fílurnar.'; @@ -199,6 +199,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Vís seinastu %s hendingarnar fyri '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Tíðarstempul'; $PALANG['pViewlog_action'] = 'Hending'; $PALANG['pViewlog_data'] = 'Dáta'; diff --git a/languages/fr.lang b/languages/fr.lang index 337ecf01..89d7cf71 100644 --- a/languages/fr.lang +++ b/languages/fr.lang @@ -61,9 +61,9 @@ $PALANG['pMenu_viewlog'] = 'Journal'; $PALANG['pMenu_logout'] = 'Déconnexion'; $PALANG['pMain_welcome'] = 'Bienvenue sur Postfix Admin !'; -$PALANG['pMain_overview'] = 'Visualiser vos alias et comptes courriels. (Modifier/Effacer)'; -$PALANG['pMain_create_alias'] = 'Ajouter un nouvel alias à votre domaine.'; -$PALANG['pMain_create_mailbox'] = 'Ajouter un nouveau compte courriel à votre domaine.'; +$PALANG['pMain_overview'] = 'Visualiser vos alias et comptes courriels. (Modifier/Effacer)'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Ajouter un nouvel alias à votre domaine.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Ajouter un nouveau compte courriel à votre domaine.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Envoyer un courriel à un de vos nouveaux comptes courriels.'; $PALANG['pMain_password'] = 'Changer votre mot de passe pour le compte administrateur.'; $PALANG['pMain_viewlog'] = 'Visualiser le journal des événements.'; @@ -203,6 +203,7 @@ $PALANG['reply_once_per_day'] = 'Répondre une fois par jour'; $PALANG['reply_once_per_week'] = 'Répondre une fois par semaine'; $PALANG['pViewlog_welcome'] = 'Visualiser les %s dernières actions pour '; +$PALANG['pViewlog_welcome_all'] = 'Visualiser les %s dernières actions '; $PALANG['pViewlog_timestamp'] = 'Date/Heure'; $PALANG['pViewlog_action'] = 'Action'; $PALANG['pViewlog_data'] = 'Information'; diff --git a/languages/gl.lang b/languages/gl.lang index 2c780286..789322a7 100644 --- a/languages/gl.lang +++ b/languages/gl.lang @@ -55,9 +55,9 @@ $PALANG['pMenu_viewlog'] = 'Ver Logs'; $PALANG['pMenu_logout'] = 'Sair'; $PALANG['pMain_welcome'] = 'Benvido/a a Postfix Admin!'; -$PALANG['pMain_overview'] = 'Listado dos alias e buzóns. Pode editalos / borralos desde aquí.'; -$PALANG['pMain_create_alias'] = 'Creación dun novo alias para o seu dominio.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Creación dun nuevo buzón para o seu dominio.'; +$PALANG['pMain_overview'] = 'Listado dos alias e buzóns. Pode editalos / borralos desde aquí.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Creación dun novo alias para o seu dominio.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Creación dun nuevo buzón para o seu dominio.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Enviar un e­mail a un dos buzóns recentemente creados.'; $PALANG['pMain_password'] = 'Cambiar o contrasinal para a súa conta de administración.'; $PALANG['pMain_viewlog'] = 'Ver Logs.'; @@ -198,6 +198,7 @@ $PALANG['reply_once_per_day'] = 'Respostar unha vez ao día'; # XXX $PALANG['reply_once_per_week'] = 'Respostar unha vez á semana'; # XXX $PALANG['pViewlog_welcome'] = 'Ver as últimas %s accións para '; +$PALANG['pViewlog_welcome_all'] = 'Ver as últimas %s accións '; $PALANG['pViewlog_timestamp'] = 'Data/Hora'; $PALANG['pViewlog_action'] = 'Acción'; $PALANG['pViewlog_data'] = 'Datos'; diff --git a/languages/hr.lang b/languages/hr.lang index 35172593..5d34921c 100644 --- a/languages/hr.lang +++ b/languages/hr.lang @@ -56,9 +56,9 @@ $PALANG['pMenu_viewlog'] = 'Pregledaj zapis'; $PALANG['pMenu_logout'] = 'Odjava'; $PALANG['pMain_welcome'] = 'Dobrodošli u Postfix Admin!'; -$PALANG['pMain_overview'] = 'Izlistaj aliase i poštanske ormariće. Tu ih možete uređivati/brisati.'; -$PALANG['pMain_create_alias'] = 'Stvori novi alias za domenu.'; -$PALANG['pMain_create_mailbox'] = 'Stvori novi poštanski ormarić za domenu.'; +$PALANG['pMain_overview'] = 'Izlistaj aliase i poštanske ormariće. Tu ih možete uređivati/brisati.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Stvori novi alias za domenu.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Stvori novi poštanski ormarić za domenu.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Pošali e-poštu u jedan od novostvorenih poštanskih ormarića.'; $PALANG['pMain_password'] = 'Promijeni Administratorsku lozinku.'; $PALANG['pMain_viewlog'] = 'Pogledaj datoteke sa zapisima.'; @@ -198,6 +198,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Pogledaj zadnjih %s akcija za '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Vrijeme'; $PALANG['pViewlog_action'] = 'Akcija'; $PALANG['pViewlog_data'] = 'Podaci'; diff --git a/languages/hu.lang b/languages/hu.lang index a6e5ca56..ae6e9600 100644 --- a/languages/hu.lang +++ b/languages/hu.lang @@ -58,9 +58,9 @@ $PALANG['pMenu_viewlog'] = 'Napló megtekintése'; $PALANG['pMenu_logout'] = 'Kilépés'; $PALANG['pMain_welcome'] = 'Üdvözöllek a Postfix Adminisztrációs rendszerben!'; -$PALANG['pMain_overview'] = 'Listázd az alias-okat és a postafiókokat. Innen tudod õket törölni / módosítani.'; -$PALANG['pMain_create_alias'] = 'Új alias készítése az adott domainhez.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Új felhasználó felvétele az adott domainhez.'; +$PALANG['pMain_overview'] = 'Listázd az alias-okat és a postafiókokat. Innen tudod õket törölni / módosítani.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Új alias készítése az adott domainhez.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Új felhasználó felvétele az adott domainhez.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Küldjön a rendszer emailt minden egyes új felhasználónak.'; $PALANG['pMain_password'] = 'Admin jelszó megváltoztatása.'; $PALANG['pMain_viewlog'] = 'Naplófájlok megtekintése.'; @@ -203,6 +203,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Az utolsó %s esemény megtekintése: '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Idõbélyeg'; $PALANG['pViewlog_action'] = 'Akció'; $PALANG['pViewlog_data'] = 'Adat'; diff --git a/languages/is.lang b/languages/is.lang index f163943f..a941031c 100644 --- a/languages/is.lang +++ b/languages/is.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Skoða Log'; $PALANG['pMenu_logout'] = 'Aftengjast'; $PALANG['pMain_welcome'] = 'Velkomin í Postfix Kerfistólin!'; -$PALANG['pMain_overview'] = 'Lista út aliasa og póstföng. Þú getur breytt / eytt og lagað hérna.'; -$PALANG['pMain_create_alias'] = 'Stofna nýjan alias fyrir lénið þitt.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Stofna nýtt póstfang fyrir lénið þitt.'; +$PALANG['pMain_overview'] = 'Lista út aliasa og póstföng. Þú getur breytt / eytt og lagað hérna.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Stofna nýjan alias fyrir lénið þitt.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Stofna nýtt póstfang fyrir lénið þitt.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Senda tölvupóst til eins af nýju pósthólfin.'; $PALANG['pMain_password'] = 'Breyta lykilorðinu fyrir kerfisstjóra aðganginn.'; $PALANG['pMain_viewlog'] = 'Skoða log skrárnar.'; @@ -199,6 +199,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Skoða síðustu %s aðgerðir fyrir '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Tími'; $PALANG['pViewlog_action'] = 'aðgerð'; $PALANG['pViewlog_data'] = 'gögn'; diff --git a/languages/it.lang b/languages/it.lang index 220268e9..26b73da9 100644 --- a/languages/it.lang +++ b/languages/it.lang @@ -58,9 +58,9 @@ $PALANG['pMenu_viewlog'] = 'Vedi Log'; $PALANG['pMenu_logout'] = 'Esci'; $PALANG['pMain_welcome'] = 'Benvenuti a Postfix Admin!'; -$PALANG['pMain_overview'] = 'Elenco dei tuoi alias e delle caselle di posta. Puoi modificarli / aggiungerli da qui.'; -$PALANG['pMain_create_alias'] = 'Crea nuovi alias per il tuo dominio.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Crea una nuova casella di posta per il tuo dominio.'; +$PALANG['pMain_overview'] = 'Elenco dei tuoi alias e delle caselle di posta. Puoi modificarli / aggiungerli da qui.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Crea nuovi alias per il tuo dominio.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Crea una nuova casella di posta per il tuo dominio.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Spedisci una email ad una delle nuove casella di posta che hai creato.'; $PALANG['pMain_password'] = 'Cambia la password per il tuo account di amministratore.'; $PALANG['pMain_viewlog'] = 'Guarda i files di log.'; @@ -200,6 +200,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Elenca gli ultimi %s eventi per '; +$PALANG['pViewlog_welcome_all'] = 'Elenca gli ultimi %s eventi '; $PALANG['pViewlog_timestamp'] = 'Orario'; $PALANG['pViewlog_action'] = 'Azione'; $PALANG['pViewlog_data'] = 'Dati'; diff --git a/languages/ja.lang b/languages/ja.lang index 818312db..43408247 100644 --- a/languages/ja.lang +++ b/languages/ja.lang @@ -59,9 +59,9 @@ $PALANG['pMenu_viewlog'] = 'ログ表示'; $PALANG['pMenu_logout'] = 'ログアウト'; $PALANG['pMain_welcome'] = 'Postfix Admin へようこそ!'; -$PALANG['pMain_overview'] = '転送アドレスとメールアドレスの一覧を表示します。ここから編集と削除ができます。'; -$PALANG['pMain_create_alias'] = '新しい転送アドレスを作成します。'; -$PALANG['pMain_create_mailbox'] = '新しいメールアドレスを作成します。'; +$PALANG['pMain_overview'] = '転送アドレスとメールアドレスの一覧を表示します。ここから編集と削除ができます。'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = '新しい転送アドレスを作成します。'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = '新しいメールアドレスを作成します。'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = '新しいメールアドレスにメールを送信します。'; $PALANG['pMain_password'] = 'パスワードを変更します。'; $PALANG['pMain_viewlog'] = 'ログファイルを表示します。'; @@ -203,6 +203,7 @@ $PALANG['reply_once_per_day'] = '毎日返信'; $PALANG['reply_once_per_week'] = '週に一度返信'; $PALANG['pViewlog_welcome'] = '過去 %s 個のアクション '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'タイムスタンプ'; $PALANG['pViewlog_action'] = 'アクション'; $PALANG['pViewlog_data'] = 'データ'; diff --git a/languages/lt.lang b/languages/lt.lang index a19a2318..a14983e3 100644 --- a/languages/lt.lang +++ b/languages/lt.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Žurnalas'; $PALANG['pMenu_logout'] = 'Atsijungti'; $PALANG['pMain_welcome'] = 'Sveiki prisijungę prie pašto administratoriaus!'; -$PALANG['pMain_overview'] = 'Pežiūrėti visas pašto dėžutes ir sinonimus. Čionai atliekami pakeitimai, šalinimas.'; -$PALANG['pMain_create_alias'] = 'Naujas pašto sinonimas.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Nauja pašto dėžutė.'; +$PALANG['pMain_overview'] = 'Pežiūrėti visas pašto dėžutes ir sinonimus. Čionai atliekami pakeitimai, šalinimas.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Naujas pašto sinonimas.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Nauja pašto dėžutė.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Siųsti laišką į vieną naujai sukurtą pašto dėžutę.'; $PALANG['pMain_password'] = 'Keisti administratoriaus slaptažodį.'; $PALANG['pMain_viewlog'] = 'Peržiūrėti įvykių žurnalus.'; @@ -200,6 +200,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Peržiūrėti paskutinius %s vartotojo veiksmų '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Laikas'; $PALANG['pViewlog_action'] = 'Veiksmas'; $PALANG['pViewlog_data'] = 'Duomenys'; diff --git a/languages/mk.lang b/languages/mk.lang index 3e6e40bb..e5680a0b 100644 --- a/languages/mk.lang +++ b/languages/mk.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Преглед на записи'; $PALANG['pMenu_logout'] = 'Одјава'; $PALANG['pMain_welcome'] = 'Добредојдовте на администраторот за Postfix!'; -$PALANG['pMain_overview'] = 'Преглед на алијаси и поштенски сандачиња. Од овде може да се променат или избришат податоците.'; -$PALANG['pMain_create_alias'] = 'Креирање на нов алијас за вашиот домен.'; -$PALANG['pMain_create_mailbox'] = 'Креирање на ново поштенско сандаче.'; +$PALANG['pMain_overview'] = 'Преглед на алијаси и поштенски сандачиња. Од овде може да се променат или избришат податоците.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Креирање на нов алијас за вашиот домен.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Креирање на ново поштенско сандаче.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Праќање на порака на новокреирано сандаче.'; $PALANG['pMain_password'] = 'Промена на вашата администраторска лозинка за доменот.'; $PALANG['pMain_viewlog'] = 'Преглед на записи.'; @@ -199,6 +199,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Преглед на последните %s операции за: '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Маркер (Timestamp)'; $PALANG['pViewlog_action'] = 'Операција'; $PALANG['pViewlog_data'] = 'Датум'; diff --git a/languages/nb.lang b/languages/nb.lang index 69ae5fa0..63d96705 100644 --- a/languages/nb.lang +++ b/languages/nb.lang @@ -59,9 +59,9 @@ $PALANG['pMenu_viewlog'] = 'Vis logg'; $PALANG['pMenu_logout'] = 'Logg ut'; $PALANG['pMain_welcome'] = 'Velkommen til Postfix Admin!'; -$PALANG['pMain_overview'] = 'Viser alle alias og epostkontoer. Du kan endre dem herfra.'; -$PALANG['pMain_create_alias'] = 'Opprett et nytt alias.'; -$PALANG['pMain_create_mailbox'] = 'Opprett en ny e-postkonto.'; +$PALANG['pMain_overview'] = 'Viser alle alias og epostkontoer. Du kan endre dem herfra.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Opprett et nytt alias.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Opprett en ny e-postkonto.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Send en e-postmelding til en av dine nylig opprettede e-postkontoer.'; $PALANG['pMain_password'] = 'Forandre passordet til din administratorkonto.'; $PALANG['pMain_viewlog'] = 'Vis logg.'; @@ -200,6 +200,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Vis de %s siste handlingene for '; +$PALANG['pViewlog_welcome_all'] = 'Vis de %s siste handlingene '; $PALANG['pViewlog_timestamp'] = 'Klokkeslett'; $PALANG['pViewlog_action'] = 'Handling'; $PALANG['pViewlog_data'] = 'Data'; diff --git a/languages/nl.lang b/languages/nl.lang index 20295637..bf69d943 100644 --- a/languages/nl.lang +++ b/languages/nl.lang @@ -59,9 +59,9 @@ $PALANG['pMenu_viewlog'] = 'Laat log zien'; $PALANG['pMenu_logout'] = 'Uitloggen'; $PALANG['pMain_welcome'] = 'Welkom bij Postfix Admin!'; -$PALANG['pMain_overview'] = 'Laat uw aliassen en mailboxen zien. U kunt ze vanaf hier bewerken / verwijderen.'; -$PALANG['pMain_create_alias'] = 'Maak een nieuwe alias aan voor uw domein.'; -$PALANG['pMain_create_mailbox'] = 'Maak een nieuwe mailbox aan voor uw domein.'; +$PALANG['pMain_overview'] = 'Laat uw aliassen en mailboxen zien. U kunt ze vanaf hier bewerken / verwijderen.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Maak een nieuwe alias aan voor uw domein.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Maak een nieuwe mailbox aan voor uw domein.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Verstuur een e-mail naar een van de nieuwe mailboxen.'; $PALANG['pMain_password'] = 'Wijzig uw wachtwoord.'; $PALANG['pMain_viewlog'] = 'Laat de log files zien'; @@ -202,6 +202,7 @@ $PALANG['reply_once_per_day'] = 'Beantwoord een keer per dag'; $PALANG['reply_once_per_week'] = 'Beantwoord een keer per week'; $PALANG['pViewlog_welcome'] = 'Laat de laatste %s actie\'s zien van '; +$PALANG['pViewlog_welcome_all'] = 'Laat de laatste %s actie\'s zien '; $PALANG['pViewlog_timestamp'] = 'Tijd'; $PALANG['pViewlog_action'] = 'Actie'; $PALANG['pViewlog_data'] = 'Aanpassing'; diff --git a/languages/nn.lang b/languages/nn.lang index 9cde9561..a59649ab 100644 --- a/languages/nn.lang +++ b/languages/nn.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Vis logg'; $PALANG['pMenu_logout'] = 'Logg ut'; $PALANG['pMain_welcome'] = 'Velkommen Til Postfix Admin!'; -$PALANG['pMain_overview'] = 'Vis alle alias og epostkontoer. Her kan du endre.'; -$PALANG['pMain_create_alias'] = 'Opprett nytt alias.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Opprett ny e-postkonto.'; +$PALANG['pMain_overview'] = 'Vis alle alias og epostkontoer. Her kan du endre.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Opprett nytt alias.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Opprett ny e-postkonto.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Send e-post til en av de nyopprettede e-postkontoene.'; $PALANG['pMain_password'] = 'Skift passord til din administratorkonto.'; $PALANG['pMain_viewlog'] = 'Vis logg.'; @@ -198,6 +198,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Vis de %s siste handlingene '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Klokkeslett'; $PALANG['pViewlog_action'] = 'Handling'; $PALANG['pViewlog_data'] = 'Data'; diff --git a/languages/pl.lang b/languages/pl.lang index 167c8d8b..fdda9220 100644 --- a/languages/pl.lang +++ b/languages/pl.lang @@ -60,9 +60,9 @@ $PALANG['pMenu_viewlog'] = 'Logi'; $PALANG['pMenu_logout'] = 'Wyloguj'; $PALANG['pMain_welcome'] = 'Witamy w Postfix Adminie!'; -$PALANG['pMain_overview'] = 'Lista Twoich aliasów i kont pocztowych. Możesz je tutaj edytować / usuwać.'; -$PALANG['pMain_create_alias'] = 'Utwórz nowy alias dla Twojej domeny.'; -$PALANG['pMain_create_mailbox'] = 'Utwórz nowe konto pocztowe dla Twojej domeny.'; +$PALANG['pMain_overview'] = 'Lista Twoich aliasów i kont pocztowych. Możesz je tutaj edytować / usuwać.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Utwórz nowy alias dla Twojej domeny.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Utwórz nowe konto pocztowe dla Twojej domeny.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Wyślij wiadomość do nowo utworzonego konta pocztowego.'; $PALANG['pMain_password'] = 'Zmieć hasło swojego konta administracyjnego.'; $PALANG['pMain_viewlog'] = 'Pokaż pliki logów.'; @@ -202,6 +202,7 @@ $PALANG['reply_once_per_day'] = 'Odpowiedz raz na dzień'; $PALANG['reply_once_per_week'] = 'Odpowiedz raz na tydzień'; $PALANG['pViewlog_welcome'] = 'Pokaż %s ostatnich działań dla '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Data'; $PALANG['pViewlog_action'] = 'Działanie'; $PALANG['pViewlog_data'] = 'Dane'; diff --git a/languages/pt-br.lang b/languages/pt-br.lang index 8c8f4a4e..0386f4fd 100644 --- a/languages/pt-br.lang +++ b/languages/pt-br.lang @@ -59,9 +59,9 @@ $PALANG['pMenu_viewlog'] = 'Histórico'; $PALANG['pMenu_logout'] = 'Sair'; $PALANG['pMain_welcome'] = 'Bem-vindo ao Postfix Admin!'; -$PALANG['pMain_overview'] = 'Liste seus aliases (redirecionadores) e contas de email. Você pode editá-los / removê-los aqui.'; -$PALANG['pMain_create_alias'] = 'Crie um novo alias (redirecionador) para o seu domínio.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Crie uma nova conta de email para o seu domínio.'; +$PALANG['pMain_overview'] = 'Liste seus aliases (redirecionadores) e contas de email. Você pode editá-los / removê-los aqui.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Crie um novo alias (redirecionador) para o seu domínio.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Crie uma nova conta de email para o seu domínio.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Envie uma mensagem para uma conta recém-criada.'; $PALANG['pMain_password'] = 'Altere a senha da sua conta de administrador.'; $PALANG['pMain_viewlog'] = 'Veja o histórico de administração.'; @@ -205,6 +205,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Últimas %s ações para '; +$PALANG['pViewlog_welcome_all'] = 'Últimas %s ações '; $PALANG['pViewlog_timestamp'] = 'Data/Hora'; $PALANG['pViewlog_action'] = 'Ação'; $PALANG['pViewlog_data'] = 'Descrição'; diff --git a/languages/pt-pt.lang b/languages/pt-pt.lang index e73910b5..a87e3897 100644 --- a/languages/pt-pt.lang +++ b/languages/pt-pt.lang @@ -59,9 +59,9 @@ $PALANG['pMenu_viewlog'] = 'Histórico'; $PALANG['pMenu_logout'] = 'Sair'; $PALANG['pMain_welcome'] = 'Bem-vindo ao Postfix Admin!'; -$PALANG['pMain_overview'] = 'Liste os seus aliases (redireccionamentos) e contas de email. Pode editá-los / Removê-los aqui.'; -$PALANG['pMain_create_alias'] = 'Crie um novo alias (redireccionamento) para o seu domínio.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Crie uma nova conta de email para o seu domínio.'; +$PALANG['pMain_overview'] = 'Liste os seus aliases (redireccionamentos) e contas de email. Pode editá-los / Removê-los aqui.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Crie um novo alias (redireccionamento) para o seu domínio.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Crie uma nova conta de email para o seu domínio.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Envie uma mensagem para uma conta recém-criada.'; $PALANG['pMain_password'] = 'Altere a password da sua conta de administrador.'; $PALANG['pMain_viewlog'] = 'Veja o histórico de administração.'; @@ -205,6 +205,7 @@ $PALANG['reply_once_per_day'] = 'Reesponder uma vez por dia'; # XXX $PALANG['reply_once_per_week'] = 'Responder uma vez por semana'; # XXX $PALANG['pViewlog_welcome'] = 'Últimas %s acções para '; +$PALANG['pViewlog_welcome_all'] = 'Últimas %s acções '; $PALANG['pViewlog_timestamp'] = 'Data/Hora'; $PALANG['pViewlog_action'] = 'Acção'; $PALANG['pViewlog_data'] = 'Descrição'; diff --git a/languages/ro.lang b/languages/ro.lang index 4e529731..f720fc63 100644 --- a/languages/ro.lang +++ b/languages/ro.lang @@ -58,9 +58,9 @@ $PALANG['pMenu_viewlog'] = 'Vizualizare Log'; $PALANG['pMenu_logout'] = 'Deconectare'; $PALANG['pMain_welcome'] = 'Bine ati venit la Postfix Admin!'; -$PALANG['pMain_overview'] = 'Lista alias-uri si casute de mail. De aici le puteti edita / sterge'; -$PALANG['pMain_create_alias'] = 'Creati un alias'; -$PALANG['pMain_create_mailbox'] = 'Creati o casuta de mail'; +$PALANG['pMain_overview'] = 'Lista alias-uri si casute de mail. De aici le puteti edita / sterge'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Creati un alias'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Creati o casuta de mail'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Trimiteti un email catre o casuta nou creata.'; $PALANG['pMain_password'] = 'Schimbati parola contului de administrare.'; $PALANG['pMain_viewlog'] = 'Vizualizati log-uri.'; @@ -203,6 +203,7 @@ $PALANG['reply_once_per_day'] = 'Raspunde odata pe zi'; $PALANG['reply_once_per_week'] = 'Raspunde odata pe saptamana'; $PALANG['pViewlog_welcome'] = 'Vizualizati ultimele %s operatii pentru '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Data si ora'; $PALANG['pViewlog_action'] = 'Operatie'; $PALANG['pViewlog_data'] = 'Detalii'; diff --git a/languages/ru.lang b/languages/ru.lang index b49bd5fe..fccc21ad 100644 --- a/languages/ru.lang +++ b/languages/ru.lang @@ -61,9 +61,9 @@ $PALANG['pMenu_viewlog'] = 'Просмотреть журнал'; $PALANG['pMenu_logout'] = 'Выход'; $PALANG['pMain_welcome'] = 'Добро пожаловать в Postfix Admin!'; -$PALANG['pMain_overview'] = 'Список ваших почтовых ящиков и алиасов. Вы можете редактировать и удалять их отсюда.'; -$PALANG['pMain_create_alias'] = 'Создание нового алиаса в вашем домене.'; -$PALANG['pMain_create_mailbox'] = 'Создание нового почтового ящика в вашем домене.'; +$PALANG['pMain_overview'] = 'Список ваших почтовых ящиков и алиасов. Вы можете редактировать и удалять их отсюда.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Создание нового алиаса в вашем домене.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Создание нового почтового ящика в вашем домене.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Отправка письма на один из созданных вами почтовых ящиков.'; $PALANG['pMain_password'] = 'Смена пароля для вашей учетной записи администратора.'; $PALANG['pMain_viewlog'] = 'Просмотр журнала работы с системой.'; @@ -206,6 +206,7 @@ $PALANG['reply_once_per_day'] = 'Отвечать один раз в день'; $PALANG['reply_once_per_week'] = 'Отвечать один раз в неделю'; $PALANG['pViewlog_welcome'] = 'Просмотр %s последних действий для '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Время создания/модификации'; $PALANG['pViewlog_action'] = 'Действие'; $PALANG['pViewlog_data'] = 'Данные'; diff --git a/languages/sk.lang b/languages/sk.lang index 2967cd98..c30d2792 100644 --- a/languages/sk.lang +++ b/languages/sk.lang @@ -58,9 +58,9 @@ $PALANG['pMenu_viewlog'] = 'Prehliadať log'; $PALANG['pMenu_logout'] = 'Odhlásiť'; $PALANG['pMain_welcome'] = 'Vitajte v Postfix Admine!'; -$PALANG['pMain_overview'] = 'Výpis aliasov a schránok. Môžete ich tu upravovať a mazať.'; -$PALANG['pMain_create_alias'] = 'Vytvoriť alias v tejto doméne.'; -$PALANG['pMain_create_mailbox'] = 'Vytvoriť schránku v tejto doméne.'; +$PALANG['pMain_overview'] = 'Výpis aliasov a schránok. Môžete ich tu upravovať a mazať.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Vytvoriť alias v tejto doméne.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Vytvoriť schránku v tejto doméne.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Poslať email do jednej zo schránok.'; $PALANG['pMain_password'] = 'Zmeniť heslo administrátorského účtu.'; $PALANG['pMain_viewlog'] = 'Prehliadať logy zmien v doméne.'; @@ -200,6 +200,7 @@ $PALANG['reply_once_per_day'] = 'Odpovedať raz za deň'; $PALANG['reply_once_per_week'] = 'Odpovedať raz za týždeň'; $PALANG['pViewlog_welcome'] = 'Prehľad %s posledných akcií pre '; +$PALANG['pViewlog_welcome_all'] = 'Prehľad %s posledných akcií '; $PALANG['pViewlog_timestamp'] = 'Časová značka'; $PALANG['pViewlog_action'] = 'Akcia'; $PALANG['pViewlog_data'] = 'Podrobnosti'; diff --git a/languages/sl.lang b/languages/sl.lang index 8f62bb54..fd5b7a7a 100644 --- a/languages/sl.lang +++ b/languages/sl.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Preglej log'; $PALANG['pMenu_logout'] = 'Odjavi'; $PALANG['pMain_welcome'] = 'Dobrodošli v Postfix Adminu!'; -$PALANG['pMain_overview'] = 'Seznam aliasov in predalov. Tukaj jih lahko urejate in/ali brišete.'; -$PALANG['pMain_create_alias'] = 'Ustvari nov alias za določeno domeno.'; -$PALANG['pMain_create_mailbox'] = 'Ustvari nov predal za določeno domeno.'; +$PALANG['pMain_overview'] = 'Seznam aliasov in predalov. Tukaj jih lahko urejate in/ali brišete.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Ustvari nov alias za določeno domeno.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Ustvari nov predal za določeno domeno.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Pošlji e-pošto v enega izmed novoustvarjenih predalov.'; $PALANG['pMain_password'] = 'Spremeni geslo za administratorja.'; $PALANG['pMain_viewlog'] = 'Pregled dnevniških datotek.'; @@ -199,6 +199,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = 'Reply once per week'; # XXX $PALANG['pViewlog_welcome'] = 'Seznam zadnjih %s operacij za '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Čas'; $PALANG['pViewlog_action'] = 'Operacija'; $PALANG['pViewlog_data'] = 'Podatki'; diff --git a/languages/sv.lang b/languages/sv.lang index 43b0bf9f..eaa67072 100644 --- a/languages/sv.lang +++ b/languages/sv.lang @@ -60,9 +60,9 @@ $PALANG['pMenu_viewlog'] = 'Visa logg'; $PALANG['pMenu_logout'] = 'Logga ut'; $PALANG['pMain_welcome'] = 'Välkommen till Postfix Admin!'; -$PALANG['pMain_overview'] = 'Lista alias och brevlådor. Du kan ändra / ta bort dem här.'; -$PALANG['pMain_create_alias'] = 'Skapa nytt alias i din domän.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Skapa ny brevlåda i din domän.'; +$PALANG['pMain_overview'] = 'Lista alias och brevlådor. Du kan ändra / ta bort dem här.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Skapa nytt alias i din domän.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Skapa ny brevlåda i din domän.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Skicka ett meddelande till en av e-postadresserna.'; $PALANG['pMain_password'] = 'Ändra lösenord för adminkontot.'; $PALANG['pMain_viewlog'] = 'Visa loggfiler.'; @@ -204,6 +204,7 @@ $PALANG['reply_once_per_day'] = 'Svara en gång om dagen'; $PALANG['reply_once_per_week'] = 'Svara en gång i veckan'; $PALANG['pViewlog_welcome'] = 'Visa de senaste %s åtgärderna för '; +$PALANG['pViewlog_welcome_all'] = 'Visa de senaste %s åtgärderna '; $PALANG['pViewlog_timestamp'] = 'Tidpunkt'; $PALANG['pViewlog_action'] = 'Åtgärd'; $PALANG['pViewlog_data'] = 'Data'; diff --git a/languages/tr.lang b/languages/tr.lang index 43280710..d32b3820 100644 --- a/languages/tr.lang +++ b/languages/tr.lang @@ -57,9 +57,9 @@ $PALANG['pMenu_viewlog'] = 'Logları İncele'; $PALANG['pMenu_logout'] = 'Çıkış'; $PALANG['pMain_welcome'] = 'Postfix Admin\'e Hoş Geldiniz!'; -$PALANG['pMain_overview'] = 'E-posta kutularınızın ve aliaslarınızın listesi. Buradan silip düzenleyebilirsiniz.'; -$PALANG['pMain_create_alias'] = 'Domaininiz için yeni bir alias yaratın.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = 'Domaininiz için yeni bir e-posta kutusu yaratın.'; +$PALANG['pMain_overview'] = 'E-posta kutularınızın ve aliaslarınızın listesi. Buradan silip düzenleyebilirsiniz.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Domaininiz için yeni bir alias yaratın.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Domaininiz için yeni bir e-posta kutusu yaratın.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Yeni yaratmış olduğunuz e-posta kutularından birine e-posta gönderin.'; $PALANG['pMain_password'] = 'Yönetici hesabınızın şifresini değiştirin.'; $PALANG['pMain_viewlog'] = 'log dosyalarını inceleyin.'; @@ -199,6 +199,7 @@ $PALANG['reply_once_per_day'] = 'Günde bir kez yanıtla'; $PALANG['reply_once_per_week'] = 'Haftada bir kez yanıtla'; $PALANG['pViewlog_welcome'] = 'Son %s hareketi:'; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = 'Timestamp'; # XXX $PALANG['pViewlog_action'] = 'Hareket'; $PALANG['pViewlog_data'] = 'Veri'; diff --git a/languages/tw.lang b/languages/tw.lang index c27cd4a6..49eaf46d 100644 --- a/languages/tw.lang +++ b/languages/tw.lang @@ -58,9 +58,9 @@ $PALANG['pMenu_viewlog'] = '查看日誌'; $PALANG['pMenu_logout'] = '退出'; $PALANG['pMain_welcome'] = '歡迎來到Postfix Admin!'; -$PALANG['pMain_overview'] = '顯示你的郵件別名和郵箱. 你可以在這兒進行編輯/刪除操作.'; -$PALANG['pMain_create_alias'] = '在您的網域中新建一個別名.'; # XXX check text - should be 'Create a new alias for your domain.' -$PALANG['pMain_create_mailbox'] = '在您的網域中新建一個郵箱.'; +$PALANG['pMain_overview'] = '顯示你的郵件別名和郵箱. 你可以在這兒進行編輯/刪除操作.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = '在您的網域中新建一個別名.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = '在您的網域中新建一個郵箱.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = '發一封郵件到你新建的一個郵箱中.'; $PALANG['pMain_password'] = '修改你的管理員密碼.'; $PALANG['pMain_viewlog'] = '查看日誌文件.'; @@ -201,6 +201,7 @@ $PALANG['reply_once_per_day'] = 'Reply once a day'; # XXX $PALANG['reply_once_per_week'] = '每星期回覆一次'; $PALANG['pViewlog_welcome'] = '查看最新的%s項操作日誌 網域: '; +$PALANG['pViewlog_welcome_all'] = 'View the last %s actions '; # XXX $PALANG['pViewlog_timestamp'] = '時間'; $PALANG['pViewlog_action'] = '操作'; $PALANG['pViewlog_data'] = '內容'; diff --git a/languages/ua.lang b/languages/ua.lang index c060ba7d..2a8438f9 100644 --- a/languages/ua.lang +++ b/languages/ua.lang @@ -49,7 +49,7 @@ $PALANG['pLogin_login_users'] = 'Вхід для звичайних корист $PALANG['pMenu_main'] = 'Головна'; $PALANG['pMenu_overview'] = 'Список доменів'; -$PALANG['add_alias'] = 'Створити псевдоним (аліас)'; +$PALANG['add_alias'] = 'Створити переадресацію'; $PALANG['add_alias_domain'] = 'Створити псевдоним (аліас) домена'; $PALANG['add_mailbox'] = 'Створити скриньку'; $PALANG['pMenu_fetchmail'] = 'Збір пошти (fetchmail)'; @@ -59,9 +59,9 @@ $PALANG['pMenu_viewlog'] = 'Переглянути журнал'; $PALANG['pMenu_logout'] = 'Вихід'; $PALANG['pMain_welcome'] = 'Ласкаво просимо в Postfix Admin!'; -$PALANG['pMain_overview'] = 'Список Ваших доменів. Звідси Ви маєте можливість редагувати та видаляти їх.'; -$PALANG['pMain_create_alias'] = 'Створення нового псевдониму (аліасу) у Вашому домені.'; -$PALANG['pMain_create_mailbox'] = 'Створення нової поштової скриньки у Вашому домені.'; +$PALANG['pMain_overview'] = 'Список Ваших доменів. Звідси Ви маєте можливість додавати, редагувати та видаляти їх.'; # XXX Text changed to "List your domains. You can edit / delete them from here." +$PALANG['pMain_create_alias'] = 'Створення нової переадресації у Вашому домені.'; # XXX Text changed to "Create a new email forward." +$PALANG['pMain_create_mailbox'] = 'Створення нової поштової скриньки у Вашому домені.'; # XXX Text changed to "Create a new mailbox." $PALANG['pMain_sendmail'] = 'Відправка листа на одну зі створених Вами поштових скриньок.'; $PALANG['pMain_password'] = 'Зміна пароля для Вашого облікового запису адміністратора.'; $PALANG['pMain_viewlog'] = 'Перегляд журналу роботи з системою.'; @@ -74,7 +74,7 @@ $PALANG['pOverview_up_arrow'] = 'Вгору'; $PALANG['pOverview_right_arrow'] = 'Наступна сторінка'; $PALANG['pOverview_left_arrow'] = 'Попередня сторінка'; $PALANG['pOverview_alias_domain_title'] = ':: Псевдоними (аліаси) доменів'; -$PALANG['pOverview_alias_title'] = ':: Псевдоними (аліаси)'; +$PALANG['pOverview_alias_title'] = ':: Переадресації '; $PALANG['pOverview_mailbox_title'] = ':: Поштові скриньки'; $PALANG['go'] = 'Обрати'; $PALANG['pOverview_welcome'] = 'Огляд для '; @@ -129,11 +129,11 @@ $PALANG['alias_updated'] = 'Псевдоним (аліас) %s успішно о $PALANG['pCreate_alias_catchall_text'] = 'Для створення catch-all поштової скриньки використовуйте ' * ' у якості імені псевдонима (аліаса).'; # XXX don't propagate usage of *@target-domain.com for domain-aliasing any longer $PALANG['mailbox_alias_cant_be_deleted'] = 'Зазначений псевдоним (аліас) посилається на поштову скриньку і не може бути вилучений!'; $PALANG['protected_alias_cant_be_deleted'] = 'Псевдоним (аліас) %s захищений і може бути вилучений тільки суперадміністратором!'; -$PALANG['alias_points_to_itself'] = 'Псевдоним (аліас) не може вказувати на себе сомого!'; +$PALANG['alias_points_to_itself'] = 'Переадресація не може вказувати на себе саму!'; $PALANG['pEdit_alias_welcome'] = 'Редагування налаштувань пересилання'; $PALANG['pEdit_alias_help'] = 'Можна вказати декілька цілей, по одному запису на рядок.'; -$PALANG['alias'] = 'Псевдоним (аліас)'; +$PALANG['alias'] = 'Переадресація'; $PALANG['to'] = 'До'; $PALANG['pEdit_alias_goto_text_error1'] = 'Ви нічого не ввели в поле 'До'.'; $PALANG['pEdit_alias_goto_text_error2'] = 'Ви ввели некоректну поштову адресу: '; @@ -205,6 +205,7 @@ $PALANG['reply_once_per_day'] = 'Відповідати один раз на д $PALANG['reply_once_per_week'] = 'Відповідати один раз на тиждень'; $PALANG['pViewlog_welcome'] = 'Перегляд %s останніх дій для '; +$PALANG['pViewlog_welcome_all'] = 'Перегляд останніх %s дій '; $PALANG['pViewlog_timestamp'] = 'Час створення/модифікації'; $PALANG['pViewlog_action'] = 'Дія'; $PALANG['pViewlog_data'] = 'Данні'; @@ -257,7 +258,7 @@ $PALANG['pAdminMenu_create_domain'] = 'Новий домен'; $PALANG['pAdminList_admin_count'] = 'Домени'; $PALANG['description'] = 'Опис'; -$PALANG['aliases'] = 'Псевдоними (аліаси)'; +$PALANG['aliases'] = 'Переадресації'; $PALANG['pAdminList_domain_quota'] = 'Квота домену (МБ)'; $PALANG['pAdminList_domain_backupmx'] = 'Резервний MX'; $PALANG['last_modified'] = 'Останні зміни'; @@ -276,13 +277,11 @@ $PALANG['domain_updated'] = 'Домен %s успішно оновлено.'; $PALANG['pAdminDelete_admin_error'] = 'Неможливо видалити адміністратора!'; $PALANG['domain_postdel_failed'] = 'Не вдалося коректно виконати скрипт після видалення домену, подробиці дивіться у журналі помилок!'; $PALANG['domain_postedit_failed'] = 'Не вдалося коректно виконати скрипт після редагування домену, подробиці дивіться у журналі помилок!'; - $PALANG['domain_postcreate_failed'] = 'Не вдалося коректно виконати скрипт після створення домену, подробиці дивіться у журналі помилок!'; $PALANG['mailbox_postdel_failed'] = 'Не вдалося коректно виконати скрипт після видалення поштової скриньки, подробиці дивіться у журналі помилок!'; $PALANG['mailbox_postedit_failed'] = 'Не вдалося коректно виконати скрипт після редагування поштової скриньки, подробиці дивіться у журналі помилок!'; $PALANG['mailbox_postcreate_failed'] = 'Не вдалося коректно виконати скрипт після створення поштової скриньки, подробиці дивіться у журналі помилок!'; $PALANG['mailbox_postpassword_failed'] = 'Не вдалося коректно виконати скрипт після зміни пароля поштової скриньки, подробиці дивіться у журналі помилок!'; - $PALANG['pAdminDelete_alias_domain_error'] = 'Неможливо видалити псевдоним (аліас) домену!'; $PALANG['domain_conflict_vacation_domain'] = 'Ви не можете використовувати домен автовідповідача у якості поштового домену!'; diff --git a/model/AdminpasswordHandler.php b/model/AdminpasswordHandler.php index 5022830b..7aa50381 100644 --- a/model/AdminpasswordHandler.php +++ b/model/AdminpasswordHandler.php @@ -39,7 +39,7 @@ class AdminpasswordHandler extends PFAHandler ); } - public function init($id) :bool + public function init(string $id) :bool { # hardcode to logged in admin if ($this->admin_username == '') { diff --git a/model/AliasdomainHandler.php b/model/AliasdomainHandler.php index e6ef3fc8..e288d1be 100644 --- a/model/AliasdomainHandler.php +++ b/model/AliasdomainHandler.php @@ -53,7 +53,7 @@ class AliasdomainHandler extends PFAHandler } } - public function init($id) : bool + public function init(string $id) : bool { $success = parent::init($id); if ($success) { diff --git a/model/Login.php b/model/Login.php index 6b7419c7..91e69684 100644 --- a/model/Login.php +++ b/model/Login.php @@ -166,15 +166,31 @@ class Login // If we have a mailbox_postpassword_script (dovecot only?) - $cmdarg1=escapeshellarg($username); - $cmdarg2=escapeshellarg($domain); - $cmdarg3=escapeshellarg($old_password); - $cmdarg4=escapeshellarg($new_password); - $command= "$cmd_pw $cmdarg1 $cmdarg2 $cmdarg3 $cmdarg4"; - $retval=0; - $output=array(); - $firstline=''; - $firstline=exec($command, $output, $retval); + // Use proc_open call to avoid safe_mode problems and to prevent showing plain password in process table + $spec = array( + 0 => array("pipe", "r"), // stdin + 1 => array("pipe", "w"), // stdout + ); + + $cmdarg1 = escapeshellarg($username); + $cmdarg2 = escapeshellarg($domain); + $command = "$cmd_pw $cmdarg1 $cmdarg2 2>&1"; + + $proc = proc_open($command, $spec, $pipes); + + if (!$proc) { + throw new \Exception("can't proc_open $cmd_pw"); + } + + // Write passwords through pipe to command stdin -- provide old password, then new password. + fwrite($pipes[0], $old_password . "\0", 1+strlen($old_password)); + fwrite($pipes[0], $new_password . "\0", 1+strlen($new_password)); + $output = stream_get_contents($pipes[1]); + fclose($pipes[0]); + fclose($pipes[1]); + + $retval = proc_close($proc); + if (0 != $retval) { error_log("Running $command yielded return value=$retval, output was: " . json_encode($output)); throw new \Exception($warnmsg_pw); diff --git a/model/MailboxHandler.php b/model/MailboxHandler.php index e907eb0f..df1b15fa 100644 --- a/model/MailboxHandler.php +++ b/model/MailboxHandler.php @@ -66,7 +66,7 @@ class MailboxHandler extends PFAHandler } } - public function init($id) : bool + public function init(string $id) : bool { if (!parent::init($id)) { return false; @@ -650,17 +650,35 @@ class MailboxHandler extends PFAHandler } if (!empty($cmd_pw)) { - $cmdarg3='""'; - $cmdarg4=escapeshellarg($this->values['password']); - $command= "$cmd_pw $cmdarg1 $cmdarg2 $cmdarg3 $cmdarg4"; - $retval=0; - $output=array(); - $firstline=''; - $firstline=exec($command, $output, $retval); - if (0!=$retval) { - error_log("Running $command yielded return value=$retval, first line of output=$firstline"); + // Use proc_open call to avoid safe_mode problems and to prevent showing plain password in process table + $spec = array( + 0 => array("pipe", "r"), // stdin + 1 => array("pipe", "w"), // stdout + ); + + $command = "$cmd_pw $cmdarg1 $cmdarg2 2>&1"; + + $proc = proc_open($command, $spec, $pipes); + + if (!$proc) { + error_log("can't proc_open $cmd_pw"); $this->errormsg[] .= $warnmsg_pw; $status = false; + } else { + // Write passwords through pipe to command stdin -- provide old password, then new password. + fwrite($pipes[0], "\0", 1); + fwrite($pipes[0], $this->values['password'] . "\0", 1+strlen($this->values['password'])); + $output = stream_get_contents($pipes[1]); + fclose($pipes[0]); + fclose($pipes[1]); + + $retval = proc_close($proc); + + if (0!=$retval) { + error_log("Running $command yielded return value=$retval, output was: " . json_encode($output)); + $this->errormsg[] .= $warnmsg_pw; + $status = false; + } } } diff --git a/model/VacationHandler.php b/model/VacationHandler.php index c01f7db8..9ac2c740 100644 --- a/model/VacationHandler.php +++ b/model/VacationHandler.php @@ -19,7 +19,7 @@ class VacationHandler extends PFAHandler */ protected $domain_field = 'domain'; - public function init($id) : bool + public function init(string $id) : bool { throw new \Exception('VacationHandler is not yet ready to be used with *Handler methods'); } diff --git a/phpunit.xml b/phpunit.xml index dd3349ba..026f1351 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -12,6 +12,7 @@ + diff --git a/public/css/bootstrap.css b/public/css/bootstrap.css index 86b790c4..4176e8c0 100644 --- a/public/css/bootstrap.css +++ b/public/css/bootstrap.css @@ -33,7 +33,7 @@ body { /* Not required for template or sticky footer method. */ body > .container { - padding: 60px 15px 0; + padding: 100px 15px 0; } .footer > .container { diff --git a/public/edit.php b/public/edit.php index cdbe5483..cd8c55f4 100644 --- a/public/edit.php +++ b/public/edit.php @@ -184,13 +184,8 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { } } - if ($new == 0) { - header("Location: " . $formconf['listview']); - exit; - } else { - header("Location: edit.php?table=$table"); - exit; - } + header("Location: " . $formconf['listview']); + exit; } } } diff --git a/public/index.php b/public/index.php index bbbc5734..76850032 100644 --- a/public/index.php +++ b/public/index.php @@ -42,7 +42,7 @@ if ($CONF['configured']) { Welcome to Postfix Admin - +

Welcome to Postfix Admin

What is it?

Postfix Admin is a web based interface to configure and manage a Postfix based email server for many users.

@@ -84,7 +84,6 @@ if ($CONF['configured']) {

For further help, or documentation please check out -

diff --git a/public/setup.php b/public/setup.php index c1e7acb8..e6ec334f 100644 --- a/public/setup.php +++ b/public/setup.php @@ -653,9 +653,6 @@ function do_software_environment_check() if ($m_pdo_sqlite == 1) { $info[] = "Database - SQLite support available"; - if (Config::read_string('database_type') != 'sqlite') { - $warn[] = "Change the database_type to 'sqlite' in config.local.php if you want to use SQLite"; - } } else { $warn[] = "Database support - SQLite (pdo_sqlite) extension not found"; } diff --git a/public/users/login.php b/public/users/login.php index ccb77b31..ec6599e7 100644 --- a/public/users/login.php +++ b/public/users/login.php @@ -47,12 +47,11 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { $fPassword = safepost('fPassword'); if ($lang != check_language(false)) { # only set cookie if language selection was changed - setcookie('lang', $lang, time() + 60*60*24*30); # language cookie, lifetime 30 days - # (language preference cookie is processed even if username and/or password are invalid) + setcookie('lang', $lang, time() + 60 * 60 * 24 * 30); # language cookie, lifetime 30 days + # (language preference cookie is processed even if username and/or password are invalid) } $login = new Login('mailbox'); - ; if ($login->login($fUsername, $fPassword)) { init_session($fUsername, false); header("Location: main.php"); @@ -70,8 +69,7 @@ session_start(); if ($error) { flash_error($error); } - -$_SESSION['PFA_token'] = md5(uniqid('pfa' . rand(), true)); +$_SESSION['PFA_token'] = md5(random_bytes(8) . uniqid('pfa', true)); $smarty->assign('language_selector', language_selector(), false); $smarty->assign('smarty_template', 'login'); diff --git a/public/viewlog.php b/public/viewlog.php index adb56199..6b05a09e 100644 --- a/public/viewlog.php +++ b/public/viewlog.php @@ -45,7 +45,7 @@ $fDomain = ''; $error = 0; if ($_SERVER['REQUEST_METHOD'] == "GET") { - if ((is_array($list_domains) and sizeof($list_domains) > 0)) { + if ((is_array($list_domains) and sizeof($list_domains) > 0) and !authentication_has_role('global-admin')) { $fDomain = $list_domains[0]; } } elseif ($_SERVER['REQUEST_METHOD'] == "POST") { @@ -67,12 +67,24 @@ if ($error != 1) { $table_log = table_by_key('log'); $page_size = isset($CONF['page_size']) ? intval($CONF['page_size']) : 35; - $query = "SELECT timestamp,username,domain,action,data FROM $table_log WHERE domain= :domain ORDER BY timestamp DESC LIMIT $page_size"; + $where = []; + $params = []; + if ($fDomain) { + $where[] = 'domain = :domain' ; + $params['domain'] = $fDomain; + } + + $where_sql = ''; + if (!empty($where)) { + $where_sql = 'WHERE ' . implode(' AND ', $where); + } + + $query = "SELECT timestamp,username,domain,action,data FROM $table_log $where_sql ORDER BY timestamp DESC LIMIT $page_size"; if (db_pgsql()) { - $query = "SELECT extract(epoch from timestamp) as timestamp,username,domain,action,data FROM $table_log WHERE domain= :domain ORDER BY timestamp DESC LIMIT $page_size"; + $query = "SELECT extract(epoch from timestamp) as timestamp,username,domain,action,data FROM $table_log $where_sql ORDER BY timestamp DESC LIMIT $page_size"; } - $result = db_query_all($query, array('domain' => $fDomain)); + $result = db_query_all($query, $params); foreach ($result as $row) { if (is_array($row) && db_pgsql()) { $row['timestamp'] = gmstrftime('%c %Z', $row['timestamp']); @@ -88,7 +100,13 @@ foreach ($tLog as $k => $v) { } } -$smarty->assign('domain_list', $list_domains); +$domain_options = array(); +if (authentication_has_role('global-admin')) { + $domain_options = array('' => ''); +} +$domain_options = array_merge($domain_options, array_combine($list_domains, $list_domains)); + +$smarty->assign('domain_options', $domain_options); $smarty->assign('domain_selected', $fDomain); $smarty->assign('tLog', $tLog, false); $smarty->assign('fDomain', $fDomain); diff --git a/templates/editform.tpl b/templates/editform.tpl index 44adff7c..b0b46e1f 100644 --- a/templates/editform.tpl +++ b/templates/editform.tpl @@ -42,7 +42,7 @@ {html_options output=$struct.{$key}.options values=$struct.{$key}.options selected=$value_{$key}} {elseif $field.type == 'pass' || $field.type == 'b64p'} - + {elseif $field.type == 'txtl'} {else} diff --git a/templates/flash_error.tpl b/templates/flash_error.tpl index 627a35f0..b1a00cd1 100644 --- a/templates/flash_error.tpl +++ b/templates/flash_error.tpl @@ -1,5 +1,4 @@ -

{strip} {if isset($smarty.session.flash)} {if isset($smarty.session.flash.info)} diff --git a/templates/footer.tpl b/templates/footer.tpl index 2c8ee789..eed2537e 100644 --- a/templates/footer.tpl +++ b/templates/footer.tpl @@ -1,15 +1,23 @@