Compare commits

...

69 Commits

Author SHA1 Message Date
Christian Boltz ea2103f594 CHANGELOG.TXT, debian/changelog:
- 2.3.7 release


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1651 a1433add-5e2c-0410-b055-b7f2511e0802
10 years ago
Christian Boltz 584583c9d8 functions.inc.php:
- fix SQL injection in show_gen_status()
  (backport of trunk r1639)
- update version number to 2.3.7

(+ CHANGELOG.TXT update)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1650 a1433add-5e2c-0410-b055-b7f2511e0802
10 years ago
Christian Boltz 95f73e2a10 functions.inc.php:
- check_domains(): raise TLD limit to 13 chars - even if I seriously
  doubt someone wants to use such a long TLD ;-)
  ( https://sourceforge.net/p/postfixadmin/bugs/310/ again)



git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1638 a1433add-5e2c-0410-b055-b7f2511e0802
10 years ago
Christian Boltz 11f9f3b88c functions.inc.php
- check_domain(): update regex for new, longer TLDs like .photography
  https://sourceforge.net/p/postfixadmin/bugs/310/

(+ Changelog update)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1636 a1433add-5e2c-0410-b055-b7f2511e0802
10 years ago
Christian Boltz 5bf296db44 functions.inc.php:
- check_email(): don't trim() mail address to avoid that aliases 
  starting with a space are allowed. This fixes 
  http://sourceforge.net/p/postfixadmin/bugs/210/ and 
  https://sourceforge.net/p/postfixadmin/feature-requests/113/

create-mailbox.php:
- revert r1520 - changing check_email() to not trim the mail address 
  is better than trim()ing the localpart

CHANGELOG.TXT:
- update for the changes above


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1622 a1433add-5e2c-0410-b055-b7f2511e0802
10 years ago
Christian Boltz e923f5842c vacation.pl:
- disable TLS by default due to a bug in Mail::Sender 0.8.22
  (https://rt.cpan.org/Public/Bug/Display.html?id=85438)
  Actually, due to a bug in Mail::Sender 0.8.21, it was never enabled ;-)
- add new config option $smtp_tls_allowed to allow enabling TLS



git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1616 a1433add-5e2c-0410-b055-b7f2511e0802
11 years ago
Christian Boltz ae2ed69138 vacation.pl:
- encode subject
  https://sourceforge.net/p/postfixadmin/bugs/272/
  https://sourceforge.net/p/postfixadmin/patches/119/



git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1598 a1433add-5e2c-0410-b055-b7f2511e0802
11 years ago
Christian Boltz 8e3c1822a6 upgrade.php:
- upgrade_318_mysql(): mark vacation_notification.notified field as
  latin1 to avoid overlong index (no upgrade function needed - if it
  broke before, upgrade.php bailed out)
  http://sourceforge.net/p/postfixadmin/discussion/676076/thread/0c919cfd/


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1521 a1433add-5e2c-0410-b055-b7f2511e0802
11 years ago
Christian Boltz 48ebe9c317 create-mailbox.php:
- trim() localpart to avoid mailbox names with leading space

CHANGELOG.TXT:
- also add forgetten entry for setup.php r1498



git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1520 a1433add-5e2c-0410-b055-b7f2511e0802
11 years ago
Christian Boltz d08d29caff - explicitely specify (empty) values for description and transport when
creating the "ALL" domain to fix problems with strict SQL mode in MariaDB
  https://sourceforge.net/p/postfixadmin/bugs/288/


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1498 a1433add-5e2c-0410-b055-b7f2511e0802
11 years ago
Christian Boltz a264e34d15 da.lang
- Translation update by Titanus <titanus AT aptget.dk>, via mailinglist


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1480 a1433add-5e2c-0410-b055-b7f2511e0802
11 years ago
Christian Boltz 0bcde914a1 edit-mailbox.php:
- when enabling/disabling a mailbox, also update the corresponding alias
  Patch by Paolo Stancato, https://sourceforge.net/p/postfixadmin/bugs/289/


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1479 a1433add-5e2c-0410-b055-b7f2511e0802
11 years ago
Christian Boltz 108e4546f0 lt.lang:
- translation update by Nerijus Baliunas <nerijus @SF>
  https://sourceforge.net/p/postfixadmin/patches/118/


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1435 a1433add-5e2c-0410-b055-b7f2511e0802
11 years ago
Christian Boltz cff1cc753d 2.3.6 release - update version at various places
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1417 a1433add-5e2c-0410-b055-b7f2511e0802
12 years ago
Christian Boltz dc86351af6 fetchmail.php:
- fix bool and date handling for pgsql
  (patch from Christian Eberl)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1411 a1433add-5e2c-0410-b055-b7f2511e0802
12 years ago
Christian Boltz e0f8d2d8b4 setup.php:
- fix double inclusion of config.inc.php
  https://sourceforge.net/tracker/?func=detail&atid=937964&aid=3539027&group_id=191583


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1405 a1433add-5e2c-0410-b055-b7f2511e0802
12 years ago
Christian Boltz df777553d9 templates/login.php:
- typo fix - focus the username input field
  https://sourceforge.net/tracker/?func=detail&atid=937964&aid=3538192&group_id=191583

templates/users_login.php:
- focus username input field in login form


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1404 a1433add-5e2c-0410-b055-b7f2511e0802
12 years ago
Christian Boltz 26b136ae8e templates/footer.php:
- replace footer link with link to postfixadmin.sf.net


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1402 a1433add-5e2c-0410-b055-b7f2511e0802
12 years ago
Christian Boltz c7d48cbf55 templates/list-virtual, templates/admin_list-domain:
- display domain and mailbox description with correct encoding
  This fixes a regression in 2.3.5
  https://sourceforge.net/projects/postfixadmin/forums/forum/676076/topic/4977778


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1342 a1433add-5e2c-0410-b055-b7f2511e0802
12 years ago
David Goodwin fd0063bb6a fix these to aid future building
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1340 a1433add-5e2c-0410-b055-b7f2511e0802
12 years ago
Christian Boltz 339d585ac2 functions.inc.php
- update release number to 2.3.5

CHANGELOG.TXT:
- add 2.3.5 release headline


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1335 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Norman Messtorff 894d83d3e1 Merged debian/* stuff from trunk to postfixadmin-2.3 branch
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1334 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz fac93bf28b functions.inc.php:
- pacrypt(): escape_string() $salt for mysql_encrypt to be on the safe side


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1333 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz bf0892aa9c More XSS fixes:
create-alias.php, edit-alias.php:
- fix XSS in error message
    
templates/admin_list-domain.php:
- fix XSS (by values stored in the database) in "description" field

templates/fetchmail.php:
- fix XSS (by values stored in the database) in any field

templates/list-virtual.php:
- fix XSS (by values stored in the database) in "name" field

+ CHANGELOG.TXT update

Again, thanks to Filippo Cavallarin for pointing out those issues.


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1330 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz d60276e864 functions.inc.php:
- PHP around 5.3.8 includes hex2bin as native function - http://php.net/hex2bin
  therefore we have to wrap our function (which fortunately gives the same
  results) with function_exists().
  Reported by MadOtis on #postfixadmin


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1329 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 71f7b03801 update CHANGELOG.TXT with latest commits/fixes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1325 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 638f2755eb edit-vacation.php, templates/edit-vacation.php:
- only urlencode() $fDomain, not the whole fCanceltarget (otherwise
  the ? is also encoded, which results in a 404 error)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1324 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 8f5047cb20 templates/admin_create-domain.php:
- fix XSS in domain and description field
  (Thanks to Filippo Cavallarin!)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1323 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin 5c4d9e48bd escape provided url better (fix XSS vuln) - thanks to Flippo Cavallarin for reporting this
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1322 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin 9fb0f040c9 fix xss from poor sanitisation/checking of $_GET[domain], thanks to Flippo Cavallarin for reporting this
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1321 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin 9dd00fb0a7 fix sql injection hole where value fields were not being escaped in the stored file - (thanks to Filippo Cavallarin)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1320 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin d8895ccdc2 fix sql injection hole in pacrypt if $CONF[encrypt] == mysql_encrypt (thanks to Filippo Cavallarin)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1319 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz ef0c84283f list-virtual.php:
- delivery to mailbox with a recipient delimiter (mailbox+foo@domain)
  was marked as "forward only"

This fixes 
https://sourceforge.net/tracker/?func=detail&aid=3420440&group_id=191583&atid=937964
reported by <stderr1> on #postfixadmin

(backport of trunk r1198)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1199 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 22fb5c5cb2 de.lang:
- fix typo

(backport of trunk r1182)
(not worth a changelog entry)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1187 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz dba89ba42e functions.inc.php / create_admin():
- fix SQL injection (only exploitable by superadmins)

Reported by Matthias Bethke (msbethke@SF),
https://sourceforge.net/tracker/?func=detail&atid=937964&aid=3412484&group_id=191583

(+ changelog update for this and the previous commit)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1185 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz d196f38dde *.lang:
- add missing pAdminDelete_admin_error text
  (already existed in trunk, but was missing in 2.3.x)

Reported by Matthias Bethke (msbethke@SF) 
https://sourceforge.net/tracker/?func=detail&atid=937964&aid=3412476&group_id=191583


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1184 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 8d16ebdab3 update version numbers etc. for the 2.3.4 release
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1180 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin 591680764a update debian/changelog in preparation of new release
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1179 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 1e766a2b39 CHANGELOG.TXT:
- whitespace fix - tabs vs. spaces


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1178 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 1c76c35e6c import_users_from_csv.py:
- update FSF address (the openSUSE build check complained ;-)

(Backport of trunk r1158)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1165 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 19c65d5441 ADDITIONS/delete-mailq-by-domain.pl,
ADDITIONS/squirrelmail-plugin/**/postfixadmin.po:
- whitespace fix: replace DOS line ends with Linux line ends
  (no other changes)

This commit backports trunk r1160 to the 2.3 branch.


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1161 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz ac3eadc17c functions.inc.php - pacrypt():
- if dovecotpw does not give the expected output, read stderr and write
  it to error_log()
- backported from SVN trunk r1071


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1159 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 3be1184a9b vacation.pl:
- (really) log to "mail" syslog facility

reported by Johan Meiring (jmeiring) in 
http://sourceforge.net/tracker/index.php?func=detail&aid=3086890&group_id=191583&atid=937964

This is a backport of r1073 to the SVN branch.


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1074 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 5153b1e5b4 Text change: Logged _in_ as ... (the 'in') was missing.
This is a backport of r1062 from trunk. (Only the real change, 
not all the translator comments.)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1063 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 3804413c82 create-domain.php:
- force domain name to lowercase to avoid problems with PgSQL foreign keys

Reported by Munroe Sollog (roe1234@SF),
https://sourceforge.net/tracker/?func=detail&aid=3287965&group_id=191583&atid=937964
after some bughunting on #postfixadmin



git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1037 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 86aabcfa06 list-domain.php:
- add explicit field list in SELECT to avoid PgSQL problems with custom columns

Reported by ksb (ksb4ever@SF),
https://sourceforge.net/tracker/?func=detail&aid=2859165&group_id=191583&atid=937964


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1029 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz eb8fafbc89 functions.inc.php:
- generate_password(): generate more secure random password

Based on a patch from Pierre Fagrell (mrfrenzy@SF),
https://sourceforge.net/tracker/?func=detail&aid=2958698&group_id=191583&atid=937964
(with some modifications)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1027 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 04e743f262 fix typo in variable name
Reported by Gabriele Vivinetto (gabrielev@SF),
https://sourceforge.net/tracker/?func=detail&aid=3266862&group_id=191583&atid=937964


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1025 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz c106ecab76 de.lang:
- remove half/invalid utf-8 char in $PALANG['pCreate_dbLog_createalias']


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1014 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin bf7d3bc783 bump revision number + date to keep cboltz happy ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1010 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin bd67419e00 debian: update patch files for 2.3.3
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1009 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin fc50224284 bump version number due to r1006
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1007 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
David Goodwin 34bb12a5cc update debian/changelog for 2.3.3 release
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@1006 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz fa14577c2a r999 is the 2.3.3 release :-)
update CHANGELOG and functions.inc.php


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@999 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 4b7e59b662 edit-vacation:
- db_log vacation changes

Known bug: enabling vacation causes two log entries if the user used 
vacation before. Better than not logging vacation changes at all.

trunk already has a different fix - it uses VacationHandler which does
indirect logging via AliasHandler.


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@987 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 386ca66f88 functions.inc.php:
- db_delete(): revert table_by_key() call - otherwise I would have to merge the
  changes from r977 to delete.php which is the only file calling db_delete in
  2.3.x and expects that db_delete does not run table_by_key().
  That's a risk we can avoid because (interesting math follows...)
      buggy db_delete() + buggy delete.php = working code :-)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@980 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz c2071fc7a0 Merging in various fixes from trunk.
upgrade.php:
- change domain.quota, domain.maxquota and mailbox.quota to bigint in PostgreSQL

setup.php:
- strict boolean check for $CONF['configured'] - similar to the check in login.php


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@969 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 2d48df75c1 Merging in various fixes from trunk.
INSTALL.TXT
- add a warning about external HOWTOs
- mention config.local.php 
- various small changes

DOCUMENTS/UPGRADE.txt:
- add note about upgrading postfix config for alias domains
- various small additions

functions.inc.php:
- fix db_delete to use table_by_key (didn't work with non-default table 
  names before)
- use db_insert for logging

languages/sk.lang:
- big translation update by Ondrej Zary (rnbw @sf)

CHANGELOG.TXT:
- updated with the most important changes from above


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@943 a1433add-5e2c-0410-b055-b7f2511e0802
13 years ago
Christian Boltz 1d3aa6c328 config.inc.php:
- better documentation for $CONF[alias_control], $CONF[alias_control_admin]
  and $CONF[special_alias_control] because the existing comments were 
  confusing (as pointed out by libertytrek in #postfixadmin)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@935 a1433add-5e2c-0410-b055-b7f2511e0802
14 years ago
Christian Boltz 2c9f015714 CHANGELOG.TXT:
- added changes of the previous commits


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@904 a1433add-5e2c-0410-b055-b7f2511e0802
14 years ago
Christian Boltz 81ddc9416c functions.inc.php:
- check_domain(): don't trim() the domain - whitespace is an error.
  This catches "foo@ domain.com" that wasn't catched before.


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@903 a1433add-5e2c-0410-b055-b7f2511e0802
14 years ago
Christian Boltz 7fd366e46e edit-alias:
some small fixes that came up while integrating the multiple alias
target patch from anexius (r898):
- replace spaces only at the start and end of a line, not in the
  middle of an (BTW: invalid) mail address
- prevent input data loss on validation errors
- allow multiple error messages (separated by <br />

(I'll port that to trunk also.)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@899 a1433add-5e2c-0410-b055-b7f2511e0802
14 years ago
Christian Boltz 90766b88cf create-alias: support multiple alias targets
- support multiple alias targets, patch by anexius@SF,
  http://sourceforge.net/projects/postfixadmin/forums/forum/676076/topic/4004442
  The patch fixes
  https://sourceforge.net/tracker/?func=detail&aid=2706290&group_id=191583&atid=937964

additional small fixes:
- replace spaces only at the start and end of a line, not in the
  middle of an (BTW: invalid) mail address
- allow multiple error messages (separated by <br />
- prevent input data loss on validation errors

(I'll port this to trunk.)


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@898 a1433add-5e2c-0410-b055-b7f2511e0802
14 years ago
Christian Boltz 0c6f5c6d8c upgrade.php:
- backport of r894 (replaced split() with explode(), added $Id)
- already covered in CHANGELOG.TXT


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@895 a1433add-5e2c-0410-b055-b7f2511e0802
14 years ago
Christian Boltz 303acce580 Backport of various fixes from trunk to the 2.3 branch
- list-virtual: fix displaying of 'modified' column for aliases when using
  postgres
- replaced deprecated split() with preg_split() or explode()
- functions.inc.php: better error messages when database functions are missing
- create domain: fixed typo in variable name that broke the default value for
  default aliases
- create domain: backup MX checkbox is now XHTML compliant
- vacation.pl logged literal $variable instead of the variable content at two
  places
- POSTFIX_CONF.txt: fixed filename for quota map
- config.inc.php: removed double $CONF['database_prefix']
- config.inc.php: fixed comments about domain_post* script parameters
- CHANGELOG.TXT: add new section for 2.3.3, include all the above



git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@893 a1433add-5e2c-0410-b055-b7f2511e0802
14 years ago
Christian Boltz 19dbcdeec7 merged most bugfix changes between 2.3 release and SVN r791 to
2.3 branch

- merged: SVN r745, r746, r747, r748, r749, r750, r752, r754, r756, 
  r767, r770, r771, r772, r773, r774, r777, r778, r779, r789, r790 
- r763 partly merged (except smarty part)
- r787 - only part a) merged
- see CHANGELOG.txt changes ;-) or SVN log for details

ToDo: display alias targets for mailboxes (r751 and r787 part b)



git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@792 a1433add-5e2c-0410-b055-b7f2511e0802
15 years ago
Christian Boltz 8420ff730c templates/main.php:
- fix php short open tags
  https://sourceforge.net/tracker/?func=detail&atid=937964&aid=2908994&group_id=191583


git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@786 a1433add-5e2c-0410-b055-b7f2511e0802
15 years ago
David Goodwin 1f57b94d7e login.php: fix XSS hole as per bug 2905599
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@783 a1433add-5e2c-0410-b055-b7f2511e0802
15 years ago
David Goodwin f7be4a7494 postfixadmin 2.3 branch
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/branches/postfixadmin-2.3@740 a1433add-5e2c-0410-b055-b7f2511e0802
15 years ago

@ -0,0 +1,8 @@
Version 0.1 -- 26/10/2009
---------------------------
* Public Release.
* Postcreation, Postdeletion and Postedit hooks.

@ -0,0 +1,7 @@
Configuración
-------------
- Edita el fichero cyrus.conf y modifica las variables $cyrus_*. El usuario debe tener permisos sobre todas las cuentas.
- Edita los ficheros cyrus-*.pl y cambia la ruta de cyrus.conf (linea require '/path/to/cyrus.conf';)

@ -0,0 +1,7 @@
Configuration
-------------
- Edit cyrus.conf and set $cyrus_* variables correctly. User must have permission over all accounts.
- Edit cyrus-*.pl and change path to cyrus.conf (require '/path/to/cyrus.conf'; line)

@ -0,0 +1,36 @@
#!/usr/bin/perl
# Cyrus Mailbox creation
#
# Iñaki Rodriguez (irodriguez@virtualminds.es / irodriguez@ackstorm.es)
#
# LICENSE
# This source file is subject to the GPL license that is bundled with
# this package in the file LICENSE.TXT.
#
# (26/10/2009)
use Cyrus::IMAP::Admin;
require '/etc/mail/postfixadmin/cyrus.conf';
use strict;
use vars qw($cyrus_user $cyrus_password $cyrus_host);
my %opts;
my $mailbox = mailbox_name($ARGV[0]);
my $client = Cyrus::IMAP::Admin->new($cyrus_host);
die_on_error($client);
$opts{-user} = $cyrus_user;
$opts{-password} = $cyrus_password;
$client->authenticate(%opts);
die_on_error($client);
$client->create($mailbox);
die_on_error($client);
$client->setquota($mailbox,'STORAGE',scalar $ARGV[3]) if ($ARGV[3] > 0);
die_on_error($client);

@ -0,0 +1,36 @@
#!/usr/bin/perl
# Cyrus Mailbox deletion
#
# Iñaki Rodriguez (irodriguez@virtualminds.es / irodriguez@ackstorm.es)
#
# LICENSE
# This source file is subject to the GPL license that is bundled with
# this package in the file LICENSE.TXT.
#
# (26/10/2009)
use Cyrus::IMAP::Admin;
require '/etc/mail/postfixadmin/cyrus.conf';
use strict;
use vars qw($cyrus_user $cyrus_password $cyrus_host);
my %opts;
my $mailbox = mailbox_name($ARGV[0]);
my $client = Cyrus::IMAP::Admin->new($cyrus_host);
die_on_error($client);
$opts{-user} = $cyrus_user;
$opts{-password} = $cyrus_password;
$client->authenticate(%opts);
die_on_error($client);
$client->setacl($mailbox,$cyrus_user => 'all');
die_on_error($client);
$client->deletemailbox($mailbox);
die_on_error($client);

@ -0,0 +1,33 @@
#!/usr/bin/perl
# Cyrus Mailbox edition
#
# Iñaki Rodriguez (irodriguez@virtualminds.es / irodriguez@ackstorm.es)
#
# LICENSE
# This source file is subject to the GPL license that is bundled with
# this package in the file LICENSE.TXT.
#
# (26/10/2009)
use Cyrus::IMAP::Admin;
require '/etc/mail/postfixadmin/cyrus.conf';
use strict;
use vars qw($cyrus_user $cyrus_password $cyrus_host);
my %opts;
my $mailbox = mailbox_name($ARGV[0]);
my $client = Cyrus::IMAP::Admin->new($cyrus_host);
die_on_error($client);
$opts{-user} = $cyrus_user;
$opts{-password} = $cyrus_password;
$client->authenticate(%opts);
die_on_error($client);
$client->setquota($mailbox,'STORAGE',scalar $ARGV[3]) if ($ARGV[3] > 0);
die_on_error($client);

@ -0,0 +1,31 @@
#!/usr/bin/perl
# Config
$cyrus_user = 'cyrus';
$cyrus_password = 'cyruspass';
$cyrus_host = 'localhost';
# unixhierarchysep => 1 (yes) / 0 (no)
$unixhierarchysep = 1;
# Common routines
sub mailbox_name {
my $mailbox = shift;
if($unixhierarchysep) {
$mailbox = 'user/'.$ARGV[0];
} else {
$mailbox = 'user.'.$ARGV[0];
}
return $mailbox;
}
sub die_on_error {
my $cyradm = shift;
if($cyradm->error) { die $cyradm->error; }
}
1;

@ -21,20 +21,20 @@ GetOptions ('l' => \$list, 'd=s' => \$domain) or (help());
sub delete_queue {
my $ids = `postqueue -p`;
my @ids = split /\n/, $ids;
for my $id (@ids) {
next if $id =~ /^[\s\(-]/;
chomp $id;
next unless $id;
$id =~ s/(.*?)\**\s.*/$1/;
#print "$id\n";
my $match = `postcat -q $id | grep '$domain'`;
next unless $match;
#print "Deleting ID: $id\n";
my $saida = `postsuper -d $id`;
print $saida;
my $ids = `postqueue -p`;
my @ids = split /\n/, $ids;
for my $id (@ids) {
next if $id =~ /^[\s\(-]/;
chomp $id;
next unless $id;
$id =~ s/(.*?)\**\s.*/$1/;
#print "$id\n";
my $match = `postcat -q $id | grep '$domain'`;
next unless $match;
#print "Deleting ID: $id\n";
my $saida = `postsuper -d $id`;
print $saida;
}
}

@ -0,0 +1,231 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Script takes a CSV list of users and does a 'bulk' insertion into mysql.
#
# Copyright (C) 2009 Simone Piccardi
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
import csv
import getopt
import sys
import re
import time
import random, string
from datetime import datetime
from crypt import crypt
try:
import MySQLdb
except ImportError ,e:
print 'Cannot import the needed MySQLdb module, you must install it'
print 'on Debian systems just use the command'
print ' apt-get install python-mysqldb'
def usage():
print "Usage: inspostadmusers.py [options] users.csv"
print " -h print this help"
print " -t test run, do not insert, just print"
print " -u DB user"
print " -p DB password"
print " -D DB name"
print " -H DB host"
print " -q Quota in Mb (0 => no limit)"
print " -n char in seed"
print " -d debug info on"
print " -A create default alias for each domain"
print
print "the users.csv file must contains the user list with a line"
print "for each user, first line should be a title line with at least"
print "the following column names: "
print " * user - user part of the email (like user in user@domain.com)"
print " * password - cleartext password"
print " * domain - domain name (like 'domain.com')"
print " * name - full user name ('Name Surname')"
print
print "the 'name' column is optional, other columns will be ignored"
print
print "Known restrictions:"
print "* this script only works with MySQL"
print "* mailbox paths are hardcoded to domain/username/"
# option parsing
try:
opts, args = getopt.getopt(sys.argv[1:], 'u:p:d:D:H:htdA')
optval={}
for opt, val in opts:
if opt == "-h":
usage()
sys.exit(0)
else:
optval[opt]=val
except getopt.GetoptError:
usage()
sys.exit(2)
#
# Setup DB connection
#
MYSQLDB="postfixadmin"
MYSQLUSER="postfixadmin"
MYSQLPASSWORD=""
MYSQLHOST="localhost"
# settings by command line options
if optval.has_key('-u'):
MYSQLUSER = optval['-u']
if optval.has_key('-p'):
MYSQLPASSWORD = optval['-p']
if optval.has_key('-D'):
MYSQLDB = optval['-D']
if optval.has_key('-H'):
MYSQLHOST = optval['-H']
if optval.has_key('-q'):
quota = optval['-q']
else:
quota = 0
if optval.has_key('-n'):
seed_len = optval['-n']
else:
seed_len = 8
# check arguments, only the user list file must be present
if len(args) !=1:
print 'Need just one argument'
usage()
sys.exit(1)
# MySQL connection (skipped in test run)
if optval.has_key('-t'):
print "Test Run"
else:
try:
connection = MySQLdb.connect(host=MYSQLHOST, user=MYSQLUSER,
db=MYSQLDB, passwd=MYSQLPASSWORD)
except MySQLdb.MySQLError, e:
print "Database connection error"
print e
sys.exit(1)
cursor = connection.cursor()
#
# Main body
#
NOW = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# read and convert CSV data
lista = csv.DictReader(open(args[0]))
def gen_seed(seed_len, chars):
return '$1$'+''.join([random.choice(chars) for _ in xrange(seed_len)])+'$'
def insert_record(cursor,table,record):
columns = record.keys()
query = "INSERT INTO " + table + "(" + ','.join(columns) + ") VALUES (" + ','.join(len(columns)*['%s']) + ")"
try:
cursor.execute(query, record.values())
return 0
except MySQLdb.MySQLError, e:
print "Database insertion error"
print e
print "Record was:"
print record.values()
print "Query was:"
print query
# defining default values for tables (mailbox, alias and domain)
mailbox = {
'created': NOW,
'modified': NOW,
'active': 1,
'quota': quota
}
aliases = {
'created': NOW,
'modified': NOW,
'active': 1
}
domain = {
'description': "",
'aliases': 0,
'mailboxes': 0,
'quota': 0,
'transport': 'virtual',
'backupmx': 0,
'created': NOW,
'modified': NOW,
'active': 1
}
# list of default alias
def_alias = ['abuse','hostmaster','postmaster','webmaster']
domain_list = {}
chars = string.letters + string.digits
# loop over the CSV
for row in lista:
# create domain if it does not exists
if domain_list.has_key(row["domain"]):
if optval.has_key('-d'):
print "Domain " + row["domain"] + "already exixts"
else:
domain_list[row["domain"]] = 1
domain['domain'] = row["domain"]
if optval.has_key('-t'):
print "Inserting domain"
print domain
else:
insert_record(cursor,'domain',domain)
if optval.has_key('-A'):
for i in def_alias:
aliases['address']= i+'@'+row["domain"]
aliases['goto']= aliases['address']
aliases['domain'] = row["domain"]
if optval.has_key('-t'):
print "Inserting alias"
print aliases
else:
insert_record(cursor,'alias',aliases)
# build query data for mailbox table
mailbox['username']=row["user"]+'@'+row["domain"]
encpass=crypt(row["password"], gen_seed(seed_len,chars))
mailbox['password'] = encpass
mailbox['name'] = row["name"]
mailbox['maildir'] = row["domain"]+'/'+row["user"]+'/'
mailbox['local_part'] =row["user"]
mailbox['domain'] = row["domain"]
# build query data for alias table
aliases['address']= mailbox['username']
aliases['goto']= mailbox['username']
aliases['domain'] = row["domain"]
# inserting data for mailbox (and relate alias)
if optval.has_key('-t'):
print "Inserting mailbox"
print mailbox
print aliases
else:
insert_record(cursor,'mailbox',mailbox)
insert_record(cursor,'alias',aliases)
sys.exit(0)

@ -0,0 +1,39 @@
Installing the postfixadmin Plugin
======================================
Requirements:
=============
- PHP 5.2.x with php5-xmlrpc installed (if available; it should be available by default anyway)
- http access to a local/remote postfixadmin interface
- Zend Framework - download from http://framework.zend.com
- the Zend directory needs to be in PHP's include_path, or in the same directory
as the plugin. Suggested version 1.10; older versions should work.
Installation :
==============
- Check out this code (svn co http://squirrelmail-postfixadmin.palepurple.co.uk/svn/trunk postfixadmin)
into the Squirrelmail plugins directory.
- Edit config.php and specify the remote URL for the Postfixadmin XmlRpc service. There isn't much more to change.
- Edit the remote Postfixadmin's XmlRpc service config file and ensure 'xmlrpc_enable' is set to boolean true.
- Enable the plugin through 'squirrelmail-configure' or 'config/conf.pl'.
Choose option 8 and move the plugin from the "Available Plugins"
category to the "Installed Plugins" category. Save and exit.
Security :
==========
- The XmlRpc client needs to get the user's mailbox password before it will be able to connect to the
XmlRpc server (postfixadmin). The plugin prompts the user for their mailbox password, and caches it in their session
($_SESSION['password']). This password is then sent once on every page load to the remote XmlRpc server.
- You should consider doing any of the following :
- Using https if the server and client are on seperate servers. This will probably require a signed certificate etc, and may require changes to the Zend_XmlRpc_Client's HttpClient.
- Using something like stunnel to encrypt traffic between server(s).

@ -0,0 +1,40 @@
2007/03/29 :
Before I (David Goodwin) customised this plugin, it contained the following within all
files as a header.
/****************************************************************************************
Author ......... Florian Kimmerl
Contact ........ info@spacekoeln.de
Home Site ...... http://www.spacekoeln.de/
Program ........ postfixadmin
Purpose ........ Allows you to change your postfixadmin settings within squirrelmail
*************************************************************************************
The Original Code is Postfix Admin.
The Initial Developer of the Original Code is Mischa Peters .
Portions created by Mischa Peters are Copyright (c) 2002, 2003, 2004.
All Rights Reserved.
Contributor(s):
This project includes work by Mischa Peters and others that is:
Copyright (c) 2002,2003,2004 Mischa Peters
All rights reserved.
****************************************************************************************/
Contacting the author provided no success, so I took over maintainership.
Please note:
1) Changes made by myself (David Goodwin) will be licensed under the GPL
2) PostfixAdmin has itself been relicensed under the GPL; however this took place _after_
this plugin was written.
3) Squirrelmail itself is released under http://squirrelmail.org/wiki/SquirrelMailGPL (GPL)
The GNU public license can be found online at :
http://www.gnu.org/licenses/gpl.txt

@ -0,0 +1,70 @@
Squirrelmail Plugin Postfixadmin
********************************
The Postfixadmin SquirrelMail plugin let users change their virtual alias,
vacation status/message and password if you are using the great postfixadmin
tool from http://high5.net/postfixadmin
Version 0.4.3 2007/08/14
Postfixadmin - Postfixadmin+MySQL/PgSQL plugin for Squirrelmail
Author: Florian Kimmerl <info@spacekoeln.de>
Author: Sam Brookes <sam at pale purple.co.uk>
- Initial conversion to MDB2
- Fix SQL Injections etc
Author: David Goodwin <david at pale purple.co.uk>
- Subsequent tidyup + testing etc
Author: Krzysztof 'Mad Max' Laska - <madmax at riders.pl>
- Polish Translation.
The Initial Developer of the Original postfixadmin Code is Mischa Peters.
Portions created by Mischa Peters are Copyright (c) 2002, 2003, 2004.
All Rights Reserved.
REQUIREMENTS
o SquirrelMail 1.4x
o A working Mail-System "Virtual Domains and Users with postfix+Courier-IMAP+MySQL" (or PostgreSQL) See http://high5.net/howto/
o POSTFIXADMIN version 2.2.0 or higher. See http://sf.net/projects/postfixadmin
o This plugin only uses the postfixadmin database
o Pear MDB2 database abstraction layer - see http://pear.php.net
o PHP installation with register globals TURNED OFF (huraren on IRC reports that the MDB2 driver isn't happy with it turned on)
INSTALLATION
See the included file INSTALL
BUGS
o Probably vulnerable to cross site scripting, certainly when setting the vacation message.
o There may be some remaining SQL injection holes.
TODO
-Code Cleanup
-Tranlation
TRANSLATIONS
Translations are welcome! Send the *.po-File to: david@NO.codepoets.SPAM.co.uk
ACKNOWLEDGMENTS
Thanks to the SquirrelMail team for building such a great app and
for all the work they do to keep it running.
Thanks to high5.net for writing the great Postfixadmin tool

@ -0,0 +1,39 @@
<?php
// vim:ts=4:sw=4:et
ini_set('include_path', get_include_path() . ':' . dirname(__FILE__));
chdir("..");
if (!defined('SM_PATH'))
{
define('SM_PATH','../');
}
include_once(SM_PATH . 'plugins/postfixadmin/config.php');
include_once(SM_PATH . 'plugins/postfixadmin/functions.inc.php');
include_if_exists(SM_PATH . 'include/validate.php');
if (file_exists(SM_PATH . 'include/validate.php'))
{
include_once(SM_PATH . 'include/validate.php');
}
else {
include_if_exists(SM_PATH . 'src/validate.php');
}
include_once(SM_PATH . 'functions/page_header.php');
include_once(SM_PATH . 'functions/display_messages.php');
include_once(SM_PATH . 'functions/imap.php');
include_if_exists(SM_PATH . 'functions/array.php');
if (file_exists(SM_PATH . 'src/load_prefs.php'))
{
include_once(SM_PATH . 'src/load_prefs.php');
}
else {
include_if_exists(SM_PATH . 'include/load_prefs.php');
}
// overwrite squirrelmail's content type to utf8...
header("Content-Type: text/html; charset=utf8");
//global $VACCONFMESSAGE;
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');

@ -0,0 +1,22 @@
<?php
$CONF = array();
$CONF['xmlrpc_url'] = 'http://postfixadmin.local/postfixadmin/xmlrpc.php';
// Virtual Vacation
// If you use virtual vacation for you mailbox users set this to 'true'.
// NOTE: Make sure that you install the vacation module!!
//$AllowVacation = true; // true or false
global $AllowVacation;
$AllowVacation = true;
// Change Password
// Enables user to change the POP3/IMAP Password.
//$AllowChangePass = true; // true or false
global $AllowChangePass;
$AllowChangePass = true;
// Minimum password length - set to Zero to not care, otherwise the number of
// characters a password must be longer than.
$CONF['min_password_length'] = 5;

@ -0,0 +1,20 @@
Squirrelmail PostfixAdmin Plugin for Debian
===========================================
After installing the package, you will need to :
1) Edit the config.inc.php file to point to the PostfixAdmin server.
2) Ensure the xmlrpc interface is available and enabled on the Postfixadmin server
3) Run the squirrelmail-configure script.
Where to get help
=================
See http://squirrelmail-postfixadmin.palepurple.co.uk
Try also : david [at] pale purple dot co dot uk
Or #postfixadmin on irc.freenode.net might be a good bet.

@ -0,0 +1,27 @@
squirrelmail-postfixadmin (2.3.0) stable; urgency=low
* Using XMLRPC backend (no SQL here)
-- David Goodwin <david.goodwin@palepurple.co.uk> Mon, 01 Feb 2010 09:56:00 +0000
squirrelmail-postfixadmin (2.2.0) stable; urgency=low
* Changed DB backend to use prepared statements
* Changed vacation handling to match that of Postfixadmin (vacation.active
etc)
* Changed vacation page to support UTF8
-- David Goodwin <david.goodwin@palepurple.co.uk> Wed, 20 Aug 2008 15:25:00 +0000
squirrelmail-postfixadmin (2.1.1-1) stable; urgency=low
* Add NL language support
* Better db error logging (e.g. if wrong mdb2 driver specified etc)
-- David Goodwin <david.goodwin@palepurple.co.uk> Wed, 12 Dec 2007 16:00:00 +0000
squirrelmail-postfixadmin (2.1.0-1) stable; urgency=low
* Initial release.
-- David Goodwin <david.goodwin@palepurple.co.uk> Thu, 8 Nov 2007 20:00:00 +0000

@ -0,0 +1 @@
/etc/squirrelmail/plugins/postfixadmin-config.php

@ -0,0 +1,19 @@
Source: squirrelmail-postfixadmin
Section: mail
Priority: optional
Maintainer: David Goodwin <david.goodwin@palepurple.co.uk>
Standards-Version: 3.6.1
Package: squirrelmail-postfixadmin
Architecture: all
Depends: squirrelmail, php-pear
Suggests: postfixadmin
Description: Plugin for Squirrelmail to integrate with Postfixadmin
Postfixadmin is a web based interface for managing mail domains
and users. This package integrates Squirrelmail with it.
Users can change their password, forwarding and vacation settings
from within Squirrelmail when this package is installed, and
enabled through the ./squirrelmail-configure command.
.
For further information see
http://squirrelmail-postfixadmin.palepurple.co.uk

@ -0,0 +1,11 @@
This package was debianized by David Goodwin <david@palepurple.co.uk>
2007/11/08
It was downloaded from: http://squirremail-postfixadmin.palepurple.co.uk
Upstream Author(s): n/a
Copyright:
Copyright (C) 2007+ by David Goodwin <david@palepurple.co.uk>
License: GPL v2+

@ -0,0 +1,4 @@
LICENSE.txt
README
INSTALL
debian/README.Debian

@ -0,0 +1 @@
squirrelmail-postfixadmin_2.2.0_all.deb mail optional

@ -0,0 +1,3 @@
usr/share/squirrelmail/plugins/postfixadmin
usr/share/doc/squirrelmail-postfixadmin
etc/squirrelmail/plugins

@ -0,0 +1,5 @@
#!/bin/sh
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
echo "WARNING: You need to read /usr/share/doc/squirrelmail-postfixadmin/README.Debian!"
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

@ -0,0 +1,56 @@
#!/usr/bin/make -f
# debian/rules makefile for squirrelmail
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
build: build-stamp
build-stamp:
dh_testdir
clean:
dh_testdir
dh_testroot
dh_clean
install: build
$(checkdir)
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
dh_install
mkdir -p debian/tmp/usr/share/squirrelmail/plugins/postfixadmin
cp -a *.php version debian/tmp/usr/share/squirrelmail/plugins/postfixadmin
cp -a locale debian/tmp/usr/share/squirrelmail/plugins/postfixadmin
cp -a po debian/tmp/usr/share/squirrelmail/plugins/postfixadmin
mkdir -p debian/tmp/etc/squirrelmail/plugins/
cp -a *.sample debian/tmp/etc/squirrelmail/plugins/postfixadmin-config.php
mkdir -p debian/tmp/DEBIAN
cp debian/postinst debian/tmp/DEBIAN/postinst
chmod 555 debian/tmp/DEBIAN/postinst
ln -s /etc/squirrelmail/plugins/postfixadmin-config.php debian/tmp/usr/share/squirrelmail/plugins/postfixadmin/config.php
find debian/tmp -name .svn | xargs -r rm -r
# Build architecture-independent files here.
binary-indep: build install
dh_testdir
dh_testroot
dh_installdebconf
dh_installdocs -X.svn
dh_installexamples
dh_installman
dh_installcron
dh_link
dh_compress
dh_fixperms -X/var
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
# Build architecture-dependent files here.
binary-arch:
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

@ -0,0 +1,102 @@
<?php
/**
* Postfixadmin (http://postfixadmin.sf.net) integration with Squirrelmail.
* See http://squirrelmail-postfixadmin.palepurple.co.uk
* @author David Goodwin and many others
*/
function do_header() {
global $color;
displayPageHeader($color, 'None');
}
function do_footer() {
echo "</body></html>";
}
function _display_password_form() {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
do_header('Postfixadmin Squirrelmail - Login');
echo _('The PostfixAdmin plugin needs your current mailbox password');
echo "<form action='' method='post'>";
echo _('Password for');
echo " " . $_SESSION['username'] . " :";
echo "<input type='password' name='password' value=''>";
echo "<input type='submit' value='" . _('Submit') . "'></form>";
do_footer();
}
/**
* This returns a Zend_XmlRpc_Client instance - unless we can't log you in...
*/
function get_xmlrpc() {
global $CONF;
require_once('Zend/XmlRpc/Client.php');
$client = new Zend_XmlRpc_Client($CONF['xmlrpc_url']);
$http_client = $client->getHttpClient();
$http_client->setCookieJar();
$login_object = $client->getProxy('login');
if(empty($_SESSION['password'])) {
if(empty($_POST['password'])) {
_display_password_form();
exit(0);
}
else {
try {
$success = $login_object->login($_SESSION['username'], $_POST['password']);
}
catch(Exception $e) {
//var_dump($client->getHttpClient()->getLastResponse()->getBody());
error_log("Failed to login to xmlrpc instance - " . $e->getMessage);
die('Failed to login to xmlrpc instance');
}
if($success) {
$_SESSION['password'] = $_POST['password'];
// reload the current page as a GET request.
header("Location: {$_SERVER['REQUEST_URI']}");
exit(0);
}
else {
_display_password_form();
exit(0);
}
}
}
else {
$success = $login_object->login($_SESSION['username'], $_SESSION['password']);
}
if(!$success) {
unset($_SESSION['password']);
die("Invalid details cached... refresh this page and re-enter your mailbox password");
}
return $client;
}
function include_if_exists($filename) {
if(file_exists($filename)) {
include_once($filename);
}
return;
}
global $optmode;
$optmode = 'display';
//
// check_email
// Action: Checks if email is valid and returns TRUE if this is the case.
// Call: check_email (string email)
//
function check_email ($email) {
$return = filter_var('validate_email', $email);
if($return === false) {
return false;
}
return true;
}

@ -0,0 +1,27 @@
<?php
/****************************************************************************************
Author ......... Florian Kimmerl
Contact ........ info@spacekoeln.de
Home Site ...... http://www.spacekoeln.de/
Program ........ postfixadmin
Version ........ 0.3-1.4
Purpose ........ Allows you to change your postfixadmin settings within squirrelmail
/**
* index.php
*
* Copyright (c) 1999-2003 The SquirrelMail Project Team
* Licensed under the GNU GPL. For full terms see the file COPYING.
*
* This file simply takes any attempt to view source files and sends those
* people to the login screen. At this point no attempt is made to see if
* the person is logged or not.
*
*
****************************************************************************************/
header("Location: ../../index.php");
?>

@ -0,0 +1,6 @@
#!/bin/bash
for f in $(find . -name postfixadmin.po)
do
msgfmt -o $(dirname $f)/postfixadmin.mo $f
done

@ -0,0 +1,132 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2004-01-29 17:35+0100\n"
"PO-Revision-Date: 2007-07-20 20:46+0100\n"
"Last-Translator: Michael Heca <michael.heca@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr "Pøesmìrování"
msgid "Here you can create and edit E-Mail forwards."
msgstr "Zde mù¾ete vytvoøit a nastavit pøesmìrování"
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr "Zde mù¾ete nastavit automatickou odpovìd, pokud nebudete k zasti¾ení."
msgid "Change your mailbox password."
msgstr "Zmìnít heslo k Va¹emu e-mailovému úètu"
#: postfixadmin_changepass.php
msgid "Alias"
msgstr "Úèet"
msgid "Change Password"
msgstr "Zmìnit heslo"
msgid "Change your login password"
msgstr "Zmìnít heslo k Va¹emu e-mailovému úètu"
#: postfixadmin_forward.php
msgid "Edit Alias"
msgstr "Editace adresy pro pøesmìrování"
msgid "Edit an alias* for your domain.<br />One entry per line."
msgstr "Editace pøesmìrování pro Vá¹ úèet. <br/> Ka¾dá adresa na novém øádku."
msgid "The email address that you have entered is not valid:"
msgstr "Zadaná e-mailová adresa je chybná:"
msgid "Unable to locate alias!"
msgstr "Neni mo¾né nalézt úèet!"
msgid "Unable to modify the alias!"
msgstr "Není mo¾né zmìnit úèet!"
msgid "*Additional forward-aliase always recieve messages BBC!"
msgstr "Dal¹í aliasy dostanou e-mail jako BBC!"
msgid "Alias successfully changend!"
msgstr "Pøesmìrování bylo zmìnìno!"
msgid "To remove an alias, simply delete it's line from the text box."
msgstr "Pro odstranení pøesmìrování sma¾te v¹echny øádky v textovém boxu."
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Automatická odpovìï"
msgid "Going Away"
msgstr "Jsem mimo"
msgid "Coming Back"
msgstr "Jsem zpìt"
msgid "Options"
msgstr "Nastavení"
msgid "Out of Office"
msgstr "Mimo kanceláø"
msgid "Subject"
msgstr "Pøedmìt"
msgid "Body"
msgstr "Tìlo mailu"
msgid "Your auto response has been removed!"
msgstr "Va¹e automatická odpovìï byla odstranìna!"
msgid "Your auto response has been set!"
msgstr "Va¹e automatická odpovìï byla nastavena!"
msgid "You already have an auto response configured!"
msgstr "U¾ máte nastavenu automatickou odpovìï!"
#: postfixadmin_changepass.php:81
#: postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "Zadaná hesla nejsou stejná a nebo jsou prázdná!"
#: postfixadmin_forward.php:70
#: postfixadmin_forward.php:152
msgid "To"
msgstr "Komu"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Není mo¾né zmìnit heslo!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Stávající heslo neodpovídá!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "Va¹e heslo bylo zmìnìno!"
msgid "Password current"
msgstr "Stávající heslo"
msgid "Password new"
msgstr "Nové heslo"
msgid "Password new again"
msgstr "Nové heslo znovu"
msgid "Please sign out and log back again with your new password!"
msgstr "Prosím odhla¹te se a pøihla¹te se s novým heslem!"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Nebudy k zasti¾ení od <date> do <date>. Pro naléhané po¾adavky prosím kontaktujte <contact person>."

@ -0,0 +1,127 @@
# Danish translation for Squirrelmail Plugin Postfixadmin.
# Copyright (C) 2004 Florian Kimmerl, 2007 David Goodwin
# This file is distributed under the same license as the Squirrelmail Plugin Postfixadmin package.
# Jesper R. Meyer <jrm@upthere.dk>, 2007.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 0.4.3\n"
"POT-Creation-Date: 2004-01-29 17:35+0100\n"
"PO-Revision-Date: 2007-11-09 16:07+0100\n"
"Last-Translator: JESPER MEYER <jrm@upthere.dk>\n"
"Language-Team: DANISH <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr "Videresending"
msgid "Here you can create and edit E-Mail forwards."
msgstr "Her kan du oprette og ændre email-videresendinger."
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr "Tilføj en 'ikke tilstede' besked eller et autosvar til din emailadresse."
msgid "Change your mailbox password."
msgstr "Ændre adgangskoden til din postboks"
#: postfixadmin_changepass.php
msgid "Alias"
msgstr "Alias"
msgid "Change Password"
msgstr "Ændre adgangskode"
msgid "Change your login password"
msgstr "Ændre din login-adgangskode"
#: postfixadmin_forward.php
msgid "Edit Alias"
msgstr "Rediger alias"
msgid "Edit an alias* for your domain.<br />One entry per line."
msgstr "Rediger et alias* for dit domæne.<br />En modtager pr. linje."
msgid "The email address that you have entered is not valid:"
msgstr "Emailadressen du angav er ugyldig"
msgid "Unable to locate alias!"
msgstr "Aliaset eksistere ikke!"
msgid "Unable to modify the alias!"
msgstr "Kunne ikke ændre aliaset!"
msgid "*Additional forward-aliase always recieve messages BBC!"
msgstr "*Eksta vidersendingsalias modtager altid meddelelser BCC!"
msgid "Alias successfully changend!"
msgstr "Alias ændret!"
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Autosvar"
msgid "Going Away"
msgstr "Tager afsted"
msgid "Coming Back"
msgstr "Kommer tilbage"
msgid "Options"
msgstr "Indstillinger"
msgid "Out of Office"
msgstr "Ikke tilstede"
msgid "Subject"
msgstr "Emne"
msgid "Body"
msgstr "Meddelelse"
msgid "Your auto response has been removed!"
msgstr "Autosvar er fjernet!"
msgid "Your auto response has been set!"
msgstr "Autosvar er aktiveret!"
msgid "You already have an auto response configured!"
msgstr "Du har allerede et autosvar indstillet!"
#: postfixadmin_changepass.php:81 postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "Adgangskoderne er ikke ens!<br />Eller er tomme!"
#: postfixadmin_forward.php:70 postfixadmin_forward.php:152
msgid "To"
msgstr "Til"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Kan ikke ændre adgangskoden!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Du glemte at skrive din nuværende adgangskode!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "Din adgangskode er ændret!"
msgid "Password current"
msgstr "Nuværende adgangskode"
msgid "Password new"
msgstr "Ny adgangskode"
msgid "Password new again"
msgstr "Ny adgangskode (igen)"
msgid "Please sign out and log back again with your new password!"
msgstr "Log af og log ind igen med din nye adgangskode!"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Jeg er ikke tilstede i perioden <dato> til <dato>. I nødstilfælde kan <kontaktperson> kontaktes."

@ -0,0 +1,127 @@
# postfixadmin - Plugin for Squirrelmail.
# Copyright (C) 2004 FLORIAN KIMMERL
# This file is distributed under the same license as the PACKAGE package.
# Florian Kimmerl <info@spacekoeln.de>, 2004.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 0.3-1.4\n"
"POT-Creation-Date: 2004-01-28 16:32+0100\n"
"PO-Revision-Date: 2004-01-28 16:32+0100\n"
"Last-Translator: FLORIAN KIMMERL <info@spacekoeln.de>\n"
"Language-Team: GERMAN <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr "Weiterleitungen"
msgid "Here you can create and edit E-Mail forwards."
msgstr "Hier können Sie E-Mail-Weiterleitungen erstellen und bearbeiten."
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr "Hier können Sie den Abwesenheits-Assistenten konfigurieren."
msgid "Change your mailbox password."
msgstr "Hier können Sie Passwort ändern. Nach der Änderung müssen Sie sich neu anmelden!"
#: postfixadmin_changepass.php
msgid "Alias"
msgstr "E-Mail"
msgid "Change Password"
msgstr "Passwort ändern"
msgid "Change your login password"
msgstr "Ändern Sie Ihr Zugangspasswort für POP3/IMAP"
#: postfixadmin_forward.php
msgid "Edit Alias"
msgstr "E-Mail Weiterleitungen bearbeiten"
msgid "Edit an alias* for your domain.<br />One entry per line."
msgstr "Bearbeiten Sie hier Ihre E-Mail Weiterleitungen*.<br />Ein Eintrag pro Zeile."
msgid "The email address that you have entered is not valid:"
msgstr "Die angegebene E-Mail-Adresse ist ungültig:"
msgid "Unable to locate alias!"
msgstr "Ihre Weiterleitungen können nicht angefordert werden! Versuchen Sie es später erneut."
msgid "Unable to modify the alias!"
msgstr "Ihre Weiterleitungen können nicht modifiziert werden! Versuchen Sie es später erneut."
msgid "*Additional forward-aliase always recieve messages BBC!"
msgstr "*Zusätzliche Weiterleitungen erhalten alle Nachrichten als Kopie (BCC)!"
msgid "Alias successfully changend!"
msgstr "Weiterleitungen wurden erfolgreich geändert!"
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Abwesenheits-Assistent"
msgid "Going Away"
msgstr "Ich bin weg"
msgid "Coming Back"
msgstr "Ich bin zurück"
msgid "Options"
msgstr "Optionen"
msgid "Out of Office"
msgstr ""
msgid "Subject"
msgstr "Betreff"
msgid "Body"
msgstr "Nachrichtentext"
msgid "Your auto response has been removed!"
msgstr "Iher Abwesenheits-Nachricht wurde deaktiviert!"
msgid "Your auto response has been set!"
msgstr "Ihre Abwesenheits-Nachricht wurde aktiviert!"
msgid "You already have an auto response configured!"
msgstr "Ihre Abwesenheits-Nachricht ist bereits aktiviert!"
msgid "back"
msgstr "zurück"
#: postfixadmin_changepass.php:81 postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "Die beiden neuen Passwörter stimmen nicht überein!<br />Oder die Felder wurden nicht ausgefüllt!"
#: postfixadmin_forward.php:70 postfixadmin_forward.php:152
msgid "To"
msgstr "An"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Ihr Passwort kann nicht geändert werden!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Ihr aktuelles Passwort wurde nicht angegeben oder ist falsch!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "Ihr Passwort wurde ergolgreich geändert!"
msgid "Password current"
msgstr "Passwort aktuell"
msgid "Password new"
msgstr "Passwort neu"
msgid "Password new again"
msgstr "Passwort neu nochmal"
msgid "Please sign out and log back again with your new password!"
msgstr "Bitte melden Sie sich hier ab und loggen sich mit Ihrem neuen Passwort erneut ein! "

@ -0,0 +1,135 @@
# postfixadmin - Plugin for Squirrelmail.
# Copyright (C) 2004 FLORIAN KIMMERL
# This file is distributed under the same license as the PACKAGE package.
# Florian Kimmerl <info@spacekoeln.de>, 2004.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 0.3-1.4\n"
"POT-Creation-Date: 2004-01-28 16:32+0100\n"
"PO-Revision-Date: 2004-01-28 16:32+0100\n"
"Last-Translator: FLORIAN KIMMERL <info@spacekoeln.de>\n"
"Language-Team: HUNGARIAN <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr "Levéltovábbítás"
msgid "Here you can create and edit E-Mail forwards."
msgstr "Itt tudod létrehozni és szerkeszteni az E-mail továbbításokat."
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr "Itt lehet beállítani az automatikus válasz levél szövegét, ha az ember távol van."
msgid "Change your mailbox password."
msgstr "Itt tudod megváltoztatni a belépéshez szükséges jelszót."
#: postfixadmin_changepass.php
msgid "Alias"
msgstr "E-mail"
msgid "Change Password"
msgstr "Jelszó megváltoztatása"
msgid "Change your login password"
msgstr "Bejelentkezési jelszó megváltoztatása"
#: postfixadmin_forward.php
msgid "Edit Forward"
msgstr "Levéltovábbítás szerkesztése"
msgid "Edit Alias"
msgstr "Levéltovábbítás szerkesztése"
msgid "The email address that you have entered is not valid:"
msgstr "Az E-mail cím amit beírtál hibás:"
msgid "Unable to locate alias!"
msgstr "Hiba az e-mail címmel."
msgid "Unable to modify the alias!"
msgstr "A módosítás sikertelen!"
msgid "Alias successfully changed!"
msgstr "A módosítás sikeres!"
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Automatikus válasz"
msgid "Going Away"
msgstr "Házonkívül vagyok"
msgid "Coming Back"
msgstr "Visszajöttem"
msgid "Options"
msgstr "Opciók"
msgid "Out of Office"
msgstr "Házonkívül"
msgid "Subject"
msgstr "Tárgy"
msgid "Body"
msgstr "Levéltörzs"
msgid "Your auto response has been removed!"
msgstr "Az automatikus válasz törölve lett!"
msgid "Your auto response has been set!"
msgstr "Az automatikus válasz be lett állítva!"
msgid "You already have an auto response configured!"
msgstr "Már létezik egy automatikus válasz!"
#: postfixadmin_changepass.php:81 postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "A jelszavak nem egyeznek!<br />Vagy üresen hagytad a mezõket!"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "A jelszó megváltoztatása sikertelen!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Az aktuális jelszó nem megfelelõ!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "A jelszó változtatása sikeres volt!"
msgid "Password current"
msgstr "Aktuális jelszó"
msgid "Password new"
msgstr "Új jelszó"
msgid "Password new again"
msgstr "Új jelszó mégegyszer"
msgid "Please sign out and log back again with your new password!"
msgstr "Kérjük, jelentkezzen ki, majd újra be az új jelszavával!"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Házonkívül leszek <date> és <date> között. Sürgõs esetben értesítendõ: <contact person>."
msgid "One copy always goes to"
msgstr "Egy másolat mindig ide"
msgid "Another copy also goes to"
msgstr "További másolatok ide"
msgid "Enter an email address (or addresses) where you would like an additional copy of messages addressed to you sent.<br> Enter only one address per line."
msgstr "Sorolja fel azokat az e-mail címeket, amelyekre az Önhöz érkezõ leveleket továbbítani szeretné.<br>Soronként csak egy címet adjon meg!"
msgid "A copy of each message will go to both your mailbox and the forwarded address(es)."
msgstr "Minden Önnek címzett levél meg fog érkezni a saját postafiókjába és a továbbított e-mail címekre is."
msgid "To remove a Forward, simply delete its line from the text box."
msgstr "Ahhoz, hogy töröljön egy továbbítást, ki kell törölnie az adott sort a felsorolásból."

@ -0,0 +1,129 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2004-01-29 17:35+0100\n"
"PO-Revision-Date: 2010-02-19 11:30+0100\n"
"Last-Translator: valentina <ruggiolona@tiscali.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr "Inoltro E-MAIL"
msgid "Here you can create and edit E-Mail forwards."
msgstr "Qui puoi creare e modificare l'inoltro dell' E-MAIL."
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr "Imposta un messaggio OUT OF OFFICE / ASSENTE o un risponditore automatico per la tua mail."
msgid "Change your mailbox password."
msgstr "Modifica la tua password di accesso alla mail"
#: postfixadmin_changepass.php
msgid "Alias"
msgstr "Alias"
msgid "Change Password"
msgstr "Modifica password"
msgid "Change your login password"
msgstr "Modifica la tua password di accesso"
#: postfixadmin_forward.php
msgid "Edit Alias"
msgstr "Modifica Alias"
msgid "Edit an alias* for your domain.<br />One entry per line."
msgstr "Modifica un Alias per il tuo dominio.<br />Un record per linea."
msgid "The email address that you have entered is not valid:"
msgstr "L'indirizzo email che hai inserito non è corretto:"
msgid "Unable to locate alias!"
msgstr "Impossibile trovare l'alias!"
msgid "Unable to modify the alias!"
msgstr "Impossibile modificare l'alias!"
msgid "*Additional forward-aliase always recieve messages BBC!"
msgstr "* L'inoltro ad un alias aggiuntivo comporta l'invio del messaggio in BCC!"
msgid "Alias successfully changend!"
msgstr "Alias modificato correttamente!"
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Risponditore automatico"
msgid "Going Away"
msgstr "Going Away"
msgid "Coming Back"
msgstr "Coming Back"
msgid "Options"
msgstr "Opzioni"
msgid "Out of Office"
msgstr "Out of Office/Assente"
msgid "Subject"
msgstr "Oggetto"
msgid "Body"
msgstr "Messaggio"
msgid "Your auto response has been removed!"
msgstr "Il risponditore automatico è stato disattivato!"
msgid "Your auto response has been set!"
msgstr "Il risponditore automatico è stato configurato!"
msgid "You already have an auto response configured!"
msgstr "Hai gia configurato il risponditore automatico !"
#: postfixadmin_changepass.php:81
#: postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "Le password inserite non coincidono!<br />O i campi sono vuoti!"
#: postfixadmin_forward.php:70
#: postfixadmin_forward.php:152
msgid "To"
msgstr "A"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Impossibile modificare la password"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Non hai indicato la password attuale!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "La tua password è stata modificata!"
msgid "Password current"
msgstr "Password attuale"
msgid "Password new"
msgstr "Nuova password"
msgid "Password new again"
msgstr "Insierisci nuovamente la nuova password"
msgid "Please sign out and log back again with your new password!"
msgstr "Per favore fai log out e riaccedi alla tua mail con la nuova password!"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Mi dispiace sarò assente dal <date> al <date>. Per richieste urgenti vi prego di contattare <nome e indirizzo email>. I will be away from <date> until <date>. For urgent matters you can contact <contact person>."

@ -0,0 +1,131 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: postfixadmin-squirrelmail 2.1.0\n"
"POT-Creation-Date: 2007-11-16 17:35+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Johan <johan@double-l.nl>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr "Doorsturen"
msgid "Here you can create and edit E-Mail forwards."
msgstr "Hier kunt u uw doorstuur adres bewerken"
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr "Configureer hier uw automatisch beantwoorden"
msgid "Change your mailbox password."
msgstr "Verander uw wachtwoord"
#: postfixadmin_changepass.php
msgid "Alias"
msgstr "Alias"
msgid "Change Password"
msgstr "Verander wachtwoord"
msgid "Change your login password"
msgstr "Verander uw login wachtwoord"
#: postfixadmin_forward.php
msgid "Edit Forwards"
msgstr "Bewerk aliassen"
msgid "Edit an alias* for your email address.<br />One entry per line."
msgstr "Bewerk uw alias(sen) voor uw emailadres.<br />1 alias per regel."
msgid "The email address that you have entered is not valid:"
msgstr "Het ingevoerde adres is geen geldig adres"
msgid "Unable to locate alias!"
msgstr "Niet in staat opgeven alias te vinden!"
msgid "Unable to modify the alias!"
msgstr "Niet in staat de alias aan te passen"
msgid "*Additional forward-aliases always receive messages BBC!"
msgstr "Aliassen ontvangen altijd per BCC! "
msgid "To remove an alias, simply delete its line from the text box."
msgstr "Verwijder de regel om de alias(sen) te verwijderen."
msgid "Alias successfully changed!"
msgstr "Alias succesvol aangepast"
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Automatisch beantwoorden"
msgid "Going Away"
msgstr "Ik ben weg, schakel Out of Office IN"
msgid "Coming Back"
msgstr "Ik ben terug, schakel Out of Office UIT"
msgid "Options"
msgstr "Opties"
msgid "Out of Office"
msgstr "Out of office"
msgid "Subject"
msgstr "Onderwerp"
msgid "Body"
msgstr "Tekst"
msgid "Your auto response has been removed!"
msgstr "Uw automatisch beantwoorden is verwijderd!"
msgid "Your auto response has been set!"
msgstr "Uw automatisch beantwoorden is geactiveerd!"
msgid "You already have an auto response configured!"
msgstr "Automatisch beantwoorden is al geconfigureerd!"
#: postfixadmin_changepass.php:81 postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "De wachtwoorden komen niet overeen!<br />Of er is geen wachtwoord opgegeven!"
#: postfixadmin_forward.php:70 postfixadmin_forward.php:152
msgid "To"
msgstr "Aan"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Niet in staat uw wachtwoord te wijzigen!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "U moet uw huidige wachtwoord opgeven!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "Uw wachtwoord is gewijzigd!"
msgid "Password current"
msgstr "Huidig wachtwoord"
msgid "Password new"
msgstr "Nieuw wachtwoord"
msgid "Password new again"
msgstr "Nieuw wachtwoord nogmaals"
msgid "Please sign out and log back again with your new password!"
msgstr "Log uit en opnieuw in met het nieuwe wachtwoord"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Ik ben niet aanwezig van <datum> tot <datum>. Voor dringende zaken kunt u contact opnemen met <Contact persoon>."

@ -0,0 +1,132 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2004-01-29 17:35+0100\n"
"PO-Revision-Date: 2007-07-20 20:46+0100\n"
"Last-Translator: Krzysztof Laska <krzysiek@dip.pl>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr "Przekazywanie"
msgid "Here you can create and edit E-Mail forwards."
msgstr "Tutaj mo¿esz ustawiæ i edytowaæ opcje przekazywania wiadomo¶ci"
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr "Ustaw wiadomo¶æ wysy³an± nadawcom podczas Twojej nieobecno¶ci (Vacation)"
msgid "Change your mailbox password."
msgstr "Zmieñ has³o do swojego konta pocztowego"
#: postfixadmin_changepass.php
msgid "Alias"
msgstr "Konto"
msgid "Change Password"
msgstr "Zmieñ has³o"
msgid "Change your login password"
msgstr "Zmieñ has³o do swojego konta pocztowego"
#: postfixadmin_forward.php
msgid "Edit Alias"
msgstr "Edytuj adresy do przekazywania"
msgid "Edit an alias* for your domain.<br />One entry per line."
msgstr "Edytuj forward* dla swojego konta. <br/> Ka¿dy adres w nowym wierszu."
msgid "The email address that you have entered is not valid:"
msgstr "Adres e-mail jaki poda³e¶ jest niepoprawny:"
msgid "Unable to locate alias!"
msgstr "Nie mo¿na zlokalizowaæ aliasu!"
msgid "Unable to modify the alias!"
msgstr "Nie mo¿na zmodyfikowaæ aliasu!"
msgid "*Additional forward-aliase always recieve messages BBC!"
msgstr "*Wszystkie dodatkowe adresy zawsze odbieraj± wiadomo¶ci przesy³ane jako BCC! Ca³a poczta jest przekazywana i nie jest przechowywana na koncie podstawowym!"
msgid "Alias successfully changend!"
msgstr "Zmiana zachowana!"
msgid "To remove an alias, simply delete it's line from the text box."
msgstr "¯eby wy³±czyæ forward na dane konto po prostu usuñ liniê z adresem na który nie chcesz ju¿ przekazywaæ poczty."
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Autoodpowied¼"
msgid "Going Away"
msgstr "W³±cz autoodpowied¼"
msgid "Coming Back"
msgstr "Wy³±cz autoodpowied¼"
msgid "Options"
msgstr "Opcje"
msgid "Out of Office"
msgstr "Autoodpowied¼"
msgid "Subject"
msgstr "Temat"
msgid "Body"
msgstr "Tre¶æ"
msgid "Your auto response has been removed!"
msgstr "Twoja autoodpowied¼ zosta³a wy³±czona!"
msgid "Your auto response has been set!"
msgstr "Twoja autoodpowied¼ zosta³a w³±czona!"
msgid "You already have an auto response configured!"
msgstr "Masz ju¿ skonfigurowan± autoodpowied¼!"
#: postfixadmin_changepass.php:81
#: postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "Has³a które poda³e¶ nie pasuj± lub s± puste!"
#: postfixadmin_forward.php:70
#: postfixadmin_forward.php:152
msgid "To"
msgstr "Do"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Nie mo¿na zmieniæ has³a!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Nie poda³e¶ aktualnego has³a!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "Twoje has³o zosta³o zmienione!"
msgid "Password current"
msgstr "Bie¿±ce has³o"
msgid "Password new"
msgstr "Nowe has³o"
msgid "Password new again"
msgstr "Powtórz nowe has³o"
msgid "Please sign out and log back again with your new password!"
msgstr "Wyloguj siê i zaloguj z nowym has³em!"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Nie bêdê odbieraæ poczty pomiêdzy <data> a <data>. W sprawach pilnych proszê kontaktowaæ siê z <osoba kontaktowa>"

@ -0,0 +1,127 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2004-01-29 17:35+0100\n"
"PO-Revision-Date: 2008-10-16 20:30+3\n"
"Last-Translator: Julio Covolato <julio@psi.com.br>\n"
"Language-Team: BRAZILIAN PORTUGUESE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr "Encaminhar"
msgid "Here you can create and edit E-Mail forwards."
msgstr "Aqui Voc&ecirc; pode criar e editar alias."
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr "Configurar mensagem de f&eacute;rias para seu email."
msgid "Change your mailbox password."
msgstr "Troque a senha de seu email."
#: postfixadmin_changepass.php
msgid "Alias"
msgstr ""
msgid "Change Password"
msgstr "Mudar Senha"
msgid "Change your login password"
msgstr "Mude sua senha de login"
#: postfixadmin_forward.php
msgid "Edit Alias"
msgstr "Editar Alias"
msgid "Edit an alias* for your domain.<br />One entry per line."
msgstr "Editar um alias* para seu dom&iacute;nio.<br /> Uma entrada por linha."
msgid "The email address that you have entered is not valid:"
msgstr "Este endere&ccedil;o de email informado n&atilde;o &eacute; v&aacute;lido:"
msgid "Unable to locate alias!"
msgstr "Alias n&atilde;o encontrado!"
msgid "Unable to modify the alias!"
msgstr "Imposs&iacute;vel modificar o alias!"
msgid "*Additional forward-aliase always recieve messages BBC!"
msgstr "*Alias adicionais sempre recebem mensagens em BCC"
msgid "Alias successfully changend!"
msgstr "Alias alterado com sucesso!"
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Auto resposta"
msgid "Going Away"
msgstr "Ativar"
msgid "Coming Back"
msgstr "Desativar"
msgid "Options"
msgstr "Op&ccedil;&otilde;es"
msgid "Out of Office"
msgstr "Fora do escrit&oacute;rio"
msgid "Subject"
msgstr "Assunto"
msgid "Body"
msgstr "Mensagem"
msgid "Your auto response has been removed!"
msgstr "Sua auto resporta foi removida!"
msgid "Your auto response has been set!"
msgstr "Sua auto resposta foi ativada!"
msgid "You already have an auto response configured!"
msgstr "Voc&ecirc; ainda tem uma auto resposta ativa"
#: postfixadmin_changepass.php:81 postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "A senha digitada n&atilde;o confere!<br />Ou est&aacute; vazia"
#: postfixadmin_forward.php:70 postfixadmin_forward.php:152
msgid "To"
msgstr "Para"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Imposs&iacute;vel alterar a sua senha!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Voc&ecirc; n&atilde;o forneceu a sua senha atual!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "Sua senha foi alterada com sucesso!"
msgid "Password current"
msgstr "senha atual"
msgid "Password new"
msgstr "Nova senha"
msgid "Password new again"
msgstr "Confirme a nova senha"
msgid "Please sign out and log back again with your new password!"
msgstr "Por favor, saia e entre novamente no webmail com a nova senha"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Estarei fora do escrit&oacute;rio entre os dias <data> e <data> do m&ecirc;s de <m&ecirc;s>.<br /> Qualquer mensagem urgente, favor enviar para o email <email>."

@ -0,0 +1,127 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2004-01-29 17:35+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: setup.php
msgid "Forwarding"
msgstr ""
msgid "Here you can create and edit E-Mail forwards."
msgstr ""
msgid "Set an OUT OF OFFICE message or auto responder for your mail."
msgstr ""
msgid "Change your mailbox password."
msgstr ""
#: postfixadmin_changepass.php
msgid "Alias"
msgstr ""
msgid "Change Password"
msgstr ""
msgid "Change your login password"
msgstr ""
#: postfixadmin_forward.php
msgid "Edit Alias"
msgstr ""
msgid "Edit an alias* for your domain.<br />One entry per line."
msgstr ""
msgid "The email address that you have entered is not valid:"
msgstr ""
msgid "Unable to locate alias!"
msgstr ""
msgid "Unable to modify the alias!"
msgstr ""
msgid "*Additional forward-aliase always recieve messages BBC!"
msgstr ""
msgid "Alias successfully changend!"
msgstr ""
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr ""
msgid "Going Away"
msgstr ""
msgid "Coming Back"
msgstr ""
msgid "Options"
msgstr ""
msgid "Out of Office"
msgstr ""
msgid "Subject"
msgstr ""
msgid "Body"
msgstr ""
msgid "Your auto response has been removed!"
msgstr ""
msgid "Your auto response has been set!"
msgstr ""
msgid "You already have an auto response configured!"
msgstr ""
#: postfixadmin_changepass.php:81 postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr ""
#: postfixadmin_forward.php:70 postfixadmin_forward.php:152
msgid "To"
msgstr ""
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr ""
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr ""
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr ""
msgid "Password current"
msgstr ""
msgid "Password new"
msgstr ""
msgid "Password new again"
msgstr ""
msgid "Please sign out and log back again with your new password!"
msgstr ""
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr ""

@ -0,0 +1,128 @@
<?php
require_once(dirname(__FILE__) . '/common.php');
$xmlrpc = get_xmlrpc();
$user = $xmlrpc->getProxy('user');
global $username;
do_header();
$USERID_USERNAME = $username;
$tmp = preg_split ('/@/', $USERID_USERNAME);
$USERID_DOMAIN = $tmp[1];
$stMessage = '';
$tMessage = '';
$pPassword_admin_text = '';
$pPassword_password_current_text = '';
$pPassword_password_text = '';
$error = 0;
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
//$pPassword_password_text = _("pPassword_password_text");
$fPassword_current = $_POST['fPassword_current'];
$fPassword = $_POST['fPassword'];
$fPassword2 = $_POST['fPassword2'];
$username = $USERID_USERNAME;
if(!$user->login($_SESSION['username'], $_POST['fPassword_current'])) {
$error = 1;
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$pPassword_password_current_text = _("You didn't supply your current password!");
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
$min_length = 0;
if(isset($CONF['min_password_length'])) {
$min_length = $CONF['min_password_length'];
}
if (empty ($fPassword) or ($fPassword != $fPassword2) or ($min_length > 0 && strlen($fPassword) < $min_length)) {
$error = 1;
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
if(empty($fPassword)) {
$pPassword_password_text .= _("The passwords that you supplied are empty!");
}
if($fPassword != $fPassword2) {
$pPassword_password_text .= _("The passwords that you supplied don't match!");
}
if($min_length > 0 && strlen($fPassword) < $min_length) {
$pPassword_password_text .= _("The password you supplied is too short!");
}
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
if ($error != 1) {
$success = $user->changePassword($fPassword_current, $fPassword);
if ($success) {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$tMessage = _("Your password has been changed!");
$stMessage = _("Please sign out and log back again with your new password!");
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
else {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$tMessage = _("Unable to change your password!");
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
}
}
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
echo "<table bgcolor=\"$color[0]\" align=\"center\" width=\"95%\" cellpadding=\"1\" cellspacing=\"0\" border=\"0\">
<tr>
<td align=\"center\"><b>". _("Options") ." - ". _("Change Password")." </b>
<table align=\"center\" width=\"100%\" cellpadding=\"5\" cellspacing=\"0\" border=\"0\">
<tr><td bgcolor=\"$color[4]\" align=\"center\"><br>
<table align=\"center\" width=\"95%\" cellpadding=\"4\" cellspacing=\"0\" border=\"0\"><tr>
<td bgcolor=\"$color[3]\" align=\"center\"><b>" ._("Change your login password") ."\n
</b></td>
</tr>
<tr>
<td bgcolor=\"$color[0]\" align=\"center\"><form name=\"mailbox\" method=\"post\">
<b>$tMessage<b><font color=red><br>
<a href=\"../../src/signout.php\" target=\"_top\">$stMessage</a>
".$pPassword_admin_text."\n
".$pPassword_password_current_text."\n
".$pPassword_password_text."\n
</b><table width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">
<tr>
<td width=\"37%\"><b>". _("Alias") . ":\n</td>
<td width=\"63%\">{$_SESSION['username']}</td>
</tr>
<tr>
<td><b>". _("Password current"). ":\n</td>
<td><input type=\"password\" name=\"fPassword_current\" size=\"30\" /></td>
</tr>
<tr>
<td><b>". _("Password new"). ":\n</td>
<td><input type=\"password\" name=\"fPassword\" size=\"30\" /></td>
</tr>
<tr>
<td><b>". _("Password new again"). ":\n</td>
<td><input type=\"password\" name=\"fPassword2\" size=\"30\" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type=\"submit\" name=\"submit\" value=\"" ._("Change Password") . "\" /></td>
<td>&nbsp;</td>
</tr>
</table>
<TT></TT></FORM></td>
</tr><tr><td bgcolor=\"$color[4]\" align=\"left\">&nbsp;</td>
</tr></table><BR>
</td>
</tr></table></td></tr></table>";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
?>

@ -0,0 +1,161 @@
<?php
require_once(dirname(__FILE__) . '/common.php');
$USERID_USERNAME = $username;
$tmp = preg_split ('/@/', $USERID_USERNAME);
$USERID_LOCALPART = $tmp[0];
$USERID_DOMAIN = $tmp[1];
$xmlrpc = get_xmlrpc();
$alias = $xmlrpc->getProxy('alias');
do_header();
// Normal page request (GET)
if ($_SERVER['REQUEST_METHOD'] == "GET")
{
$row = $alias->get();
if($row === false) {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$tMessage = _("Unable to locate alias!");
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
exit(0);
}
}
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
$pEdit_alias_goto = _("To");
$fGoto = $_POST['fGoto'];
// reform string into a list...
$goto = preg_replace ('/\r\n/', ',', $fGoto);
$goto = preg_replace ('/[\s]+/i', '', $goto);
$goto = preg_replace ('/\,*$/', '', $goto);
$array = preg_split ('/,/', $goto);
$error = 0;
// check that we have valid addresses in the list
foreach($array as $email_address)
{
if (empty($email_address))
{
continue;
}
if (!check_email($email_address))
{
$error = 1;
$tGoto = $goto;
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$tMessage = _("The email address that you have entered is not valid:") . " $email_address</font>";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
}
if ($error != 1) {
$flag = 'forward_and_store'; // goto = $USERID_USERNAME;
$success = $alias->update($array, $flag);
if(!$success) {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$tMessage = _("Unable to modify the alias!");
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
else {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
echo "<p align=center><b>". _("Alias successfully changed!"). "\n</b></p>";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
echo "<p align=center><a href=\"javascript:history.go(-1)\">". _("Click here to go back") ."</a></p>";
exit;
}
}
}
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
echo "<table bgcolor=\"$color[0]\" align=\"center\" width=\"95%\" cellpadding=\"1\" cellspacing=\"0\" border=\"0\">
<tr>
<td align=\"center\" bgcolor=\"$color[0]\" colspan=\"2\">
<b>". _("Options") ." - ". _("Edit Alias"). " </b>
<table align=\"center\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">
<tr>
<td bgcolor=\"$color[4]\" align=\"center\">
<table align=\"center\" width=\"100%\">
<tr>
<td align=\"left\">". _("Edit an alias* for your email address.<br />One entry per line."). " </td>
</tr>
<tr>
<td align=\"left\">". _("*Additional forward-aliases always receive messages BCC!"). "\n
</tr>
<tr>
<td align=\"left\">" . _("To remove an alias, simply delete its line from the text box.") . "</td>
</tr>
</table>
<table align=\"center\" width\"95%\" cellpadding=\"5\" cellspacing=\"1\">
<form name=\"mailbox\" method=\"post\">
<tr>
<td bgcolor=\"$color[3]\" align=\"center\"><b>". _("Edit Forwards"). "</b>
</td>
</tr>
<tr>
<td bgcolor=\"$color[5]\" align=\"center\">$tMessage
<table cellpadding=\"5\" cellspacing=\"1\">
<tr>
<th align=\"left\">". _("Alias"). ":\n
</th>
<td align=\"left\">" . $_SESSION['username'] . "</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>&nbsp;</td>
</tr>
<tr>
<th align=\"left\" valign=\"top\">". _("To"). ":\n</th>
<td>
<textarea rows=\"8\" cols=\"50\" name=\"fGoto\">";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
$aliases = $alias->get();
foreach($aliases as $address) {
if ($address == "" || $address == NULL) { continue; }
print "$address\n";
}
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
echo "
</textarea>
</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>&nbsp;</td>
</tr>
<tr>
<th>&nbsp;</th>
<td align=\"left\"colspan=\"2\">
<input type=\"submit\" name=\"submit\" value=\"" . _("Edit Alias") . "\">
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</td></tr>
</table>
";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
?>

@ -0,0 +1,157 @@
<?php
require_once(dirname(__FILE__) . '/common.php');
$xmlrpc = get_xmlrpc();
$vacation = $xmlrpc->getProxy('vacation');
$VACCONFTXT = _("I will be away from <date> until <date>. For urgent matters you can contact <contact person>.");
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
$VACCONF = <<<EOM
$VACCONFTXT
EOM;
do_header();
$USERID_USERNAME = $username;
$tmp = preg_split ('/@/', $USERID_USERNAME);
$USERID_DOMAIN = $tmp[1];
if ($_SERVER['REQUEST_METHOD'] == "GET")
{
$details = $vacation->getDetails();
if($vacation->checkVacation()) {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$tMessage = _("You already have an auto response configured!");
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
echo "<table bgcolor=\"#b8cbdc\" align=\"center\" width=\"95%\" cellpadding=\"1\" cellspacing=\"0\" border=\"0\"><tr>
<td align=\"center\"><b>". _("Options") ." - ". _("Auto Response") ."</b>
<table align=\"center\" width=\"100%\" cellpadding=\"5\" cellspacing=\"0\" border=\"0\">
<tr><td bgcolor=\"$color[4]\" align=\"center\"><br>
<table align=\"center\" width=\"70%\" cellpadding=\"4\" cellspacing=\"0\" border=\"0\"><tr>
<td bgcolor=\"$color[3]\" align=\"center\"><b>". _("Auto Response") ."\n
</b></td></tr><tr>
<td bgcolor=\"$color[0]\" align=\"center\"><form name=\"vacation\" method=\"post\">
<table width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">
<tr>
<td><center>$tMessage<p></center></td>
</tr>
<tr>
<td> <div align=\"center\">
<input type=\"submit\" name=\"fBack\" value=\"" . _("Coming Back"). "\" />
</div></td>
</tr>
</table>
<TT></TT></FORM>
</td>
</tr><tr><td bgcolor=\"$color[4]\" align=\"left\">&nbsp;</td>
</tr></table><BR></td></tr></table></td></tr></table>";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
else
{
$tSubject = "Out of Office";
$tSubject = $details['subject'];
$VACCONF = $details['body'];
$tMessage = '';
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
echo "<table bgcolor=\"$color[0]\" align=\"center\" width=\"95%\" cellpadding=\"1\" cellspacing=\"0\" border=\"0\">
<tr>
<td align=\"center\"><b>". _("Options") ." - ". _("Auto Response") ." </b>
<table align=\"center\" width=\"100%\" cellpadding=\"5\" cellspacing=\"0\" border=\"0\">
<tr><td bgcolor=\"$color[4]\" align=\"center\"><br>
<table align=\"center\" width=\"70%\" cellpadding=\"4\" cellspacing=\"0\" border=\"0\"><tr>
<td bgcolor=\"$color[3]\" align=\"center\"><b>" . _("Auto Response") ."\n
</b></td></tr><tr>
<td bgcolor=\"$color[0]\" align=\"center\"><form name=\"vacation\" method=\"post\">$tMessage
<table width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\"><tr>
<td width=\"23%\">". _("Subject") .":\n</td>
<td width=\"2%\">&nbsp;</td>
<td width=\"69%\"><input type=\"text\" name=\"fSubject\" value=\"" . $tSubject . "\" /></td>
<td width=\"2%\">&nbsp;</td>
<td width=\"4%\">&nbsp;</td>
</tr><tr>
<td>". _("Body") .":\n</td>
<td>&nbsp;</td>
<td><textarea rows=\"10\" cols=\"80\" name=\"fBody\">$VACCONF\n
</textarea></td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td>
<td><input type=\"submit\" name=\"fAway\" value=\"" . _("Going Away") . "\" /></td>
<td>&nbsp;</td><td>&nbsp;</td></tr>
</table><TT></TT></FORM></td>
</tr><tr><td bgcolor=\"$color[4]\" align=\"left\">&nbsp;</td>
</tr></table><BR></td></tr></table></td></tr></table>";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
}
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
$fBack = null;
$fAway = null;
foreach(array('fBack', 'fAway', 'fSubject', 'fBody') as $key) {
$$key = null;
if(isset($_POST[$key])) {
$$key = $_POST[$key];
}
}
if (!empty($fBack))
{
$success = $vacation->remove();
if(!$success)
{
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$tMessage = _("Unable to update your auto response settings!");
echo "<p>This may signify an error; please contact support (1)</p>";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
else
{
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
echo "<p align=center><b>". _("Your auto response has been removed!") ."</b></p>";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
}
if (!empty ($fAway))
{
// add record into vacation
$success = $vacation->setAway($fSubject, $fBody);
if(!$success) {
$error = 1;
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$tMessage = _("Unable to update your auto response settings!");
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
else
{
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
echo "<p align=center><b>". _("Your auto response has been set!") ."</b></p>";
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
}
}
?>

@ -0,0 +1,62 @@
<?php
// vim:ts=4:sw=4:et
include_once(SM_PATH . 'functions/i18n.php');
function squirrelmail_plugin_init_postfixadmin() {
include(SM_PATH.'plugins/postfixadmin/config.php');
global $squirrelmail_plugin_hooks;
$squirrelmail_plugin_hooks['optpage_register_block']['postfixadmin'] = 'postfixadmin_optpage_register_block';
}
function postfixadmin_version(){
return '2.3.0';
}
function postfixadmin_optpage_register_block () {
// Gets added to the user's OPTIONS page.
global $optpage_blocks;
global $AllowVacation;
global $AllowChangePass;
// if ( !soupNazi() ) {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
$optpage_blocks[] = array (
'name' => _("Forwarding"),
'url' => '../plugins/postfixadmin/postfixadmin_forward.php',
'desc' => _("Here you can create and edit E-Mail forwards."),
'js' => FALSE
);
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
if($AllowVacation) {
$optpage_blocks[] = array(
'name' => _("Auto Response"),
'url' => '../plugins/postfixadmin/postfixadmin_vacation.php',
'desc' => _("Set an OUT OF OFFICE message or auto responder for your mail."),
'js' => false
);
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
if($AllowChangePass) {
$optpage_blocks[] = array(
'name' => _("Change Password"),
'url' => '../plugins/postfixadmin/postfixadmin_changepass.php',
'desc' => _("Change your mailbox password."),
'js' => false
);
bindtextdomain('squirrelmail', SM_PATH . 'locale');
textdomain('squirrelmail');
}
}
?>

@ -10,6 +10,143 @@
# Last update:
# $Id$
Version 2.3.7 - 2014/02/20 - SVN r1651 (postfixadmin-2.3 branch)
----------------------------------------------------------------
- SECURITY: fix SQL injection in show_gen_status()
- lt.lang, da.lang translation update
- when enabling/disabling a mailbox, also update the corresponding alias
- fix creating superadmin in setup.php with MariaDB (more strict SQL)
- don't trim() mail address to avoid that aliases starting with a space are
allowed. This fixes http://sourceforge.net/p/postfixadmin/bugs/210/ and
https://sourceforge.net/p/postfixadmin/feature-requests/113/
- update regex in check_domain() to support new, longer TLDs like .international
- mark vacation_notification.notified field as latin1 to avoid overlong index
- vacation.pl: encode subject
- vacation.pl: disable use of TLS by default due to a bug in Mail::Sender 0.8.22
(you can re-enable it with $smtp_tls_allowed)
Version 2.3.6 - 2013/01/02 - SVN r1417 (postfixadmin-2.3 branch)
----------------------------------------------------------------
- display domain and mailbox description with correct encoding
- fix footer link
- focus username input field in login form
- fix double inclusion of config.inc.php in setup.php
- fix bool and date handling in fetchmail
Version 2.3.5 - 2012/01/16 - SVN r1335 (postfixadmin-2.3 branch)
----------------------------------------------------------------
- fix SQL injection in pacrypt() (if $CONF[encrypt] == 'mysql_encrypt')
- fix SQL injection in backup.php - the dump was not mysql_escape()d,
therefore users could inject SQL (for example in the vacation message)
which will be executed when restoring the database dump.
WARNING: database dumps created with backup.php from 2.3.4 or older might
contain malicious SQL. Double-check before using them!
- fix XSS with $_GET[domain] in templates/menu.php and edit-vacation
- fix XSS in some create-domain input fields
- fix XSS in create-alias and edit-alias error message
- fix XSS (by values stored in the database) in fetchmail list view,
list-domain and list-virtual
- create-domain: fix SQL injection (only exploitable by superadmins)
- add missing $LANG['pAdminDelete_admin_error']
- don't mark mailbox targets with recipient delimiter as "forward only"
- wrap hex2bin with function_exists() - PHP 5.3.8 has it as native function
Version 2.3.4 - 2011/09/16 - SVN r1180 (postfixadmin-2.3 branch)
----------------------------------------------------------------
- generate more secure random passwords
- squirrelmail plugin: fix typo in variable name
- list-domain: fix SELECT query to work with PgSQL even when using custom fields
- create-domain: force domain name to lowercase to avoid problems with PgSQL
foreign keys
- fix vacation.pl to log to "mail" syslog facility
- error_log() dovecotpw error messages
Version 2.3.3 - 2011/03/14 - SVN r1010 (postfixadmin-2.3 branch)
----------------------------------------------------------------
- create-alias: allow multiple alias targets
- create-alias, edit-alias: prevent input data loss on validation errors
- list-virtual: fix displaying of 'modified' column for aliases when using
postgres
- replaced deprecated split() with preg_split() or explode()
- functions.inc.php: better error messages when database functions are missing
- create domain: fixed typo in variable name that broke the default value for
default aliases
- postgres: changed mailbox.quota, domain.quota and domain.maxquota fields
to bigint to allow mailboxes >4 GB (run setup.php to upgrade your database)
- vacation.pl logged literal $variable instead of the variable content at two
places
- edit-vacation: log enabling/disabling vacation if done by admins
- POSTFIX_CONF.txt: fixed filename for quota map
- config.inc.php: removed double $CONF['database_prefix']
- config.inc.php: fixed comments about domain_post* script parameters
- updated INSTALL.TXT and UPGRADE.TXT
- sk translation update
- some more minor fixes
Version 2.3.2 - 2010/08/24 - SVN r860 (postfixadmin-2.3 branch)
---------------------------------------------------------------
- SUMMARY: PostfixAdmin 2.3.2 is a bugfix-only release for Postfix Admin 2.3.1
- SECURITY: attackers could find out if a admin exists (login pre-filled the
username after "only" a wrong password was entered)
- SECURITY: fix sql injection in list-domain (only exploitable by superadmins)
- alias targets in users/edit-alias are now validated
- invalid alias targets in users/edit-alias are shown to the user again
instead of dropping them
- fix dovecot:* password encryption (was broken in 2.3.1)
- fix displaying used quota for dovecot <= 1.1 (was broken in 2.3.1)
- when deleting a domain that is an alias domain (on the "from" side), the
alias domain is deleted
Version 2.3.1 - 2010/07/09 - SVN r847 (postfixadmin-2.3 branch)
---------------------------------------------------------------
- SUMMARY: PostfixAdmin 2.3.1 is a bugfix-only release for Postfix Admin 2.3.
The only visible change is displaying the alias target for mailboxes which
was a longstanding issue/"missing feature".
The ADDITIONS directory contains some new scripts.
- SECURITY: users could bypass checking the old password when changing the
password by entering a too short new password. Fortunately only
"exploitable" by authentificated users.
- merge in changes to /debain (thanks normes) from trunk
- display alias targets for mailboxes (if $CONF['special_alias_control'] = YES)
- add hook for custom maildir path generation
- add import_users_from_csv.py script (by Simone Piccardi)
- add mailbox_post* scripts for cyrus
- handle dovecot passwords without any tempfile (prevents safe_mode issues)
- fix MySQL 6.0 compatibility
- fix quota display (for dovecot >= 1.2)
- fix short open tags ("<?")
- translation updates and fixes
- documentation updates and fixes
- document commandline parameters for $CONF[*_script] options in config.inc.php
- list-virtual: added error message if the check_owner query returns more
than one result (can happen with pre-2.3 databases and prevents access for
superadmins)
- add in_array() check to avoid that superadmins can enter invalid domains
- fix delete link for alias domains (when on target domain)
- delete values from quota and quota2 table when deleting a mailbox
- fix hardcoded table names in list-domain.php
- fixed edit-alias.php not to drop alias to the mailbox if
special_alias_control = NO
- fix alias handling for mailboxes (special_alias_control vs.
alias_control_admin confusion)
- fix typo in upgrade.php that broke index creation and deletion when using
non-default table names
- fix creating 'ALL' domain (dummy for superadmins) when using non-default
table names
- fix: db_query did not return number of SELECTed rows if query starts with
with whitespace
- check for $CONF['encrypt'] = 'dovecot:md5-crypt' (postfixadmin login not
working because dovecotpw uses a new salt each time), recommend
internal md5crypt instead
- replaced terribly outdated, broken squirrelmail plugin with a fresh version.
Note: The new plugin version requires the Zend framework.
Version 2.3 - 2009/10/24 - SVN r739
-----------------------------------
@ -85,8 +222,8 @@ Version 2.3 Beta - 2009/01/15 - SVN r527
- added support for domain aliases (from lenix) (can be disabled with $CONF['alias_domain'])
Important: If you update from a previous version, you'll have to adapt your postfix
configuration (see DOCUMENTS/POSTFIX_CONF.txt) - or just disable alias domain support,
your postfix configuration will continue to work
configuration (see DOCUMENTS/POSTFIX_CONF.txt) - or just disable alias domain support,
your postfix configuration will continue to work
- updated postfix example configuration for domain aliases and to use the new mysql map format
- vacation.pl:
- add option for re-notification after definable timeout (patch from Luxten)

@ -21,9 +21,12 @@ be viewed real-time in Postfixadmin.
1. Dovecot setup
-----------------
default_mail_env = maildir:/usr/local/virtual/%u/
default_mail_env = maildir:/var/mail/vmail/%u/
(dovecot 1.0.7 calls this mail_location ... ie.. mail_location = maildir:/...../%u )
auth default {
mechanisms plain
userdb sql {
# Path for SQL configuration file, see doc/dovecot-sql-example.conf
args = /etc/dovecot-mysql.conf
@ -44,7 +47,9 @@ first_valid_uid = 1001 # Change this to your postfix UID
Below you'll find the relevant part of dovecot-mysql.conf file regarding our
setup. Things you may need to change are db_password, uid and gid:
connect = host=localhost dbname=postfix user=postfix password=postfix
driver = mysql
# Default password scheme.
# depends on your $CONF['encrypt'] setting:
@ -62,6 +67,11 @@ password_query = SELECT username AS user,password FROM mailbox WHERE username =
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid FROM mailbox WHERE username = '%u' AND active='1'
for dovecot 1.2: (for PostgreSQL, replace 'CONCAT(a, b)' with 'a || b')
user_query = SELECT CONCAT('/home/vmail/', maildir) AS home, 1001 AS uid, 1001 AS gid,
CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
NB! The GID and UID are for postfix user and group ID, NOT MySQL user and group ID.
@ -102,7 +112,11 @@ quota = dict:storage=200000 proxy::quota
Change dovecot-mysql.conf to return quota values:
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, CONCAT('dict:storage=',floor(quota/1000),' proxy::quota') as quota FROM mailbox WHERE username = '%u'
for MySQL:
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, CONCAT('dict:storage=',floor(quota/1000),' proxy::quota') as quota FROM mailbox WHERE username = '%u' AND active='1'
for PostgreSQL:
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, 'dict:storage=' || floor(quota/1000) || '::proxy::quota' as quota FROM mailbox WHERE username = '%u' AND active='1'
Create file dovecot-dict-quota.conf:

@ -40,7 +40,7 @@ autoreply features.
Contents of the files
These are examples only, you will likely have to and want to make some
cumtomizations. You will also want to consider the config.inc.php
customizations. You will also want to consider the config.inc.php
settings for domain_path and domain_in_mailbox. These examples
use values of domain_path=YES and domain_in_mailbox=NO
@ -102,7 +102,7 @@ query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain
# For quota support
mysql-virtual-mailbox-limit-maps.cf:
mysql_virtual_mailbox_limit_maps.cf:
user = postfix
password = password
hosts = localhost

@ -66,8 +66,8 @@ relevant to your setup.
Comparing config.inc.php with your previous using "diff" might save you some
time.
You can use a config.local.php file to contain your local settings - these will override any
defined in config.inc.php
You can use a config.local.php file to contain your local settings. These will override any
defined in config.inc.php - and save some time when upgrading to a new version of PostfixAdmin ;-)
5. Run setup.php
----------------------------------------
@ -75,6 +75,7 @@ defined in config.inc.php
Access setup.php through a web browser.
It will attempt to upgrade your database, and also allow you to create a superadmin user.
(In case the database upgrade fails, you can run setup.php?debug=1 to see the last executed query.)
From version 2.3, you need to specify a setup_password in config.inc.php -
setup.php should guide you through this process. If you do not have a setup_password, type one
@ -89,9 +90,14 @@ If you update from 2.1 or older, also create a superadmin account using setup.ph
Note that admin/ has been merged into the main directory. Login with the
superadmin account to setup domains and domain admins.
6. Upgrade your postfix config
------------------------------
Since version 2.3, PostfixAdmin supports alias domains ($CONF['alias_domain']).
If you want to use them, you have to add some queries to your postfix config -
see POSTFIX_CONF for details.
6. Done
7. Done
-------
This is all that is needed. Fire up your browser and go to the site that you
specified to host Postfix Admin.

@ -15,15 +15,23 @@ REQUIRED!!
READ THIS FIRST!
----------------
When this is an upgrade from Postfix Admin 1.5.4 please read DOCUMENTS/UPGRADE.TXT!!
When this is an upgrade from a previous version of Postfix Admin, please read
DOCUMENTS/UPGRADE.TXT also!
If you need to setup Postfix to be able to handle Virtual Domains and Virtual
Users check out :
Users check out:
- http://high5.net/howto/
- the PostfixAdmin documentation in the DOCUMENTS/ directory
- our wiki at http://sourceforge.net/apps/mediawiki/postfixadmin/
There are also lots of HOWTOs around the web. Be warned that many of them
(even those listed below) may be outdated or incomplete.
Please stick to the PostfixAdmin documentation, and use those HOWTOs only if
you need some additional information that is missing in the PostfixAdmin
DOCUMENTS/ folder.
- http://codepoets.co.uk/postfixadmin-postgresql-courier-squirrelmail-debian-etch-howto-tutorial (Debian+Courier+PostgreSQL+Postfix+Postfixadmin)
- http://bliki.rimuhosting.com/space/knowledgebase/linux/mail/postfixadmin+on+debian+sarge (Postfix+MySQL+Postfixadmin+Dovecot)
- http://gentoo-wiki.com/HOWTO_Setup_a_Virtual_Postfix/Courier_Mail_System_with_PostfixAdmin (Postfix+MySQL+Postfixadmin+Courier)
- http://en.gentoo-wiki.com/wiki/Virtual_mail_server_using_Postfix,_Courier_and_PostfixAdmin (Postfix+MySQL+Postfixadmin+Courier)
1. Unarchive new Postfix Admin
@ -61,7 +69,7 @@ For PostgreSQL:
3. Configure PostfixAdmin so it can find the database
-----------------------------------------------------
Edit the config.inc.php file.
Edit the config.inc.php file - or - create config.local.php and add your settings there.
The most important settings are those for your database server.
@ -117,7 +125,17 @@ create the admin user using the form displayed.
This is all that is needed. Fire up your browser and go to the site that you
specified to host Postfix Admin.
6. More information
6. Integration with Postfix, Dovecot etc.
-----------------------------------------
Now that PostfixAdmin is working, you need to do some configuration in Postfix,
Dovecot etc. so that they use the domains, mailboxes and aliases you setup in
PostfixAdmin.
The files in the DOCUMENTS/ directory explain which settings you need to
do/change.
7. More information
-------------------
As of March 2007, PostfixAdmin moved to SourceForge. For the
forum posts and source updates, see:

@ -130,6 +130,7 @@ our $smtp_server_port = 25;
# SMTP authentication protocol used for sending.
# Can be 'PLAIN', 'LOGIN', 'CRAM-MD5' or 'NTLM'
# see "perldoc Mail::Sender" (search for "auth") for more options and details
# Leave it blank if you don't use authentification
our $smtp_auth = undef;
# username used to login to the server
@ -137,6 +138,10 @@ our $smtp_authid = 'someuser';
# password used to login to the server
our $smtp_authpwd = 'somepass';
# use TLS for the SMTP connection?
# while in general this would be a good idea, TLS with Mail::Sender 0.8.22 is buggy - https://rt.cpan.org/Public/Bug/Display.html?id=85438
our $smtp_tls_allowed = 0;
# Set to 1 to enable logging to syslog.
our $syslog = 0;
@ -213,7 +218,7 @@ if($test_mode == 1) {
if($syslog == 1) {
my $syslog_appender = Log::Log4perl::Appender->new(
'Log::Dispatch::Syslog',
Facility => 'mail',
facility => 'mail',
);
$logger->add_appender($syslog_appender);
}
@ -324,12 +329,12 @@ sub find_real_address {
# Recipient has vacation
if ($rv == 1) {
$realemail = $email;
$logger->debug("Found '\$email'\ has vacation active");
$logger->debug("Found '$email' has vacation active");
} else {
my $vemail = $email;
$vemail =~ s/\@/#/g;
$vemail = $vemail . "\@" . $vacation_domain;
$logger->debug("Looking for alias records that \'$email\' resolves to with vacation turned on");
$logger->debug("Looking for alias records that '$email' resolves to with vacation turned on");
$query = qq{SELECT goto FROM alias WHERE address=? AND (goto LIKE ? OR goto LIKE ? OR goto LIKE ? OR goto = ?)};
$stm = $dbh->prepare($query) or panic_prepare($query);
$stm->execute($email,"$vemail,%","%,$vemail","%,$vemail,%", "$vemail") or panic_execute($query,"address='$email'");
@ -438,6 +443,7 @@ sub send_vacation_email {
'auth' => $smtp_auth,
'authid' => $smtp_authid,
'authpwd' => $smtp_authpwd,
'tls_allowed' => $smtp_tls_allowed,
'skip_bad_recipients' => 'true',
'encoding' => 'Base64',
'ctype' => 'text/plain; charset=UTF-8',
@ -445,9 +451,8 @@ sub send_vacation_email {
'headers' => 'X-Loop: Postfix Admin Virtual Vacation',
);
my %mail;
# I believe Mail::Sender qp encodes the subject, so we no longer need to.
%mail = (
'subject' => $subject,
'subject' => encode_mimewords($subject, 'Charset', 'UTF-8'),
'from' => $from,
'to' => $to,
'msg' => encode_base64($body)

@ -33,101 +33,98 @@ if ('pgsql'==$CONF['database_type'])
print '<p>Sorry: Backup is currently not supported for your DBMS.</p>';
}
/*
SELECT attnum,attname,typname,atttypmod-4,attnotnull,atthasdef,adsrc
AS def FROM pg_attribute,pg_class,pg_type,pg_attrdef
WHERE pg_class.oid=attrelid AND pg_type.oid=atttypid
AND attnum>0 AND pg_class.oid=adrelid AND adnum=attnum AND atthasdef='t' AND lower(relname)='admin'
UNION SELECT attnum,attname,typname,atttypmod-4,attnotnull,atthasdef,''
AS def FROM pg_attribute,pg_class,pg_type
WHERE pg_class.oid=attrelid
AND pg_type.oid=atttypid
AND attnum>0
AND atthasdef='f'
AND lower(relname)='admin'
SELECT attnum,attname,typname,atttypmod-4,attnotnull,atthasdef,adsrc
AS def FROM pg_attribute,pg_class,pg_type,pg_attrdef
WHERE pg_class.oid=attrelid AND pg_type.oid=atttypid
AND attnum>0 AND pg_class.oid=adrelid AND adnum=attnum AND atthasdef='t' AND lower(relname)='admin'
UNION SELECT attnum,attname,typname,atttypmod-4,attnotnull,atthasdef,''
AS def FROM pg_attribute,pg_class,pg_type
WHERE pg_class.oid=attrelid
AND pg_type.oid=atttypid
AND attnum>0
AND atthasdef='f'
AND lower(relname)='admin'
$db = $_GET['db'];
$cmd = "pg_dump -c -D -f /tix/miner/miner.sql -F p -N -U postgres $db";
$res = `$cmd`;
// Alternate: $res = shell_exec($cmd);
echo $res;
*/
*/
if ($_SERVER['REQUEST_METHOD'] == "GET")
{
umask (077);
$path = (ini_get('upload_tmp_dir') != '') ? ini_get('upload_tmp_dir') : '/tmp';
$filename = "postfixadmin-" . date ("Ymd") . "-" . getmypid() . ".sql";
$backup = $path . DIRECTORY_SEPARATOR . $filename;
umask (077);
$path = (ini_get('upload_tmp_dir') != '') ? ini_get('upload_tmp_dir') : '/tmp';
$filename = "postfixadmin-" . date ("Ymd") . "-" . getmypid() . ".sql";
$backup = $path . DIRECTORY_SEPARATOR . $filename;
$header = "#\n# Postfix Admin $version\n# Date: " . date ("D M j G:i:s T Y") . "\n#\n";
$header = "#\n# Postfix Admin $version\n# Date: " . date ("D M j G:i:s T Y") . "\n#\n";
if (!$fh = fopen ($backup, 'w'))
{
$tMessage = "<div class=\"error_msg\">Cannot open file ($backup)</div>";
include ("templates/header.php");
include ("templates/menu.php");
include ("templates/message.php");
include ("templates/footer.php");
}
else
{
fwrite ($fh, $header);
if (!$fh = fopen ($backup, 'w'))
{
$tMessage = "<div class=\"error_msg\">Cannot open file ($backup)</div>";
include ("templates/header.php");
include ("templates/menu.php");
include ("templates/message.php");
include ("templates/footer.php");
}
else
{
fwrite ($fh, $header);
$tables = array(
'admin',
'alias',
'alias_domain',
'config',
'domain',
'domain_admins',
'fetchmail',
'log',
'mailbox',
'quota',
'quota2',
'vacation',
'vacation_notification'
);
$tables = array(
'admin',
'alias',
'alias_domain',
'config',
'domain',
'domain_admins',
'fetchmail',
'log',
'mailbox',
'quota',
'quota2',
'vacation',
'vacation_notification'
);
for ($i = 0 ; $i < sizeof ($tables) ; ++$i)
{
$result = db_query ("SHOW CREATE TABLE " . table_by_key($tables[$i]));
if ($result['rows'] > 0)
{
while ($row = db_array ($result['result']))
for ($i = 0 ; $i < sizeof ($tables) ; ++$i)
{
$result = db_query ("SHOW CREATE TABLE " . table_by_key($tables[$i]));
if ($result['rows'] > 0)
{
fwrite ($fh, "$row[1];\n\n");
while ($row = db_array ($result['result']))
{
fwrite ($fh, "$row[1];\n\n");
}
}
}
}
}
for ($i = 0 ; $i < sizeof ($tables) ; ++$i)
{
$result = db_query ("SELECT * FROM " . table_by_key($tables[$i]));
if ($result['rows'] > 0)
{
while ($row = db_assoc ($result['result']))
for ($i = 0 ; $i < sizeof ($tables) ; ++$i)
{
$result = db_query ("SELECT * FROM " . table_by_key($tables[$i]));
if ($result['rows'] > 0)
{
foreach ($row as $key=>$val)
{
$fields[] = $key;
$values[] = $val;
}
fwrite ($fh, "INSERT INTO ". $tables[$i] . " (". implode (',',$fields) . ") VALUES ('" . implode ('\',\'',$values) . "');\n");
$fields = "";
$values = "";
while ($row = db_assoc ($result['result']))
{
$fields = array_keys($row);
$values = array_values($row);
$values = array_map('escape_string', $values);
fwrite ($fh, "INSERT INTO ". $tables[$i] . " (". implode (',',$fields) . ") VALUES ('" . implode ('\',\'',$values) . "');\n");
$fields = "";
$values = "";
}
}
}
}
}
header ("Content-Type: text/plain");
header ("Content-Disposition: attachment; filename=\"$filename\"");
header ("Content-Transfer-Encoding: binary");
header ("Content-Length: " . filesize("$backup"));
header ("Content-Description: Postfix Admin");
$download_backup = fopen ("$backup", "r");
unlink ("$backup");
fpassthru ($download_backup);
}
}
header ("Content-Type: text/plain");
header ("Content-Disposition: attachment; filename=\"$filename\"");
header ("Content-Transfer-Encoding: binary");
header ("Content-Length: " . filesize("$backup"));
header ("Content-Description: Postfix Admin");
$download_backup = fopen ("$backup", "r");
unlink ("$backup");
fpassthru ($download_backup);
}
/* vim: set expandtab softtabstop=3 tabstop=3 shiftwidth=3: */
?>

@ -51,7 +51,6 @@ $CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfixadmin';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
// If you need to specify a different port for a MYSQL database connection, use e.g.
// $CONF['database_host'] = '172.30.33.66:3308';
// If you need to specify a different port for POSTGRESQL database connection
@ -149,6 +148,36 @@ $CONF['domain_path'] = 'NO';
// NO: /usr/local/virtual/domain.tld/username
// Note: If $CONF['domain_path'] is set to NO, this setting will be forced to YES.
$CONF['domain_in_mailbox'] = 'YES';
// If you want to define your own function to generate a maildir path set this to the name of the function.
// Notes:
// - this configuration directive will override both domain_path and domain_in_mailbox
// - the maildir_name_hook() function example is present below, commented out
// - if the function does not exist the program will default to the above domain_path and domain_in_mailbox settings
$CONF['maildir_name_hook'] = 'NO';
/*
maildir_name_hook example function
Called by create-mailbox.php if $CONF['maildir_name_hook'] == '<name_of_the_function>'
- allows for customized maildir paths determined by a custom function
- the example below will prepend a single-character directory to the
beginning of the maildir, splitting domains more or less evenly over
36 directories for improved filesystem performance with large numbers
of domains.
Returns: maildir path
ie. I/example.com/user/
*/
/*
function maildir_name_hook($domain, $user) {
$chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$dir_index = hexdec(substr(md5($domain), 28)) % strlen($chars);
$dir = substr($chars, $dir_index, 1);
return sprintf("%s/%s/%s/", $dir, $domain, $user);
}
*/
// Default Domain Values
// Specify your default values below. Quota in MB.
@ -199,14 +228,16 @@ $CONF['vacation_control_admin'] = 'YES';
// The reason for this is that when you want catch-all and normal mailboxes
// to work you need to have the mailbox replicated in the alias table.
// If you want to take control of these aliases as well set this to 'YES'.
// Alias control for superadmins
$CONF['alias_control'] = 'NO';
// Alias Control for admins
// Set to 'NO' if your domain admins shouldn't be able to edit user aliases.
// Alias Control for domain admins
$CONF['alias_control_admin'] = 'NO';
// Special Alias Control
// Set to 'NO' if your domain admins shouldn't be able to edit default aliases.
// Set to 'NO' if your domain admins shouldn't be able to edit the default aliases
// as defined in $CONF['default_aliases']
$CONF['special_alias_control'] = 'NO';
// Alias Goto Field Limit
@ -314,6 +345,7 @@ $CONF['recipient_delimiter'] = "";
// Note that this may fail if PHP is run in "safe mode", or if
// operating system features (such as SELinux) or limitations
// prevent the web-server from executing external scripts.
// Parameters: (1) username (2) domain (3) maildir (4) quota
// $CONF['mailbox_postcreation_script']='sudo -u courier /usr/local/bin/postfixadmin-mailbox-postcreation.sh';
// Optional:
@ -321,6 +353,7 @@ $CONF['recipient_delimiter'] = "";
// Note that this may fail if PHP is run in "safe mode", or if
// operating system features (such as SELinux) or limitations
// prevent the web-server from executing external scripts.
// Parameters: (1) username (2) domain (3) maildir (4) quota
// $CONF['mailbox_postedit_script']='sudo -u courier /usr/local/bin/postfixadmin-mailbox-postedit.sh';
// Optional:
@ -328,6 +361,7 @@ $CONF['recipient_delimiter'] = "";
// Note that this may fail if PHP is run in "safe mode", or if
// operating system features (such as SELinux) or limitations
// prevent the web-server from executing external scripts.
// Parameters: (1) username (2) domain
// $CONF['mailbox_postdeletion_script']='sudo -u courier /usr/local/bin/postfixadmin-mailbox-postdeletion.sh';
// Optional:
@ -335,6 +369,7 @@ $CONF['recipient_delimiter'] = "";
// Note that this may fail if PHP is run in "safe mode", or if
// operating system features (such as SELinux) or limitations
// prevent the web-server from executing external scripts.
// Parameters: (1) domain
//$CONF['domain_postcreation_script']='sudo -u courier /usr/local/bin/postfixadmin-domain-postcreation.sh';
// Optional:
@ -342,6 +377,7 @@ $CONF['recipient_delimiter'] = "";
// Note that this may fail if PHP is run in "safe mode", or if
// operating system features (such as SELinux) or limitations
// prevent the web-server from executing external scripts.
// Parameters: (1) domain
// $CONF['domain_postdeletion_script']='sudo -u courier /usr/local/bin/postfixadmin-domain-postdeletion.sh';
// Optional:

@ -75,9 +75,10 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
$fDomain = escape_string ($_POST['fDomain']);
}
if(!preg_match ('/@/',$fGoto)) {
$fGoto = $fGoto . "@" . escape_string ($_POST['fDomain']);
}
# TODO: Doesn't work with multiple aliases - fix or discard...
# if(!preg_match ('/@/',$fGoto)) {
# $fGoto = $fGoto . "@" . escape_string ($_POST['fDomain']);
# }
if(!(authentication_has_role('global-admin') ||
check_owner ($SESSID_USERNAME, $fDomain) ))
@ -105,7 +106,42 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
$pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error1'];
}
if (empty($fGoto) || !check_email ($fGoto)) {
// Begin check alias email
$goto = preg_replace ('/\\\r\\\n/', ',', $fGoto);
$goto = preg_replace ('/\r\n/', ',', $goto);
$goto = preg_replace ('/,[\s]+/i', ',', $goto);
$goto = preg_replace ('/[\s]+,/i', ',', $goto);
$goto = preg_replace ('/,*$|^,*/', '', $goto);
$goto = preg_replace ('/,,*/', ',', $goto);
if (empty ($goto) && !authentication_has_role('global-admin')) {
$error = 1;
$tGoto = $_POST['fGoto'];
$tMessage = $PALANG['pEdit_alias_goto_text_error1'];
}
$new_aliases = array();
if ($error != 1) {
$new_aliases = explode(',', $goto);
}
$new_aliases = array_unique($new_aliases);
foreach($new_aliases as $address) {
if (in_array($address, $CONF['default_aliases'])) continue;
if (empty($address)) continue; # TODO: should never happen - remove after 2.2 release
if (!check_email($address)) {
$error = 1;
$tGoto = $goto;
if (!empty($tMessage)) $tMessage .= "<br />";
$tMessage .= $PALANG['pEdit_alias_goto_text_error2'] . htmlentities($address) . "</span>";
}
}
$goto = implode(',', $new_aliases);
$fGoto = escape_string($goto);
// End check alias mail
if (empty($fGoto)) {
$error = 1;
$tAddress = escape_string ($_POST['fAddress']);
$tGoto = $fGoto;
@ -150,6 +186,11 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
$tDomain = $fDomain;
$tMessage = $PALANG['pCreate_alias_result_success'] . "<br />($fAddress -> $fGoto)<br />\n";
}
} else { # on error
$tAddress = htmlentities($_POST['fAddress']);
$tGoto = htmlentities($_POST['fGoto']);
$tDomain = htmlentities($_POST['fDomain']);
}
}

@ -71,6 +71,9 @@ foreach($form_fields as $key => $default) {
}
}
}
$fDomain = strtolower($fDomain);
if ($_SERVER['REQUEST_METHOD'] == "GET")
{
/* default values as set above */
@ -78,7 +81,7 @@ if ($_SERVER['REQUEST_METHOD'] == "GET")
$tAliases = $fAliases;
$tMaxquota = $fMaxquota;
$tMailboxes = $fMailboxes;
$tDefaultAliases = $fDefaultaliases;
$tDefaultaliases = $fDefaultaliases;
$tBackupmx = $fBackupmx;
}

@ -159,7 +159,11 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
{
$password = pacrypt ($fPassword);
if ($CONF['domain_path'] == "YES")
if($CONF['maildir_name_hook'] != 'NO' && function_exists($CONF['maildir_name_hook'])) {
$hook_func = $CONF['maildir_name_hook'];
$maildir = $hook_func ($fDomain, $fUsername);
}
else if ($CONF['domain_path'] == "YES")
{
if ($CONF['domain_in_mailbox'] == "YES")
{

@ -35,7 +35,7 @@ table {
font-size: 11px;
}
.button:hover {
.button:hover, .button:focus {
background: #BCFF36;
color: #888888;
}

@ -0,0 +1,27 @@
This package is using the quilt framework.
All patches are located in debian/patches.
Adding a new patch: quilt new <date-patch_name>
This will create a new file debian/patches/patch/date-patch_name.
Please use the current date (e.g. 20100221 - YYYYMMDD) as prefix!
Editing a file to include it into the patch: quilt edit <filename>
This will open your $EDITOR.
To write your changes into the new patchfile: quilt refresh.
quilt push:
Apply patch(es) from the series file. Without options, the next
patch in the series file is applied. When a number is specified,
apply the specified number of patches. When a patch name is
specified, apply all patches up to and including the specified patch.
Patch names may include the patches/ prefix, which means that
filename completion can be used.
quilt pop:
Remove patch(es) from the stack of applied patches. Without options,
the topmost patch is removed. When a number is specified, remove the
specified number of patches. When a patch name is specified, remove
patches until the specified patch end up on top of the stack.
Patch names may include the patches/ prefix, which means that
filename completion can be used.

30
debian/changelog vendored

@ -1,25 +1,19 @@
postfixadmin (2.3) unstable; urgency=low
postfixadmin (2.3.7-1) unstable; urgency=low
* New upstream release (v2.3.7)
* New 'upstream' release.
-- David Goodwin (PalePurple) <david@palepurple.co.uk> Thu, 20 Feb 2014 22:30:00 +0100
-- David Goodwin <david.goodwin@palepurple.co.uk> Mon, 27 Jul 2009 22:08:26 +0100
postfixadmin (2.3.6-1) unstable; urgency=low
* New upstream release (v2.3.6)
postfixadmin (2.3rc7) unstable; urgency=low
-- David Goodwin (PalePurple) <david@palepurple.co.uk> Wed, 2 Jan 2013 21:20:00 +0100
* Fix issue with pre.rm script
* New 'upstream' release.
postfixadmin (2.3.5-1) unstable; urgency=low
-- David Goodwin <david.goodwin@palepurple.co.uk> Mon, 27 Jul 2009 22:08:26 +0100
* Initial Debian release (Closes: #247225)
* Changed from normes to me, for signing/building purposes.
postfixadmin (2.3rc6) unstable; urgency=low
* Bump version number; etc.
-- David Goodwin <david.goodwin@palepurple.co.uk> Mon, 20 Jul 2009 19:56:26 +0100
postfixadmin (2.3rc5) unstable; urgency=low
* Initial release (Closes: #247225)
-- Norman Messtorff <normes@normes.org> Sat, 09 May 2009 22:36:26 +0200
-- David Goodwin (PalePurple) <david@palepurple.co.uk> Sun, 15 Jan 2012 12:27:28 +0100

8
debian/control vendored

@ -3,15 +3,13 @@ Section: admin
Priority: optional
Maintainer: Norman Messtorff <normes@normes.org>
Build-Depends: debhelper (>= 7), po-debconf, quilt (>= 0.46)
Standards-Version: 3.8.2
Standards-Version: 3.9.2
Homepage: http://postfixadmin.sourceforge.net
XS-Vcs-Svn: https://postfixadmin.svn.sourceforge.net/svnroot/postfixadmin/trunk
XS-Vcs-Browse: http://postfixadmin.svn.sourceforge.net/viewvc/postfixadmin/trunk/
Package: postfixadmin
Architecture: all
Depends: debconf (>= 0.5), dbconfig-common, wwwconfig-common, apache2 | lighttpd, libapache2-mod-php5 | php5-cgi | php5, php5-imap, php5-mysql | php5-pgsql, mysql-client | postgresql-client, ${misc:Depends}
Recommends: postfix-mysql | postfix-pgsql, mysql-server | postgresql-server
Depends: debconf (>= 0.5), dbconfig-common, wwwconfig-common, apache2 | lighttpd | httpd, libapache2-mod-php5 | php5-cgi | php5, php5-imap, php5-mysql | php5-pgsql, mysql-client | postgresql-client, ${misc:Depends}
Recommends: postfix-mysql | postfix-pgsql, mysql-server | postgresql-server | postgresql
Suggests: squirrelmail-postfixadmin, dovecot-common | courier-authlib-mysql | courier-authlib-postgresql
Description: Virtual mail hosting interface for Postfix
Postfixadmin is a web interface to managing virtual users and domains

@ -1,30 +0,0 @@
Index: config.inc.php
===================================================================
--- config.inc.php (revision 690)
+++ config.inc.php (working copy)
@@ -23,7 +23,7 @@
* Doing this implies you have changed this file as required.
* i.e. configuring database etc; specifying setup.php password etc.
*/
-$CONF['configured'] = false;
+$CONF['configured'] = true;
// In order to setup Postfixadmin, you MUST specify a hashed password here.
// To create the hash, visit setup.php in a browser and type a password into the field,
@@ -46,11 +46,11 @@
// mysql = MySQL 3.23 and 4.0, 4.1 or 5
// mysqli = MySQL 4.1+
// pgsql = PostgreSQL
-$CONF['database_type'] = 'mysql';
-$CONF['database_host'] = 'localhost';
-$CONF['database_user'] = 'postfix';
-$CONF['database_password'] = 'postfixadmin';
-$CONF['database_name'] = 'postfix';
+$CONF['database_type'] = '_DBC_DBTYPE_';
+$CONF['database_host'] = '_DBC_DBSERVER_';
+$CONF['database_user'] = '_DBC_DBUSER_';
+$CONF['database_password'] = '_DBC_DBPASS_';
+$CONF['database_name'] = '_DBC_DBNAME_';
$CONF['database_prefix'] = '';
// Here, if you need, you can customize table names.

@ -0,0 +1,56 @@
Description: This patch sets the dbconfig placeholders in config.inc.php.
Forwarded: not-needed
Author: Norman Messtorff <normes@normes.org>
Last-Update: 2011-12-18
Index: postfixadmin-2.3/config.inc.php
===================================================================
--- postfixadmin-2.3.orig/config.inc.php 2012-01-14 12:42:16.000000000 +0100
+++ postfixadmin-2.3/config.inc.php 2012-01-14 12:56:28.000000000 +0100
@@ -16,6 +16,11 @@
* Contains configuration options.
*/
+// This loads the automatic generated DB credentials from /etc/postfixadmin/dbconfig.inc.php
+require_once('dbconfig.inc.php');
+if (!isset($dbserver) || empty($dbserver))
+ $dbserver='localhost';
+
/*****************************************************************
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* You have to set $CONF['configured'] = true; before the
@@ -23,7 +28,7 @@
* Doing this implies you have changed this file as required.
* i.e. configuring database etc; specifying setup.php password etc.
*/
-$CONF['configured'] = false;
+$CONF['configured'] = true;
// In order to setup Postfixadmin, you MUST specify a hashed password here.
// To create the hash, visit setup.php in a browser and type a password into the field,
@@ -33,7 +38,7 @@
// Postfix Admin Path
// Set the location of your Postfix Admin installation here.
// YOU MUST ENTER THE COMPLETE URL e.g. http://domain.tld/postfixadmin
-$CONF['postfix_admin_url'] = '';
+$CONF['postfix_admin_url'] = '/postfixadmin';
// shouldn't need changing.
$CONF['postfix_admin_path'] = dirname(__FILE__);
@@ -46,11 +51,11 @@
// mysql = MySQL 3.23 and 4.0, 4.1 or 5
// mysqli = MySQL 4.1+
// pgsql = PostgreSQL
-$CONF['database_type'] = 'mysql';
-$CONF['database_host'] = 'localhost';
-$CONF['database_user'] = 'postfix';
-$CONF['database_password'] = 'postfixadmin';
-$CONF['database_name'] = 'postfix';
+$CONF['database_type'] = $dbtype;
+$CONF['database_host'] = $dbserver;
+$CONF['database_user'] = $dbuser;
+$CONF['database_password'] = $dbpass;
+$CONF['database_name'] = $dbname;
// If you need to specify a different port for a MYSQL database connection, use e.g.
// $CONF['database_host'] = '172.30.33.66:3308';
// If you need to specify a different port for POSTGRESQL database connection

@ -1 +1 @@
01-20090509_database-credentials -p0
db_credentials

@ -1,5 +1 @@
DOCUMENTS
CHANGELOG.TXT
GPL-LICENSE.TXT
INSTALL.TXT
LICENSE.TXT

@ -1,2 +1,16 @@
ADDITIONS
VIRTUAL_VACATION
ADDITIONS/change_password.tgz
ADDITIONS/import_users_from_csv.py
ADDITIONS/postfixadmin-domain-postdeletion.sh
ADDITIONS/cleanupdirs.pl
ADDITIONS/mailbox_remover.pl
ADDITIONS/postfixadmin-mailbox-postcreation.sh
ADDITIONS/virtualmaildel.php
ADDITIONS/convert-passwd-to-postfixadmin.pl
ADDITIONS/mkeveryone.pl
ADDITIONS/postfixadmin-mailbox-postdeletion.sh
ADDITIONS/delete-mailq-by-domain.pl
ADDITIONS/pfa_maildir_cleanup.pl
ADDITIONS/quota_usage.pl
ADDITIONS/fetchmail.pl
ADDITIONS/README.TXT

@ -4,8 +4,6 @@ css usr/share/postfixadmin
images usr/share/postfixadmin
languages usr/share/postfixadmin
model usr/share/postfixadmin
motd.txt usr/share/postfixadmin
motd-users.txt usr/share/postfixadmin
templates usr/share/postfixadmin
users usr/share/postfixadmin
debian/apache.conf etc/postfixadmin

@ -2,14 +2,14 @@
set -e
if [ "$1" = "configure" ]; then
# configure DB stuff via dbconfig-common
dbc_generate_include=php:/etc/postfixadmin/dbconfig.inc.php
dbc_generate_include_args="-O root:www-data -m 640 -U"
. /usr/share/debconf/confmodule
db_version 2.0
dbc_generate_include='template:/etc/postfixadmin/config.inc.php'
dbc_generate_include_owner='root:www-data'
dbc_generate_include_perms='640'
dbc_generate_include_args="-U -o template_infile=/usr/share/postfixadmin/config.inc.php"
. /usr/share/dbconfig-common/dpkg/postinst
dbc_go postfixadmin $@
# configure webserver stuff
db_get postfixadmin/reconfigure-webserver
servers="$RET"
restart="$servers"

@ -11,7 +11,9 @@ if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
servers="$RET"
restart=$servers
linkname="postfixadmin"
. /usr/share/wwwconfig-common/restart.sh
if [ -e /usr/share/wwwconfig-common/restart.sh ]; then
. /usr/share/wwwconfig-common/restart.sh
fi
fi
if [ -f /usr/share/dbconfig-common/dpkg/postrm ]; then
@ -19,6 +21,16 @@ if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
dbc_go postfixadmin $@
fi
fi
if [ "$1" = "purge" ]; then
rm -f /etc/postfixadmin/dbconfig.inc.php
if which ucf >/dev/null 2>&1; then
ucf --purge /etc/postfixadmin/dbconfig.inc.php
fi
db_purge || true
fi
fi
#DEBHELPER#

20
debian/rules vendored

@ -4,19 +4,33 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
include /usr/share/quilt/quilt.make
export PFADIR = $(shell pwd)
export VERSION = $(shell grep -E "version = '.*';" functions.inc.php |sed -e "s/.version = '//" |sed -e "s/';.*//" |sed -e "s/ /-/g")
export DEBVERSION = $(shell grep -E "postfixadmin .([0-9]+|\.)+" debian/changelog |head -1 |sed -e "s/postfixadmin .//" |sed -e "s/-.*//")
build: build-stamp
include /usr/share/quilt/quilt.make
build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp: $(QUILT_STAMPFN)
dh_testdir
#dh_testroot
touch build-stamp
# Create a needed tar.gz file to build a non-nativ .dpkg
prep:
rm -f ../postfixadmin_*orig.tar.gz
cd ..; tar --exclude-vcs --exclude=*.svn* --exclude=postfixadmin/debian --exclude=postfixadmin/.pc -czf postfixadmin_${DEBVERSION}.orig.tar.gz postfixadmin-${DEBVERSION}
# Call this target to build a shiny new .dpkg file.
build-package:
dh_testdir
cd ${PFADIR}; dpkg-buildpackage -rfakeroot
clean: unpatch
dh_testdir
dh_testroot
#dh_testroot
dh_clean
debconf-updatepo

@ -0,0 +1 @@
3.0 (quilt)

2
debian/watch vendored

@ -1,2 +1,2 @@
version=3
http://sf.net/postfixadmin/postfixadmin-(.*)\.tar\.gz
http://sf.net/postfixadmin/postfixadmin_(.+)\.tar\.gz

@ -68,6 +68,7 @@ elseif ($fTable == "domain")
$result_domain_admins = db_delete ($table_domain_admins,$fWhere,$fDelete);
$result_alias = db_delete ($table_alias,$fWhere,$fDelete);
$result_mailbox = db_delete ($table_mailbox,$fWhere,$fDelete);
$result_alias_domain = db_delete($table_alias_domain,'alias_domain',$fDelete);
$result_log = db_delete ($table_log,$fWhere,$fDelete);
if ($CONF['vacation'] == "YES")
{
@ -143,6 +144,14 @@ elseif ($fTable == "alias" or $fTable == "mailbox")
$tMessage.=')</span>';
}
db_log ($SESSID_USERNAME, $fDomain, 'delete_mailbox', $fDelete);
$result = db_query("SELECT * FROM $table_quota WHERE username='$fDelete'");
if($result['rows'] >= 1) {
db_query ("DELETE FROM $table_quota WHERE username='$fDelete'");
}
$result = db_query("SELECT * FROM $table_quota2 WHERE username='$fDelete'");
if($result['rows'] == 1) {
db_query ("DELETE FROM $table_quota2 WHERE username='$fDelete'");
}
}
$result = db_query("SELECT * FROM $table_vacation WHERE email = '$fDelete' AND domain = '$fDomain'");
if($result['rows'] == 1) {

@ -39,16 +39,10 @@ if($CONF['alias_control_admin'] == 'NO' && !authentication_has_role('global-admi
}
/* retrieve existing alias record for the user first... may be via GET or POST */
if(isset($_GET['address']) && isset($_GET['domain'])) {
$fAddress = escape_string($_GET['address']);
$fDomain = escape_string($_GET['domain']);
}
elseif(isset($_POST['address']) && isset($_POST['domain'])) {
$fAddress = escape_string($_POST['address']);
$fDomain = escape_string($_POST['domain']);
}
else {
$fAddress = safepost('address', safeget('address')); # escaped below
$fDomain = escape_string(preg_replace("/.*@/", "", $fAddress));
$fAddress = escape_string($fAddress); # escaped now
if ($fAddress == "") {
die("Required parameters not present");
}
@ -68,9 +62,10 @@ if ($result['rows'] == 1)
$tGoto = $row['goto'];
$orig_alias_list = explode(',', $tGoto);
$tGoto = str_replace(',', "\n", $tGoto);
$alias_list = $orig_alias_list;
//. if we are not a global admin, and special_alias_control is NO, hide the alias that's the mailbox name.
if($CONF['special_alias_control'] == 'NO' && !authentication_has_role('global-admin')) {
//. if we are not a global admin, and alias_control_admin is NO, hide the alias that's the mailbox name.
if($CONF['alias_control_admin'] == 'NO' && !authentication_has_role('global-admin')) {
/* Has a mailbox as well? Remove the address from $tGoto in order to edit just the real aliases */
$result = db_query ("SELECT * FROM $table_mailbox WHERE username='$fAddress' AND domain='$fDomain'");
if ($result['rows'] == 1)
@ -88,7 +83,7 @@ if ($result['rows'] == 1)
}
}
else {
die("Invalid alias / domain combination");
die("Invalid alias");
}
if ($_SERVER['REQUEST_METHOD'] == "POST")
@ -107,7 +102,8 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
$goto = preg_replace ('/\\\r\\\n/', ',', $fGoto);
$goto = preg_replace ('/\r\n/', ',', $goto);
$goto = preg_replace ('/[\s]+/i', '', $goto);
$goto = preg_replace ('/,[\s]+/i', ',', $goto);
$goto = preg_replace ('/[\s]+,/i', ',', $goto);
$goto = preg_replace ('/,*$|^,*/', '', $goto);
$goto = preg_replace ('/,,*/', ',', $goto);
@ -132,7 +128,8 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
{
$error = 1;
$tGoto = $goto;
$tMessage = $PALANG['pEdit_alias_goto_text_error2'] . "$address</span>";
if (!empty($tMessage)) $tMessage .= "<br />";
$tMessage .= $PALANG['pEdit_alias_goto_text_error2'] . htmlentities($address) . "</span>";
}
}
@ -141,7 +138,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
{
if($CONF['alias_control_admin'] == 'NO' && !authentication_has_role('global-admin')) {
// if original record had a mailbox alias, so ensure the updated one does too.
if(in_array($orig_alias_list, $fAddress)) {
if(in_array($fAddress, $orig_alias_list)) {
$new_aliases[] = $fAddress;
}
}
@ -165,6 +162,8 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
header ("Location: list-virtual.php?domain=$fDomain");
exit;
}
} else { # on error
$tGoto = htmlentities($_POST['fGoto']);
}
}

@ -162,6 +162,17 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
else {
db_log ($SESSID_USERNAME, $fDomain, 'edit_mailbox', $fUsername);
$result = db_query ("UPDATE $table_alias SET active=$sqlActive WHERE address='$fUsername' AND domain='$fDomain'");
if ($result['rows'] != 1)
{
$error = 1;
$tMessage = $PALANG['pEdit_mailbox_result_error'];
}
else
{
db_log ($SESSID_USERNAME, $fDomain, 'edit_alias_state', $fUsername);
}
header ("Location: list-virtual.php?domain=$fDomain");
exit(0);
}

@ -55,12 +55,13 @@ else {
$fUsername = $SESSID_USERNAME;
$fDomain = $USERID_DOMAIN;
}
list (/*NULL*/, $domain) = explode('@', $fUsername);
$vacation_domain = $CONF['vacation_domain'];
$vacation_goto = preg_replace('/@/', '#', $fUsername);
$vacation_goto = $vacation_goto . '@' . $vacation_domain;
$fCanceltarget = $CONF['postfix_admin_url'] . "/list-virtual.php?domain=$fDomain";
$fCanceltarget = $CONF['postfix_admin_url'] . "/list-virtual.php?domain=" . urlencode($fDomain);
if ($_SERVER['REQUEST_METHOD'] == "GET")
{
@ -140,6 +141,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
{
$error = 1;
}
db_log($SESSID_USERNAME, $domain, 'edit_alias', "$fUsername -> $goto");
}
}
}
@ -184,6 +186,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
{
$error = 1;
}
db_log($SESSID_USERNAME, $domain, 'edit_alias', "$fUsername -> $goto");
}
}

@ -210,6 +210,11 @@ if ($cancel) { # cancel $new or $edit
} elseif ($edit) { # edit entry form
$formvars = $edit_row;
$formvars['src_password'] = '';
if ('pgsql'==$CONF['database_type']) {
$formvars['fetchall']=('t'==$formvars['fetchall']) ? 1 : 0;
$formvars['keep']=('t'==$formvars['keep']) ? 1 : 0;
$formvars['usessl']=('t'==$formvars['usessl']) ? 1 : 0;
}
} elseif ($new) { # create entry form
foreach (array_keys($fm_struct) as $value) {
if (isset($fm_defaults[$value])) {
@ -226,6 +231,15 @@ if ($edit + $new == 0) { # display list
$res = db_query ("SELECT ".implode(",",escape_string(array_keys($fm_struct)))." FROM $table_fetchmail WHERE mailbox IN ($user_mailboxes_sql) ORDER BY mailbox,src_server,src_user");
if ($res['rows'] > 0) {
while ($row = db_array ($res['result'])) {
if ('pgsql'==$CONF['database_type']) {
//. at least in my database, $row['modified'] already looks like : 2009-04-11 21:38:10.75586+01,
// while gmstrftime expects an integer value. strtotime seems happy though.
//$row['date']=gmstrftime('%c %Z',$row['date']);
$row['date'] = date('Y-m-d H:i:s', strtotime($row['date']));
$row['fetchall']=('t'==$row['fetchall']) ? 1 : 0;
$row['keep']=('t'==$row['keep']) ? 1 : 0;
$row['usessl']=('t'==$row['usessl']) ? 1 : 0;
}
$tFmail[] = $row;
}
}

@ -16,7 +16,7 @@
* Contains re-usable code.
*/
$version = '2.3';
$version = '2.3.7';
/**
* check_session
@ -81,7 +81,12 @@ function authentication_require_role($role) {
if(authentication_has_role($role)) {
return True;
}
header("Location: " . $CONF['postfix_admin_url'] . "/login.php");
if($role === 'user') {
header("Location: " . $CONF['postfix_admin_url'] . '/users/login.php');
}
else {
header("Location: " . $CONF['postfix_admin_url'] . "/login.php");
}
exit(0);
}
/**
@ -224,7 +229,7 @@ function check_domain ($domain)
global $CONF;
global $PALANG;
if (!preg_match ('/([-0-9A-Z]+\.)+' . '([0-9A-Z]){2,6}$/i', trim ($domain)))
if (!preg_match ('/^([-0-9A-Z]+\.)+' . '([0-9A-Z]){2,13}$/i', ($domain)))
{
flash_error(sprintf($PALANG['pInvalidDomainRegex'], htmlentities($domain)));
return false;
@ -279,7 +284,7 @@ function check_email ($email)
}
// Perform non-domain-part sanity checks
if (!preg_match ('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_{|}~]+' . '@' . '[^@]+$/i', trim ($ce_email)))
if (!preg_match ('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_{|}~]+' . '@' . '[^@]+$/i', $ce_email))
{
flash_error($PALANG['pInvalidMailRegex']);
return false;
@ -444,7 +449,8 @@ function get_domain_properties ($domain)
//while loop to figure index names. use page_size and loop of queries
$i=0;
$current=0;
$page_size = $CONF['page_size'];
$page_size = (int) $CONF['page_size'];
if ($page_size < 1) die ("\$CONF['page_size'] = '$page_size' is invalid (it may only contain digits and must be >= 1)");
$tmpstr="";
$idxlabel="";
$list['alias_pgindex_count'] = 0;
@ -733,6 +739,10 @@ function check_owner ($username, $domain)
$result = db_query ("SELECT 1 FROM $table_domain_admins WHERE username='$username' AND (domain='$domain' OR domain='ALL') AND active='1'");
if ($result['rows'] != 1)
{
if ($result['rows'] > 1) { # "ALL" + specific domain permissions. 2.3 doesn't create such entries, but they are available as leftover from older versions
flash_error("Permission check returned more than one result. Please go to 'edit admin' for your username and press the save "
. "button once to fix the database. If this doesn't help, open a bugreport.");
}
return false;
}
else
@ -1097,9 +1107,30 @@ function encode_header ($string, $default_charset = "utf-8")
// Action: Generates a random password
// Call: generate_password ()
//
function generate_password ()
{
$password = substr (md5 (mt_rand ()), 0, 8);
function generate_password () {
global $CONF;
//check that password length is sensible
$length = (int) $CONF['min_password_length'];
if ($length < 5 || $length > 32) {
$length = 8;
}
// define possible characters
$possible = "2345678923456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ"; # skip 0 and 1 to avoid confusion with O and l
// add random characters to $password until $length is reached
$password = "";
while (strlen($password) < $length) {
// pick a random character from the possible ones
$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
// we don't want this character if it's already in the password
if (!strstr($password, $char)) {
$password .= $char;
}
}
return $password;
}
@ -1158,8 +1189,9 @@ function pacrypt ($pw, $pw_db="")
// this is apparently useful for pam_mysql etc.
elseif ($CONF['encrypt'] == 'mysql_encrypt')
{
$pw = escape_string($pw);
if ($pw_db!="") {
$salt=substr($pw_db,0,2);
$salt=escape_string(substr($pw_db,0,2));
$res=db_query("SELECT ENCRYPT('".$pw."','".$salt."');");
} else {
$res=db_query("SELECT ENCRYPT('".$pw."');");
@ -1173,7 +1205,7 @@ function pacrypt ($pw, $pw_db="")
$salt = substr(create_salt(), 0, 2); # courier-authlib supports only two-character salts
if(preg_match('/^{.*}/', $pw_db)) {
// we have a flavor in the db -> use it instead of default flavor
$result = split('{|}', $pw_db, 3);
$result = preg_split('/[{}]/', $pw_db, 3); # split at { and/or }
$flavor = $result[1];
$salt = substr($result[2], 0, 2);
}
@ -1195,26 +1227,44 @@ function pacrypt ($pw, $pw_db="")
$split_method = preg_split ('/:/', $CONF['encrypt']);
$method = strtoupper($split_method[1]);
if (! preg_match("/^[A-Z0-9-]+$/", $method)) { die("invalid dovecot encryption method"); } # TODO: check against a fixed list?
if (strtolower($method) == 'md5-crypt') die("\$CONF['encrypt'] = 'dovecot:md5-crypt' will not work because dovecotpw generates a random salt each time. Please use \$CONF['encrypt'] = 'md5crypt' instead.");
$dovecotpw = "dovecotpw";
if (!empty($CONF['dovecotpw'])) $dovecotpw = $CONF['dovecotpw'];
// prevent showing plain password in process table
$prefix = "postfixadmin-";
$tmpfile = tempnam('/tmp', $prefix);
$pipe = popen("'$dovecotpw' -s '$method' > '$tmpfile'", 'w'); # TODO: replace tempfile usage with proc_open call
# 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
2 => array("pipe", "w"), // stderr
);
$pipe = proc_open("$dovecotpw '-s' $method", $spec, $pipes);
if (!$pipe) {
unlink($tmpfile);
die("can't proc_open $dovecotpw");
} else {
// use dovecot's stdin, it uses getpass() twice
fwrite($pipe, $pw . "\n", 1+strlen($pw)); usleep(1000);
fwrite($pipe, $pw . "\n", 1+strlen($pw));
pclose($pipe);
$password = file_get_contents($tmpfile);
if ( !preg_match('/^\{' . $method . '\}/', $password)) { die("can't encrypt password with dovecotpw"); }
// Write pass in pipe stdin
fwrite($pipes[0], $pw . "\n", 1+strlen($pw)); usleep(1000);
fwrite($pipes[0], $pw . "\n", 1+strlen($pw));
fclose($pipes[0]);
// Read hash from pipe stdout
$password = fread($pipes[1], "200");
if ( !preg_match('/^\{' . $method . '\}/', $password)) {
$stderr_output = stream_get_contents($pipes[2]);
error_log('dovecotpw password encryption failed.');
error_log('STDERR output: ' . $stderr_output);
die("can't encrypt password with dovecotpw, see error log for details");
}
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($pipe);
$password = trim(str_replace('{' . $method . '}', '', $password));
unlink($tmpfile);
}
}
@ -1306,6 +1356,7 @@ function create_salt ()
return $salt;
}
/**/ if (!function_exists('hex2bin')) { # PHP around 5.3.8 includes hex2bin as native function - http://php.net/hex2bin
function hex2bin ($str)
{
$len = strlen ($str);
@ -1317,6 +1368,7 @@ function hex2bin ($str)
}
return $nstr;
}
/**/ }
function to64 ($v, $n)
{
@ -1438,7 +1490,7 @@ function db_connect ($ignore_errors = 0)
}
else
{
$error_text .= "<p />DEBUG INFORMATION:<br />MySQL 3.x / 4.0 functions not available!<br />database_type = 'mysql' in config.inc.php, are you using a different database? $DEBUG_TEXT";
$error_text .= "<p />DEBUG INFORMATION:<br />MySQL 3.x / 4.0 functions not available! (php5-mysql installed?)<br />database_type = 'mysql' in config.inc.php, are you using a different database? $DEBUG_TEXT";
}
}
elseif ($CONF['database_type'] == "mysqli")
@ -1454,7 +1506,7 @@ function db_connect ($ignore_errors = 0)
}
else
{
$error_text .= "<p />DEBUG INFORMATION:<br />MySQL 4.1 functions not available!<br />database_type = 'mysqli' in config.inc.php, are you using a different database? $DEBUG_TEXT";
$error_text .= "<p />DEBUG INFORMATION:<br />MySQL 4.1 functions not available! (php5-mysqli installed?)<br />database_type = 'mysqli' in config.inc.php, are you using a different database? $DEBUG_TEXT";
}
}
elseif ($CONF['database_type'] == "pgsql")
@ -1470,7 +1522,7 @@ function db_connect ($ignore_errors = 0)
}
else
{
$error_text .= "<p />DEBUG INFORMATION:<br />PostgreSQL functions not available!<br />database_type = 'pgsql' in config.inc.php, are you using a different database? $DEBUG_TEXT";
$error_text .= "<p />DEBUG INFORMATION:<br />PostgreSQL functions not available! (php5-pgsql installed?)<br />database_type = 'pgsql' in config.inc.php, are you using a different database? $DEBUG_TEXT";
}
}
else
@ -1559,7 +1611,7 @@ function db_query ($query, $ignore_errors = 0)
if ($error_text != "" && $ignore_errors == 0) die($error_text);
if ($error_text == "") {
if (preg_match("/^SELECT/i", $query))
if (preg_match("/^SELECT/i", trim($query)))
{
// if $query was a SELECT statement check the number of rows with [database_type]_num_rows ().
if ($CONF['database_type'] == "mysql") $number_rows = mysql_num_rows ($result);
@ -1641,6 +1693,8 @@ function db_assoc ($result)
//
function db_delete ($table,$where,$delete)
{
# $table = table_by_key($table); # intentionally disabled to avoid breaking delete.php in 2.3.x
# This makes the behaviour of this function incorrect, but delete.php is the only file in 2.3.x calling db_delete and expects this (wrong) behaviour.
$query = "DELETE FROM $table WHERE " . escape_string($where) . "='" . escape_string($delete) . "'";
$result = db_query ($query);
if ($result['rows'] >= 1)
@ -1744,8 +1798,15 @@ function db_log ($username,$domain,$action,$data)
if ($CONF['logging'] == 'YES')
{
$result = db_query ("INSERT INTO $table_log (timestamp,username,domain,action,data) VALUES (NOW(),'$username ($REMOTE_ADDR)','$domain','$action','$data')");
if ($result['rows'] != 1)
$logdata = array(
'username' => "$username ($REMOTE_ADDR)",
'domain' => $domain,
'action' => $action,
'data' => $data,
);
$result = db_insert('log', $logdata, array('timestamp') );
#$result = db_query ("INSERT INTO $table_log (timestamp,username,domain,action,data) VALUES (NOW(),'$username ($REMOTE_ADDR)','$domain','$action','$data')");
if ($result != 1)
{
return false;
}
@ -1756,7 +1817,16 @@ function db_log ($username,$domain,$action,$data)
}
}
/**
* db_in_clause
* Action: builds and returns the "field in(x, y)" clause for database queries
* Call: db_in_clause (string field, array values)
*/
function db_in_clause($field, $values) {
return " $field IN ('"
. implode("','",escape_string(array_values($values)))
. "') ";
}
//
// table_by_key
@ -2081,6 +2151,7 @@ function create_mailbox_subfolders($login,$cleartext_password)
$f='{'.$s_host.'}'.$s_prefix.$f;
$res=imap_createmailbox($i,$f);
if (!$res) {
error_log('Could not create IMAP folder $f: '.imap_last_error());
@imap_close($i);
return FALSE;
}
@ -2104,6 +2175,8 @@ function gen_show_status ($show_alias)
global $CONF, $table_alias;
$stat_string = "";
$show_alias = escape_string($show_alias);
$stat_goto = "";
$stat_result = db_query ("SELECT goto FROM $table_alias WHERE address='$show_alias'");
if ($stat_result['rows'] > 0)
@ -2281,7 +2354,7 @@ function create_admin($fUsername, $fPassword, $fPassword2, $fDomains, $no_genera
{
for ($i = 0; $i < sizeof ($fDomains); $i++)
{
$domain = $fDomains[$i];
$domain = escape_string($fDomains[$i]);
$result = db_query ("INSERT INTO " . table_by_key ('domain_admins') . " (username,domain,created) VALUES ('$fUsername','$domain',NOW())");
}
}
@ -2340,8 +2413,6 @@ function boolconf($setting) {
}
}
$table_admin = table_by_key ('admin');
$table_alias = table_by_key ('alias');
$table_alias_domain = table_by_key ('alias_domain');

@ -276,6 +276,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Мейл сървъра е резер
$PALANG['pAdminCreate_domain_button'] = 'Добави домейн';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Не мога да добавя домейна!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Домейна бе добавен успешно!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Грешка при изтриването на домейна!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -348,6 +349,8 @@ $PALANG['pUsersVacation_button_away'] = 'Отивам във ваканция';
$PALANG['pUsersVacation_button_back'] = 'Връщам се от ваканция';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Не мога да обновя настройките за вашият автоматичен отговор!</span>';
$PALANG['pUsersVacation_result_success'] = 'Вашият автоматичен отговор беше премахнат!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox'; # XXX
$PALANG['pCreate_dbLog_createalias'] = 'create alias'; # XXX

@ -274,6 +274,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
$PALANG['pAdminCreate_domain_button'] = 'Afegir domini';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Imposible afegir el domini!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'El domini ha estat afegit!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -347,6 +348,8 @@ $PALANG['pUsersVacation_button_away'] = 'Absent';
$PALANG['pUsersVacation_button_back'] = 'De tornada';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Imposible actualitzar la configuració de la seva resposta automàtica!</span>';
$PALANG['pUsersVacation_result_success'] = 'La seva resposta automàtica ha estat esborrada!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox'; # XXX
$PALANG['pCreate_dbLog_createalias'] = 'create alias'; # XXX

@ -275,6 +275,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = '备份邮件服务器';
$PALANG['pAdminCreate_domain_button'] = '新增';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">新增域失败!</span>';
$PALANG['pAdminCreate_domain_result_success'] = '新增域成功!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -347,6 +348,8 @@ $PALANG['pUsersVacation_button_away'] = '开启自动回复';
$PALANG['pUsersVacation_button_back'] = '关闭自动回复';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">更新自动回复失败!</span>';
$PALANG['pUsersVacation_result_success'] = '你的自动回复已经关闭!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = '新建邮箱';
$PALANG['pCreate_dbLog_createalias'] = '新建别名';

@ -283,6 +283,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Tento server je záložní MX domény
$PALANG['pAdminCreate_domain_button'] = 'Přidat doménu';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Nepodařilo se přidat doménu!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Doména byla přidána!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Nepodařilo se odstranit doménu!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -356,6 +357,8 @@ $PALANG['pUsersVacation_button_away'] = 'Odjet pryč';
$PALANG['pUsersVacation_button_back'] = 'Vrátit se';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Nepodařilo se upravit nastavení!</span>';
$PALANG['pUsersVacation_result_success'] = 'Nastavení bylo upraveno!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'vytvořil schránku';
$PALANG['pCreate_dbLog_createalias'] = 'vytvořil alias';

@ -5,6 +5,8 @@
// by Lars
// updated by Jesper R. Meyer <jrm at upthere dot dk>
//
// titanus <titanus@aptget.dk>, 2013
//
$PALANG['YES'] = 'JA';
$PALANG['NO'] = 'NEJ';
@ -16,21 +18,21 @@ $PALANG['save'] = 'Gem';
$PALANG['confirm'] = 'Er du sikker på du vil slette dette?\n';
$PALANG['confirm_domain'] = 'Vil du virkelig slette alle adresser for dette domæne? Dette kan ikke fortrydes!\n';
$PALANG['check_update'] = 'Søg efter opdateringer';
$PALANG['invalid_parameter'] = 'Ugyldig parameter!';
$PALANG['invalid_parameter'] = 'Ugyldig parameter.';
$PALANG['pFooter_logged_as'] = 'Indlogget som %s';
$PALANG['pFooter_logged_as'] = 'Logget ind som %s';
$PALANG['pLogin_welcome'] = 'Postadministrator: Log ind for at administrere dine domæner.';
$PALANG['pLogin_username'] = 'Brugernavn (email)';
$PALANG['pLogin_password'] = 'Adgangskode';
$PALANG['pLogin_button'] = 'Login';
$PALANG['pLogin_failed'] = 'Your email address or password are not correct.'; # XXX
$PALANG['pLogin_login_users'] = 'Bruger: Log ind på brugersektionen her.';
$PALANG['pLogin_button'] = 'Log ind';
$PALANG['pLogin_failed'] = 'Dit brugernavn eller adgangskode var ikke korrekt.';
$PALANG['pLogin_login_users'] = 'Log ind på brugersektionen her.';
$PALANG['pMenu_main'] = 'Start';
$PALANG['pMenu_overview'] = 'Oversigt';
$PALANG['pMenu_create_alias'] = 'Tilføj alias';
$PALANG['pMenu_create_alias_domain'] = 'Add Alias Domain'; # XXX
$PALANG['pMenu_create_alias_domain'] = 'Tilføje alias domæne';
$PALANG['pMenu_create_mailbox'] = 'Tilføj postboks';
$PALANG['pMenu_fetchmail'] = 'Hent email';
$PALANG['pMenu_sendmail'] = 'Send email';
@ -38,14 +40,14 @@ $PALANG['pMenu_password'] = 'Adgangskode';
$PALANG['pMenu_viewlog'] = 'Vis log';
$PALANG['pMenu_logout'] = 'Log ud';
$PALANG['pMain_welcome'] = 'Velkommen til Postfix Admin!';
$PALANG['pMain_overview'] = 'Vis alle alias og postbokse. Du kan redigere/slette dem herfra.';
$PALANG['pMain_create_alias'] = 'Tilføj nyt alias til dit domæne.';
$PALANG['pMain_create_mailbox'] = 'Tilføj ny postboks til dit domæne.';
$PALANG['pMain_sendmail'] = 'Send en email til en af dine nyoprettede postbokse.';
$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.';
$PALANG['pMain_create_mailbox'] = 'Tilføj en ny postboks til et domæne.';
$PALANG['pMain_sendmail'] = 'Send en email til en eksisterende postboks.';
$PALANG['pMain_password'] = 'Ændre adgangskoden til din administratorkonto.';
$PALANG['pMain_viewlog'] = 'Vis logfiler.';
$PALANG['pMain_logout'] = 'Log ud fra systemet.';
$PALANG['pMain_logout'] = 'Log af systemet.';
$PALANG['pOverview_disabled'] = 'Deaktiveret';
$PALANG['pOverview_unlimited'] = 'Ubegrænset';
@ -53,21 +55,21 @@ $PALANG['pOverview_title'] = ':: Oprettede domæner';
$PALANG['pOverview_up_arrow'] = 'Gå til top';
$PALANG['pOverview_right_arrow'] = 'Næste side';
$PALANG['pOverview_left_arrow'] = 'Foregående side';
$PALANG['pOverview_alias_domain_title'] = ':: Domain Aliases'; # XXX
$PALANG['pOverview_alias_domain_title'] = ':: Domæne aliases';
$PALANG['pOverview_alias_title'] = ':: Alias';
$PALANG['pOverview_mailbox_title'] = ':: Postbokse';
$PALANG['pOverview_button'] = 'Vis';
$PALANG['pOverview_welcome'] = 'Oversigt for ';
$PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX
$PALANG['pOverview_alias_domain_target'] = '%s is an Alias Domain for:'; # XXX
$PALANG['pOverview_alias_domain_aliases'] = 'Alias domæner';
$PALANG['pOverview_alias_domain_target'] = '%s er et alias domæne for:';
$PALANG['pOverview_alias_alias_count'] = 'Alias';
$PALANG['pOverview_alias_mailbox_count'] = 'Postbokse';
$PALANG['pOverview_alias_address'] = 'Alias';
$PALANG['pOverview_alias_goto'] = 'Modtager';
$PALANG['pOverview_alias_modified'] = 'Senest ændret';
$PALANG['pOverview_alias_domain_modified'] = 'Last Modified'; # XXX
$PALANG['pOverview_alias_domain_modified'] = 'Senest ændret';
$PALANG['pOverview_alias_active'] = 'Aktiveret';
$PALANG['pOverview_alias_domain_active'] = 'Active'; # XXX
$PALANG['pOverview_alias_domain_active'] = 'Aktiveret';
$PALANG['pOverview_alias_edit'] = 'Alias';
$PALANG['and_x_more'] = '[og %s til...]';
$PALANG['pOverview_mailbox_username'] = 'Emailadresse';
@ -81,7 +83,7 @@ $PALANG['pOverview_vacation_option'] = 'Angiv autosvar';
$PALANG['pOverview_get_domain'] = 'Domæne';
$PALANG['pOverview_get_aliases'] = 'Alias';
$PALANG['pOverview_get_alias_domains'] = 'Domain Aliases'; # XXX
$PALANG['pOverview_get_alias_domains'] = 'Domæne aliases';
$PALANG['pOverview_get_mailboxes'] = 'Postbokse';
$PALANG['pOverview_get_quota'] = 'Postboks Kvota (MB)';
$PALANG['pOverview_get_modified'] = 'Senest ændret';
@ -90,34 +92,34 @@ $PALANG['pDelete_delete_error'] = '<span class="error_msg">Kan ikke slette denne
$PALANG['pDelete_delete_success'] = '%s er slettet.';
$PALANG['pDelete_postdelete_error'] = '<span class="error_msg">Kunne ikke fjerne postkassen ';
$PALANG['pDelete_domain_error'] = '<span class="error_msg">Dette domæne er ikke dit ';
$PALANG['pDelete_domain_alias_error'] = '<span class="error_msg">This domain is not yours '; # XXX
$PALANG['pDelete_domain_alias_error'] = '<span class="error_msg">Dette domæne er ikke dit ';
$PALANG['pDelete_alias_error'] = '<span class="error_msg">Kunne ikke slette aliaset ';
$PALANG['pCreate_alias_domain_welcome'] = 'Mirror addresses of one of your domains to another.'; # XXX
$PALANG['pCreate_alias_domain_alias'] = 'Alias Domain'; # XXX
$PALANG['pCreate_alias_domain_alias_text'] = 'The domain that mails come in for.'; # XXX
$PALANG['pCreate_alias_domain_target'] = 'Target Domain'; # XXX
$PALANG['pCreate_alias_domain_target_text'] = 'The domain where mails should go to.'; # XXX
$PALANG['pCreate_alias_domain_active'] = 'Active'; # XXX
$PALANG['pCreate_alias_domain_button'] = 'Add Alias Domain'; # XXX
$PALANG['pCreate_alias_domain_error1'] = 'You are not allowed to create the chosen configuration.'; # XXX
$PALANG['pCreate_alias_domain_error2'] = 'The chosen configuration is invalid, please choose a different one!'; # XXX
$PALANG['pCreate_alias_domain_error3'] = 'Database insert failed.'; # XXX
$PALANG['pCreate_alias_domain_error4'] = 'All domains are already aliased.'; # XXX
$PALANG['pCreate_alias_domain_success'] = 'The domain alias has been added to the alias domain table!'; # XXX
$PALANG['pCreate_alias_welcome'] = 'Tilføj nyt alias til dit domæne.';
$PALANG['pCreate_alias_domain_welcome'] = 'Spejl adresser fra et domæne til et andet.';
$PALANG['pCreate_alias_domain_alias'] = 'Alias-domæne';
$PALANG['pCreate_alias_domain_alias_text'] = 'Domæne som emails kommer fra.';
$PALANG['pCreate_alias_domain_target'] = 'Modtager-domæne';
$PALANG['pCreate_alias_domain_target_text'] = 'Domæne hvor emails skal sendes til.';
$PALANG['pCreate_alias_domain_active'] = 'Aktiv';
$PALANG['pCreate_alias_domain_button'] = 'Tilføj alias domæne';
$PALANG['pCreate_alias_domain_error1'] = 'Du har ikke tilladelse til at lave den valgte konfiguration';
$PALANG['pCreate_alias_domain_error2'] = 'Den valgte konfiguration er ikke korrekt, vælg venligst en anden.';
$PALANG['pCreate_alias_domain_error3'] = 'Indsætning i databasen fejlede.';
$PALANG['pCreate_alias_domain_error4'] = 'Alle domænerne har allerede aliases.';
$PALANG['pCreate_alias_domain_success'] = 'Domæne-alias blev tilføjet alias-tabellen.';
$PALANG['pCreate_alias_welcome'] = 'Tilføj et nyt alias til domænet.';
$PALANG['pCreate_alias_address'] = 'Alias';
$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Aliaset er ikke gyldigt!</span>';
$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Emailadressen eksisterer allerede. Vælg venligst en anden!</span>';
$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Du har nået grænsen for antallet af alias til dit domæne!</span>';
$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Aliaset er ikke gyldigt.</span>';
$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Emailadressen eksisterer allerede, vælg venligst en anden.</span>';
$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Du har nået grænsen for antallet af aliases til domænet.</span>';
$PALANG['pCreate_alias_goto'] = 'Modtager';
$PALANG['pCreate_alias_active'] = 'Aktiv';
$PALANG['pCreate_alias_button'] = 'Tilføj alias';
$PALANG['pCreate_alias_goto_text'] = 'Hvor emailen skal videresendes til.';
$PALANG['pCreate_alias_goto_text_error'] = 'Hvor emailen skal videresendes til.<br /><span class="error_msg">Modtageradressen er ikke gyldig!</span>';
$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Kan ikke tilføje aliaset til alias-tabellen!</span>';
$PALANG['pCreate_alias_result_success'] = 'Aliaset er blevet tilføjet til alias-tabellen!';
$PALANG['pCreate_alias_catchall_text'] = 'For at tilføje et stjerne-alias, brug en "*" som alias.<br />For domæne til domæne-videresending brug "*@domain.tld" som modtager.';
$PALANG['pCreate_alias_goto_text_error'] = 'Hvor emailen skal videresendes til.<br /><span class="error_msg">Modtageradressen er ikke gyldig.</span>';
$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Kan ikke tilføje aliaset til alias-tabellen.</span>';
$PALANG['pCreate_alias_result_success'] = 'Aliaset er blevet tilføjet alias-tabellen.';
$PALANG['pCreate_alias_catchall_text'] = 'For at tilføje et stjerne-alias, brug en "*" som alias.<br />For domæne til domæne-videresending brug "*@domæne.tld" som modtager.';
$PALANG['pEdit_alias_welcome'] = 'Rediger alias.<br />En modtager pr. linje.';
$PALANG['pEdit_alias_address'] = 'Alias';
@ -127,66 +129,66 @@ $PALANG['pEdit_alias_active'] = 'Aktiv';
$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Du udfyldte ikke noget i Modtager(e)</span>';
$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Den tilføjede emailadresse er ikke gyldig: ';
$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Dette domæne tilhører ikke dig: ';
$PALANG['pEdit_alias_domain_result_error'] = '<span class="error_msg">Unable to modify the alias domain!</span>'; # XXX
$PALANG['pEdit_alias_forward_and_store'] = 'Lever email til den lokale postboks.';
$PALANG['pEdit_alias_forward_only'] = 'Videresend til angiven emailadresse uden lokal kopi.';
$PALANG['pEdit_alias_domain_result_error'] = '<span class="error_msg">Kan ikke ændre alias-domænet.</span>';
$PALANG['pEdit_alias_forward_and_store'] = 'Aflever email til den lokale postboks.';
$PALANG['pEdit_alias_forward_only'] = 'Videresend til angivene emailadresse uden lokal kopi.';
$PALANG['pEdit_alias_button'] = 'Ret alias';
$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Kan ikke redigere aliaset!</span>';
$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Kan ikke redigere aliaset.</span>';
$PALANG['pCreate_mailbox_welcome'] = 'Tilføj en ny lokal postboks til dit domæne.';
$PALANG['pCreate_mailbox_welcome'] = 'Tilføj en ny lokal postboks til domænet.';
$PALANG['pCreate_mailbox_username'] = 'Brugernavn';
$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Emailadressen er ikke gyldig!</span>';
$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Emailadressen eksisterer allerede. Vælg venligst en anden!</span>';
$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Du har nået grænsen for antallet af postbokse til dit domæne!</span>';
$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Emailadressen er ikke gyldig.</span>';
$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Emailadressen eksisterer allerede. Vælg venligst en anden.</span>';
$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Du har nået grænsen for antallet af postbokse til domæne.</span>';
$PALANG['pCreate_mailbox_password'] = 'Adgangskode';
$PALANG['pCreate_mailbox_password2'] = 'Adgangskode (igen)';
$PALANG['pCreate_mailbox_password_text'] = 'Adgangskode til POP3/IMAP';
$PALANG['pCreate_mailbox_password_text_error'] = 'Adgangskode til POP3/IMAP<br /><span class="error_msg">Adgangskoderne er ikke ens!<br />Eller er tomme!</span>';
$PALANG['pCreate_mailbox_password_text_error'] = 'Adgangskode til POP3/IMAP<br /><span class="error_msg">Adgangskoderne er ikke ens.<br />Eller tomme.</span>';
$PALANG['pCreate_mailbox_name'] = 'Navn';
$PALANG['pCreate_mailbox_name_text'] = 'Fulde navn';
$PALANG['pCreate_mailbox_quota'] = 'Kvota';
$PALANG['pCreate_mailbox_quota_text'] = 'MB';
$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Den ønskede kvota er for høj!</span>';
$PALANG['pCreate_mailbox_quota_text'] = 'MB';
$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Den valgte kvota er for høj.</span>';
$PALANG['pCreate_mailbox_active'] = 'Aktiv';
$PALANG['pCreate_mailbox_mail'] = 'Send velkomsthilsen';
$PALANG['pCreate_mailbox_button'] = 'Tilføj postboks';
$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Kan ikke tilføje postboksen til postboks-tabellen!</span>';
$PALANG['pCreate_mailbox_result_success'] = 'Postboksen er tilføjet til postboks-tabellen!';
$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Kan ikke tilføje postboksen til postboks-tabellen.</span>';
$PALANG['pCreate_mailbox_result_success'] = 'Postboksen er tilføjet til postboks-tabellen.';
$PALANG['pCreate_mailbox_result_succes_nosubfolders'] = 'Postkassen er tilføjet, men ingen (eller kun dele) af de foruddefinerede undermapper kunne oprettes.';
$PALANG['pEdit_mailbox_welcome'] = 'Rediger postboks.';
$PALANG['pEdit_mailbox_username'] = 'Brugernavn';
$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Kan ikke finde postboksen!</span>';
$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Kan ikke finde postboksen.</span>';
$PALANG['pEdit_mailbox_password'] = 'Ny adgangskode';
$PALANG['pEdit_mailbox_password2'] = 'Ny adgangskode (igen)';
$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Adgangskoderne er ikke ens!</span>';
$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Adgangskoderne er ikke ens.</span>';
$PALANG['pEdit_mailbox_name'] = 'Navn';
$PALANG['pEdit_mailbox_name_text'] = 'Fulde navn';
$PALANG['pEdit_mailbox_quota'] = 'Kvota';
$PALANG['pEdit_mailbox_quota_text'] = 'MB';
$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Den ønskede kvota er for høj!</span>';
$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Den valgte kvota er for høj.</span>';
$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Dette domæne er ikke dit: ';
$PALANG['pEdit_mailbox_button'] = 'Ret postboks';
$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Kan ikke ændre adgangskoden!</span>';
$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Kan ikke ændre adgangskoden.</span>';
$PALANG['pPassword_welcome'] = 'Ændre din adgangskode.';
$PALANG['pPassword_welcome'] = 'Ændr din adgangskode.';
$PALANG['pPassword_admin'] = 'Adgangskode';
$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Brugernavnet kunne ikke findes!</span>';
$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Brugernavnet kunne ikke findes.</span>';
$PALANG['pPassword_password_current'] = 'Nuværende adgangskode';
$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Du glemte at skrive din nuværende adgangskode!</span>';
$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Du glemte at skrive din nuværende adgangskode.</span>';
$PALANG['pPassword_password'] = 'Ny adgangskode';
$PALANG['pPassword_password2'] = 'Ny adgangskode (igen)';
$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Adgangskoderne er ikke ens!<br />Eller er tomme!</span>';
$PALANG['pPassword_button'] = 'Ændre adgangskode';
$PALANG['pPassword_result_error'] = '<span class="error_msg">Kan ikke ændre adgangskoden!</span>';
$PALANG['pPassword_result_success'] = 'Din adgangskode er ændret!';
$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Adgangskoderne er ikke ens.<br />Eller tomme.</span>';
$PALANG['pPassword_button'] = 'Ændr adgangskode';
$PALANG['pPassword_result_error'] = '<span class="error_msg">Kan ikke ændre adgangskoden.</span>';
$PALANG['pPassword_result_success'] = 'Din adgangskode er ændret.';
$PALANG['pEdit_vacation_set'] = 'Ændre / Angiv autosvar';
$PALANG['pEdit_vacation_set'] = 'Ændr / Angiv autosvar';
$PALANG['pEdit_vacation_remove'] = 'Fjern autosvar';
$PALANG['pVacation_result_error'] = '<span class="error_msg">Autosvarindstillinger kunne ikke opdateres!</span>';
$PALANG['pVacation_result_removed'] = 'Autosvar er fjernet!';
$PALANG['pVacation_result_added'] = 'Autosvar er aktiveret!';
$PALANG['pVacation_result_error'] = '<span class="error_msg">Indstillingerne til autosvar kunne ikke opdateres.</span>';
$PALANG['pVacation_result_removed'] = 'Autosvar er fjernet.';
$PALANG['pVacation_result_added'] = 'Autosvar er aktiveret.';
$PALANG['pViewlog_welcome'] = 'Vis de sidste 10 poster for ';
$PALANG['pViewlog_timestamp'] = 'Tidsstempel';
@ -198,40 +200,40 @@ $PALANG['pViewlog_data'] = 'Data';
$PALANG['pViewlog_action_create_mailbox'] = 'tilføj postboks';
$PALANG['pViewlog_action_delete_mailbox'] = 'slet postboks';
$PALANG['pViewlog_action_edit_mailbox'] = 'rediger postboks';
$PALANG['pViewlog_action_edit_mailbox_state'] = 'ændre postboks aktiv';
$PALANG['pViewlog_action_edit_mailbox_state'] = 'ændr postboks status';
$PALANG['pViewlog_action_create_alias'] = 'tilføj alias';
$PALANG['pViewlog_action_create_alias_domain'] = 'create alias domain'; # XXX
$PALANG['pViewlog_action_create_alias_domain'] = 'lav domæne-alias';
$PALANG['pViewlog_action_delete_alias'] = 'slet alias';
$PALANG['pViewlog_action_delete_alias_domain'] = 'delete alias domain'; # XXX
$PALANG['pViewlog_action_delete_alias_domain'] = 'slet domæne-alias';
$PALANG['pViewlog_action_edit_alias'] = 'rediger alias';
$PALANG['pViewlog_action_edit_alias_state'] = 'ændre alias aktiv';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'edit alias domain active'; # XXX
$PALANG['pViewlog_action_edit_password'] = 'ændre adgangskode';
$PALANG['pViewlog_action_edit_alias_state'] = 'ændr alias status';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'ændr domæne-alias status';
$PALANG['pViewlog_action_edit_password'] = 'ændr adgangskode';
$PALANG['pViewlog_button'] = 'Vis';
$PALANG['pViewlog_result_error'] = '<span class="error_msg">Kan ikke finde loggen!</span>';
$PALANG['pViewlog_result_error'] = '<span class="error_msg">Loggen kan ikke findes.</span>';
$PALANG['pSendmail_welcome'] = 'Send en email.';
$PALANG['pSendmail_admin'] = 'Afsender';
$PALANG['pSendmail_to'] = 'Modtager';
$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Modtager er tom eller en ugyldig emailadresse!</span>';
$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Modtager er tom, eller har en ugyldig emailadresse.</span>';
$PALANG['pSendmail_subject'] = 'Emne';
$PALANG['pSendmail_subject_text'] = 'Velkommen';
$PALANG['pSendmail_body'] = 'Meddelelse';
$PALANG['pSendmail_button'] = 'Send email';
$PALANG['pSendmail_result_error'] = '<span class="error_msg">Kan ikke sende email!</span>';
$PALANG['pSendmail_result_success'] = 'Email sendt!';
$PALANG['pSendmail_result_error'] = '<span class="error_msg">Kan ikke sende email.</span>';
$PALANG['pSendmail_result_success'] = 'Email sendt.';
$PALANG['pAdminMenu_list_admin'] = 'Administratorliste';
$PALANG['pAdminMenu_list_domain'] = 'Domæneliste';
$PALANG['pAdminMenu_list_domain'] = 'Domæne-liste';
$PALANG['pAdminMenu_list_virtual'] = 'Virtuel Liste';
$PALANG['pAdminMenu_viewlog'] = 'Vis Log';
$PALANG['pAdminMenu_backup'] = 'Backup';
$PALANG['pAdminMenu_create_domain_admins'] = 'Domæneadministrator';
$PALANG['pAdminMenu_create_domain_admins'] = 'Domæne-administrator';
$PALANG['pAdminMenu_create_admin'] = 'Ny administrator';
$PALANG['pAdminMenu_create_domain'] = 'Nyt domæne';
$PALANG['pAdminMenu_create_alias'] = 'Tilføj alias';
$PALANG['pAdminMenu_create_mailbox'] = 'Tilføj postboks';
$PALANG['pAdminMenu_create_alias'] = 'Nyt alias';
$PALANG['pAdminMenu_create_mailbox'] = 'Ny postboks';
$PALANG['pAdminList_admin_domain'] = 'Domæne';
$PALANG['pAdminList_admin_username'] = 'Administrator';
@ -243,7 +245,7 @@ $PALANG['pAdminList_domain_domain'] = 'Domæne';
$PALANG['pAdminList_domain_description'] = 'Beskrivelse';
$PALANG['pAdminList_domain_aliases'] = 'Alias';
$PALANG['pAdminList_domain_mailboxes'] = 'Postbokse';
$PALANG['pAdminList_domain_maxquota'] = 'Maks. kvota (MB)';
$PALANG['pAdminList_domain_maxquota'] = 'Maksimal kvota (MB)';
$PALANG['pAdminList_domain_transport'] = 'Transport';
$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
$PALANG['pAdminList_domain_modified'] = 'Senest ændret';
@ -264,105 +266,108 @@ $PALANG['pAdminList_virtual_mailbox_active'] = 'Aktiv';
$PALANG['pAdminCreate_domain_welcome'] = 'Tilføj et nyt domæne';
$PALANG['pAdminCreate_domain_domain'] = 'Domæne';
$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Domænet eksisterer allerede!</span>';
$PALANG['pAdminCreate_domain_domain_text_error2'] = '<span class="error_msg">Domænet er ugyldigt!</span>';
$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Domænet eksisterer allerede.</span>';
$PALANG['pAdminCreate_domain_domain_text_error2'] = '<span class="error_msg">Domænet er ikke gyldigt.</span>';
$PALANG['pAdminCreate_domain_description'] = 'Beskrivelse';
$PALANG['pAdminCreate_domain_aliases'] = 'Alias';
$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = annuller | 0 = uendeligt';
$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = annullér | 0 = uendeligt';
$PALANG['pAdminCreate_domain_mailboxes'] = 'Postbokse';
$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = annuller | 0 = uendeligt';
$PALANG['pAdminCreate_domain_maxquota'] = 'Maks. kvota';
$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = annuller | 0 = uendeligt';
$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = annullér | 0 = uendeligt';
$PALANG['pAdminCreate_domain_maxquota'] = 'Maksimal kvota';
$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = annullér | 0 = uendeligt';
$PALANG['pAdminCreate_domain_transport'] = 'Transport';
$PALANG['pAdminCreate_domain_transport_text'] = 'Præciser transport';
$PALANG['pAdminCreate_domain_defaultaliases'] = 'Tilføj standard alias';
$PALANG['pAdminCreate_domain_transport_text'] = 'Præcisér transport';
$PALANG['pAdminCreate_domain_defaultaliases'] = 'Tilføj standard alias(es)';
$PALANG['pAdminCreate_domain_defaultaliases_text'] = '';
$PALANG['pAdminCreate_domain_backupmx'] = 'Mailserveren er backup MX';
$PALANG['pAdminCreate_domain_button'] = 'Tilføj domæne';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Kan ikke tilføje domæne!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Domænet er tilføjet!';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Kan ikke tilføje domænet.</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Domænet er tilføjet.';
$PALANG['pAdminDelete_admin_error'] = 'Administratoren kunne ikke slettes.';
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Domænet kunne ikke slettes!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Domænet kunne ikke slettes.</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Domæne-aliaset kunne ikke slettes.</span>';
$PALANG['pAdminEdit_domain_welcome'] = 'Rediger et domæne';
$PALANG['pAdminEdit_domain_welcome'] = 'Redigér et domæne';
$PALANG['pAdminEdit_domain_domain'] = 'Domæne';
$PALANG['pAdminEdit_domain_description'] = 'Beskrivelse';
$PALANG['pAdminEdit_domain_aliases'] = 'Alias';
$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = annuller | 0 = uendeligt';
$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = annullér | 0 = uendeligt';
$PALANG['pAdminEdit_domain_mailboxes'] = 'Postbokse';
$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = annuller | 0 = uendeligt';
$PALANG['pAdminEdit_domain_maxquota'] = 'Maks. kvota';
$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = annuller | 0 = uendeligt';
$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = annullér | 0 = uendeligt';
$PALANG['pAdminEdit_domain_maxquota'] = 'Maksimal kvota';
$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = annullér | 0 = uendeligt';
$PALANG['pAdminEdit_domain_transport'] = 'Transport';
$PALANG['pAdminEdit_domain_transport_text'] = 'Præciser transport';
$PALANG['pAdminEdit_domain_transport_text'] = 'Præcisér transport';
$PALANG['pAdminEdit_domain_backupmx'] = 'Mailserveren er backup MX';
$PALANG['pAdminEdit_domain_active'] = 'Aktiv';
$PALANG['pAdminEdit_domain_button'] = 'Rediger domæne';
$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Kan ikke rette domæne!</span>';
$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Kan ikke rette domænet.</span>';
$PALANG['pAdminCreate_admin_welcome'] = 'Tilføj ny domæneadministrator';
$PALANG['pAdminCreate_admin_welcome'] = 'Tilføj en ny domæneadministrator';
$PALANG['pAdminCreate_admin_username'] = 'Administrator';
$PALANG['pAdminCreate_admin_username_text'] = 'Emailadresse';
$PALANG['pAdminCreate_admin_username_text_error1'] = 'Emailadresse<br /><span class="error_msg">Administrator er ikke en gyldig emailadresse!</span>';
$PALANG['pAdminCreate_admin_username_text_error1'] = 'Emailadresse<br /><span class="error_msg">Administrator er ikke en gyldig emailadresse.</span>';
$PALANG['pAdminCreate_admin_username_text_error2'] = 'Emailadresse<br /><span class="error_msg">Aministratoren findes allerede eller er ikke gyldig</span>';
$PALANG['pAdminCreate_admin_password'] = 'Adgangskode';
$PALANG['pAdminCreate_admin_password2'] = 'Adgangskode (igen)';
$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Adgangskoderne er ikke ens!<br />Eller er tomme!</span>';
$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Adgangskoderne er ikke ens.<br />Eller tomme.</span>';
$PALANG['pAdminCreate_admin_button'] = 'Tilføj administrator';
$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Kan ikke tilføje administrator!</span>';
$PALANG['pAdminCreate_admin_result_success'] = 'Administrator er tilføjet!';
$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Administratoren kunne ikke tilføjes.</span>';
$PALANG['pAdminCreate_admin_result_success'] = 'Administratoren er tilføjet.';
$PALANG['pAdminCreate_admin_address'] = 'Domæne';
$PALANG['pAdminEdit_admin_welcome'] = 'Rediger en domæneadministrator';
$PALANG['pAdminEdit_admin_welcome'] = 'Redigér en domæneadministrator';
$PALANG['pAdminEdit_admin_username'] = 'Administrator';
$PALANG['pAdminEdit_admin_password'] = 'Adgangskode';
$PALANG['pAdminEdit_admin_password2'] = 'Adgangskode (igen)';
$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Adgangskoderne er ikke ens!<br />Eller er tomme!</span>';
$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Adgangskoderne er ikke ens.<br />Eller tomme.</span>';
$PALANG['pAdminEdit_admin_active'] = 'Aktiv';
$PALANG['pAdminEdit_admin_super_admin'] = 'Superadministrator';
$PALANG['pAdminEdit_admin_button'] = 'Rediger administrator';
$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Kan ikke rette administrator!</span>';
$PALANG['pAdminEdit_admin_result_success'] = 'Administrator er rettet!';
$PALANG['pAdminEdit_admin_button'] = 'Redigér administrator';
$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Kunne ikke rette administrator.</span>';
$PALANG['pAdminEdit_admin_result_success'] = 'Administrator er rettet.';
$PALANG['pUsersLogin_welcome'] = 'Postboksbruger: Login for at ændre adgangskode og videresending.';
$PALANG['pUsersLogin_welcome'] = 'Postboksbruger: Log ind for at ændre adgangskode og videresending.';
$PALANG['pUsersLogin_username'] = 'Brugernavn (email)';
$PALANG['pUsersLogin_password'] = 'Adgangskode';
$PALANG['pUsersLogin_button'] = 'Log ind';
$PALANG['pUsersLogin_username_incorrect'] = 'Dit brugernavn er forkert. Tjek at du bruger din emailadresse som brugernavn!';
$PALANG['pUsersLogin_password_incorrect'] = 'Din adgangskode er ikke korrekt!';
$PALANG['pUsersLogin_username_incorrect'] = 'Dit brugernavn er forkert. Tjek at du bruger din emailadresse som brugernavn.';
$PALANG['pUsersLogin_password_incorrect'] = 'Din adgangskode er ikke korrekt.';
$PALANG['pUsersMenu_vacation'] = 'Autosvar';
$PALANG['pUsersMenu_edit_alias'] = 'Rediger videresending';
$PALANG['pUsersMenu_password'] = 'Ændre adgangskode';
$PALANG['pUsersMenu_edit_alias'] = 'Redigér videresending';
$PALANG['pUsersMenu_password'] = 'Ændr adgangskode';
$PALANG['pUsersMain_vacation'] = 'Tilføj en "ikke tilstede" besked eller et autosvar til din emailadresse.';
$PALANG['pUsersMain_vacationSet'] = $PALANG['pUsersMenu_vacation'] . ' er AKTIVERET, klik \'' . $PALANG['pUsersMenu_vacation'] . '\' for at ' . $PALANG['edit'] . '/fjerne';
$PALANG['pUsersMain_edit_alias'] = 'Ændre levering/videresending af email.';
$PALANG['pUsersMain_password'] = 'Ændre din nuværende adgangskode.';
$PALANG['pUsersMain_edit_alias'] = 'Ændr levering/videresending af email.';
$PALANG['pUsersMain_password'] = 'Ændr din nuværende adgangskode.';
$PALANG['pUsersVacation_welcome'] = 'Autosvar.';
$PALANG['pUsersVacation_welcome_text'] = 'Du har allerede et autosvar indstillet!';
$PALANG['pUsersVacation_welcome_text'] = 'Du har allerede autosvar indstillet!';
$PALANG['pUsersVacation_subject'] = 'Emne';
$PALANG['pUsersVacation_subject_text'] = 'Ikke tilstede';
$PALANG['pUsersVacation_body'] = 'Meddelelse'; # XXX text changed to 'Message'
$PALANG['pUsersVacation_body'] = 'Meddelelse';
$PALANG['pUsersVacation_body_text'] = <<<EOM
Jeg er ikke tilstede i perioden <dato> til <dato>.
I nødstilfælde kan <kontaktperson> kontaktes.
EOM;
$PALANG['pUsersVacation_button_away'] = 'Tager afsted';
$PALANG['pUsersVacation_button_back'] = 'Kommer tilbage';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Kan ikke opdatere indstillinger for dit autosvar!</span>';
$PALANG['pUsersVacation_result_success'] = 'Dit autosvar er fjernet!';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Kan ikke opdatere indstillingerne for autosvar.</span>';
$PALANG['pUsersVacation_result_success'] = 'Autosvar fjernet.';
$PALANG['pUsersVacation_activefrom'] = 'Aktiv fra';
$PALANG['pUsersVacation_activeuntil'] = 'Aktiv til';
$PALANG['pCreate_dbLog_createmailbox'] = 'tilføj postboks';
$PALANG['pCreate_dbLog_createalias'] = 'tilføj alias';
$PALANG['pDelete_dbLog_deletealias'] = 'slet alias';
$PALANG['pDelete_dbLog_deletemailbox'] = 'slet postboks';
$PALANG['pEdit_dbLog_editactive'] = 'ændre aktivtilstand';
$PALANG['pEdit_dbLog_editalias'] = 'rediger alias';
$PALANG['pEdit_dbLog_editmailbox'] = 'rediger postboks';
$PALANG['pEdit_dbLog_editactive'] = 'ændr aktivtilstand';
$PALANG['pEdit_dbLog_editalias'] = 'redigér alias';
$PALANG['pEdit_dbLog_editmailbox'] = 'redigér postboks';
$PALANG['pSearch'] = 'søg';
$PALANG['pSearch_welcome'] = 'Søg efter: ';
@ -377,26 +382,26 @@ $PALANG['pBroadcast_message'] = 'Meddelelse';
$PALANG['pBroadcast_send'] = 'Send meddelelse';
$PALANG['pBroadcast_success'] = 'Din meddelelse er rundsendt.';
$PALANG['pAdminMenu_broadcast_message'] = 'Rundsend meddelse';
$PALANG['pBroadcast_error_empty'] = 'Felterne Dit navn, Emne og Meddelelse skal udfyldes!';
$PALANG['pBroadcast_error_empty'] = 'Felterne "Dit navn", "Emne" og "Meddelelse" skal alle udfyldes.';
$PALANG['pStatus_undeliverable'] = 'kan måske ikke leveres ';
$PALANG['pStatus_custom'] = 'Leveres til ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['pPasswordTooShort'] = "Adgangskoden er for kort - mindst %s tegn kræves";
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
$PALANG['pInvalidMailRegex'] = "Invalid email address, fails regexp check"; # XXX
$PALANG['pPasswordTooShort'] = "Adgangskoden er for kort. Der kræves mindst %s tegn";
$PALANG['pInvalidDomainRegex'] = "Ugyldigt domæne-navn %s. Fejlede regulært udtryks-tjek";
$PALANG['pInvalidDomainDNS'] = "Ugyldigt domæne %s, og/eller ikke fundet i DNS";
$PALANG['pInvalidMailRegex'] = "Ugyldig emailadresse. Fejlede regulært udtryks-tjek";
$PALANG['pFetchmail_welcome'] = 'Hent post for:';
$PALANG['pFetchmail_new_entry'] = 'Ny regel';
$PALANG['pFetchmail_database_save_error'] = 'Reglen kunne ikke gemmes in databasen!';
$PALANG['pFetchmail_database_save_error'] = 'Reglen kunne ikke gemmes i databasen.';
$PALANG['pFetchmail_database_save_success'] = 'Reglen er gemt i databasen.';
$PALANG['pFetchmail_error_invalid_id'] = 'Reglen med ID %s eksisterer ikke!';
$PALANG['pFetchmail_invalid_mailbox'] = 'Ugyldig postboks!';
$PALANG['pFetchmail_server_missing'] = 'Angiv navnet på fjernserveren!';
$PALANG['pFetchmail_user_missing'] = 'Angiv brugernavnet til fjernserveren!';
$PALANG['pFetchmail_password_missing'] = 'Angiv adgangskoden til fjernserveren!';
$PALANG['pFetchmail_error_invalid_id'] = "Reglen med ID %s eksisterer ikke.";
$PALANG['pFetchmail_invalid_mailbox'] = 'Ugyldig postboks.';
$PALANG['pFetchmail_server_missing'] = 'Angiv navnet på fjernserveren.';
$PALANG['pFetchmail_user_missing'] = 'Angiv brugernavnet til fjernserveren.';
$PALANG['pFetchmail_password_missing'] = 'Angiv adgangskoden til fjernserveren.';
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Postboks';
$PALANG['pFetchmail_field_src_server'] = 'Server';
@ -408,7 +413,7 @@ $PALANG['pFetchmail_field_poll_time'] = 'Prøve';
$PALANG['pFetchmail_field_fetchall'] = 'Hent alle';
$PALANG['pFetchmail_field_keep'] = 'Behold';
$PALANG['pFetchmail_field_protocol'] = 'Protokol';
$PALANG['pFetchmail_field_usessl'] = 'SSL active'; # XXX
$PALANG['pFetchmail_field_usessl'] = 'SSL aktiv';
$PALANG['pFetchmail_field_extra_options'] = 'Ekstra tilvalg';
$PALANG['pFetchmail_field_mda'] = 'MDA (Mail Delivery Agent)';
$PALANG['pFetchmail_field_date'] = 'Dato';
@ -417,15 +422,15 @@ $PALANG['pFetchmail_desc_id'] = 'Post ID';
$PALANG['pFetchmail_desc_mailbox'] = 'Lokal postboks';
$PALANG['pFetchmail_desc_src_server'] = 'Fjernserver';
$PALANG['pFetchmail_desc_src_auth'] = 'Somregel \'password\''; # Translators: Please do NOT translate 'password' here
$PALANG['pFetchmail_desc_src_user'] = 'Ekstern brugernavn';
$PALANG['pFetchmail_desc_src_user'] = 'Eksternt brugernavn';
$PALANG['pFetchmail_desc_src_password'] = 'Ekstern adgangskode';
$PALANG['pFetchmail_desc_src_folder'] = 'Ekstern mappe';
$PALANG['pFetchmail_desc_poll_time'] = 'Prøv hver ... minut';
$PALANG['pFetchmail_desc_fetchall'] = 'Hent både gamle (sete) og nye beskeder';
$PALANG['pFetchmail_desc_poll_time'] = 'Prøv hvert ... minut';
$PALANG['pFetchmail_desc_fetchall'] = 'Hent både læste og nye beskeder';
$PALANG['pFetchmail_desc_keep'] = 'Gem hentede beskeder på den eksterne postserver';
$PALANG['pFetchmail_desc_protocol'] = 'Brug protokol';
$PALANG['pFetchmail_desc_usessl'] = 'SSL encryption'; # XXX
$PALANG['pFetchmail_desc_extra_options'] = 'Ekstra fetchmail flag';
$PALANG['pFetchmail_desc_usessl'] = 'SSL-kryptering';
$PALANG['pFetchmail_desc_extra_options'] = 'Ekstra flag til fetchmail';
$PALANG['pFetchmail_desc_mda'] = 'Mail Delivery Agent';
$PALANG['pFetchmail_desc_date'] = 'Dato for seneste prøve/konfigurationsændring';
$PALANG['pFetchmail_desc_returned_text'] = 'Tekstbesked fra seneste prøve';

@ -166,7 +166,7 @@ $PALANG['pEdit_mailbox_quota_text'] = 'MB';
$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Das angegebene Quota ist zu hoch!</span>';
$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Diese Domain geh&ouml;rt nicht Ihnen: ';
$PALANG['pEdit_mailbox_button'] = 'Mailbox editieren';
$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Unm&ouml;glich das Passwort zu &auml;ndern!</span>';
$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Mailbox kann nicht ge&auml;ndert werden!</span>';
$PALANG['pPassword_welcome'] = '&Auml;ndern Sie Ihr Login-Passwort.';
$PALANG['pPassword_admin'] = 'Login';
@ -281,6 +281,7 @@ $PALANG['pAdminCreate_domain_button'] = 'Domain hinzuf&uuml;gen';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Konnte Domain nicht anlegen!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Domain wurde angelegt!';
$PALANG['pAdminDelete_admin_error'] = 'Admin kann nicht gel&ouml;scht werden!';
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Domain konnte nicht gel&ouml;scht werden!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Alias-Domain konnte nicht gel&ouml;scht werden!</span>';
@ -354,9 +355,11 @@ $PALANG['pUsersVacation_button_away'] = 'Ich gehe weg';
$PALANG['pUsersVacation_button_back'] = 'Ich bin zur&uuml;ck';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Konnte Ihre Automatische Antwort nicht einstellen!</span>';
$PALANG['pUsersVacation_result_success'] = 'Ihre Automatische Antwort wurde gel&ouml;scht!';
$PALANG['pUsersVacation_activefrom'] = 'Aktiv ab dem';
$PALANG['pUsersVacation_activeuntil'] = 'Aktiv bis zum';
$PALANG['pCreate_dbLog_createmailbox'] = 'Mailbox hinzuf&uuml;gen';
$PALANG['pCreate_dbLog_createalias'] = 'Alias hinzu&uuml;¼gen';
$PALANG['pCreate_dbLog_createalias'] = 'Alias hinzuf&uuml;gen';
$PALANG['pDelete_dbLog_deletealias'] = 'Alias l&uuml;schen';
$PALANG['pDelete_dbLog_deletemailbox'] = 'Mailbox l&ouml;schen';

@ -18,7 +18,7 @@ $PALANG['confirm_domain'] = 'Do you really want to delete all records for this d
$PALANG['check_update'] = 'Check for update';
$PALANG['invalid_parameter'] = 'Invalid parameter!';
$PALANG['pFooter_logged_as'] = 'Logged as %s';
$PALANG['pFooter_logged_as'] = 'Logged in as %s';
$PALANG['pLogin_welcome'] = 'Mail admins login here to administer your domain.';
$PALANG['pLogin_username'] = 'Login (email)';
@ -283,6 +283,7 @@ $PALANG['pAdminCreate_domain_button'] = 'Add Domain';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Unable to add domain!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Domain has been added!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!';
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>';
@ -355,6 +356,8 @@ $PALANG['pUsersVacation_button_away'] = 'Going Away';
$PALANG['pUsersVacation_button_back'] = 'Coming Back';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Unable to update your auto response settings!</span>';
$PALANG['pUsersVacation_result_success'] = 'Your auto response has been removed!';
$PALANG['pUsersVacation_activefrom'] = 'Active from';
$PALANG['pUsersVacation_activeuntil'] = 'Active until';
$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
$PALANG['pCreate_dbLog_createalias'] = 'create alias';

@ -4,32 +4,33 @@
// Language file Spanish
// by Alvaro
//
// by Iñaki Rodríguez (irodriguez@ackstorm.es / irodriguez@virtualminds.es)
$PALANG['YES'] = 'SI';
$PALANG['NO'] = 'NO';
$PALANG['edit'] = 'editar';
$PALANG['del'] = 'borrar';
$PALANG['exit'] = 'Exit'; # XXX
$PALANG['cancel'] = 'Cancel'; # XXX
$PALANG['save'] = 'Save'; # XXX
$PALANG['exit'] = 'Salir';
$PALANG['cancel'] = 'Cancelar';
$PALANG['save'] = 'Salvar';
$PALANG['confirm'] = '¿Está seguro de que desea borrarlo?\n';
$PALANG['confirm_domain'] = '¿Está seguro de que desea borrar todos los registros de este dominio? ¡Esto no puede ser deshecho!\n';
$PALANG['check_update'] = 'Check for update';
$PALANG['invalid_parameter'] = 'Invalid parameter!'; # XXX
$PALANG['pFooter_logged_as'] = 'Logged as %s'; # XXX
$PALANG['check_update'] = 'Check for update'; # XXX
$PALANG['invalid_parameter'] = '¡Par&aacute;metro inválido!';
$PALANG['pFooter_logged_as'] = 'Autenticado como %s';
$PALANG['pLogin_welcome'] = 'Login de administrador para administración de dominios.';
$PALANG['pLogin_username'] = 'Usuario (e-mail)';
$PALANG['pLogin_password'] = 'Contraseña';
$PALANG['pLogin_button'] = 'Usuario';
$PALANG['pLogin_failed'] = 'Your email address or password are not correct.'; # XXX
$PALANG['pLogin_failed'] = 'La cuenta de email o la contraseña no son correctas.';
$PALANG['pLogin_login_users'] = 'Login para ir a la sección de usuarios.';
$PALANG['pMenu_main'] = 'Main'; # XXX
$PALANG['pMenu_main'] = 'Principal';
$PALANG['pMenu_overview'] = 'Resumen';
$PALANG['pMenu_create_alias'] = 'Añadir alias';
$PALANG['pMenu_create_alias_domain'] = 'Add Alias Domain'; # XXX
$PALANG['pMenu_create_alias_domain'] = 'Añadir alias de dominio';
$PALANG['pMenu_create_mailbox'] = 'Añadir buzón';
$PALANG['pMenu_fetchmail'] = 'Fetch Email'; # XXX
$PALANG['pMenu_fetchmail'] = 'Obtener Emails';
$PALANG['pMenu_sendmail'] = 'Enviar e-mail';
$PALANG['pMenu_password'] = 'Contraseña';
$PALANG['pMenu_viewlog'] = 'Ver Logs';
@ -44,62 +45,62 @@ $PALANG['pMain_password'] = 'Cambiar la contraseña para su cuenta de administra
$PALANG['pMain_viewlog'] = 'Ver Logs.';
$PALANG['pMain_logout'] = 'Salir.';
$PALANG['pOverview_disabled'] = 'Disabled'; # XXX
$PALANG['pOverview_unlimited'] = 'Unlimited'; # XXX
$PALANG['pOverview_title'] = ':: Defined Domains'; # XXX
$PALANG['pOverview_up_arrow'] = 'Go Top'; # XXX
$PALANG['pOverview_right_arrow'] = 'Next Page'; # XXX
$PALANG['pOverview_left_arrow'] = 'Previous Page'; # XXX
$PALANG['pOverview_alias_domain_title'] = ':: Domain Aliases'; # XXX
$PALANG['pOverview_alias_title'] = ':: Alias'; # XXX
$PALANG['pOverview_mailbox_title'] = ':: Mailboxes'; # XXX
$PALANG['pOverview_disabled'] = 'Deshabilitado';
$PALANG['pOverview_unlimited'] = 'Ilimitado';
$PALANG['pOverview_title'] = ':: Dominios Definidos';
$PALANG['pOverview_up_arrow'] = 'Arriba';
$PALANG['pOverview_right_arrow'] = 'Página siguiente';
$PALANG['pOverview_left_arrow'] = 'Página anterior';
$PALANG['pOverview_alias_domain_title'] = ':: Alias de Dominios';
$PALANG['pOverview_alias_title'] = ':: Alias';
$PALANG['pOverview_mailbox_title'] = ':: Buzones';
$PALANG['pOverview_button'] = 'Ir';
$PALANG['pOverview_welcome'] = 'Resumen de ';
$PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX
$PALANG['pOverview_alias_domain_target'] = '%s is an Alias Domain for:'; # XXX
$PALANG['pOverview_alias_alias_count'] = 'Alias'; # XXX
$PALANG['pOverview_alias_domain_aliases'] = 'Alias de Dominios';
$PALANG['pOverview_alias_domain_target'] = '%s es un alias de dominio para:';
$PALANG['pOverview_alias_alias_count'] = 'Alias';
$PALANG['pOverview_alias_mailbox_count'] = 'Buzones';
$PALANG['pOverview_alias_address'] = 'De';
$PALANG['pOverview_alias_goto'] = 'Destino';
$PALANG['pOverview_alias_modified'] = 'Última modificación';
$PALANG['pOverview_alias_domain_modified'] = 'Last Modified'; # XXX
$PALANG['pOverview_alias_active'] = 'Active'; # XXX
$PALANG['pOverview_alias_domain_active'] = 'Active'; # XXX
$PALANG['pOverview_alias_edit'] = 'Alias'; # XXX
$PALANG['and_x_more'] = '[and %s more...]'; # XXX
$PALANG['pOverview_alias_domain_modified'] = 'Última modificación';
$PALANG['pOverview_alias_active'] = 'Activo';
$PALANG['pOverview_alias_domain_active'] = 'Activo';
$PALANG['pOverview_alias_edit'] = 'Alias';
$PALANG['and_x_more'] = '[y %s más...]';
$PALANG['pOverview_mailbox_username'] = 'E-mail';
$PALANG['pOverview_mailbox_name'] = 'Nombre';
$PALANG['pOverview_mailbox_quota'] = 'Cuota (MB)';
$PALANG['pOverview_mailbox_modified'] = 'Última modificación';
$PALANG['pOverview_mailbox_active'] = 'Activo';
$PALANG['pOverview_vacation_edit'] = 'VACATION IS ON'; # XXX
$PALANG['pOverview_vacation_option'] = 'Set Vacation'; # XXX
$PALANG['pOverview_vacation_edit'] = 'VACATION ESTÁ ACTIVADO';
$PALANG['pOverview_vacation_option'] = 'Establecer Vacation';
$PALANG['pOverview_get_domain'] = 'Dominio';
$PALANG['pOverview_get_aliases'] = 'Alias';
$PALANG['pOverview_get_alias_domains'] = 'Domain Aliases'; # XXX
$PALANG['pOverview_get_alias_domains'] = 'Alias de Dominios';
$PALANG['pOverview_get_mailboxes'] = 'Buzones';
$PALANG['pOverview_get_quota'] = 'Cuota de buzón (MB)';
$PALANG['pOverview_get_modified'] = 'Última Modificación';
$PALANG['pDelete_delete_error'] = '<span class="error_msg">Imposible borrar el registro ';
$PALANG['pDelete_delete_success'] = '%s deleted.'; # XXX
$PALANG['pDelete_postdelete_error'] = '<span class="error_msg">Unable to remove mailbox '; # XXX
$PALANG['pDelete_delete_success'] = '%s borrado.';
$PALANG['pDelete_postdelete_error'] = '<span class="error_msg">No se pudo eliminar el buzón ';
$PALANG['pDelete_domain_error'] = '<span class="error_msg">Este dominio no le pertenece ';
$PALANG['pDelete_domain_alias_error'] = '<span class="error_msg">This domain is not yours '; # XXX
$PALANG['pDelete_alias_error'] = '<span class="error_msg">Unable to delete alias '; # XXX
$PALANG['pCreate_alias_domain_welcome'] = 'Mirror addresses of one of your domains to another.'; # XXX
$PALANG['pCreate_alias_domain_alias'] = 'Alias Domain'; # XXX
$PALANG['pCreate_alias_domain_alias_text'] = 'The domain that mails come in for.'; # XXX
$PALANG['pCreate_alias_domain_target'] = 'Target Domain'; # XXX
$PALANG['pCreate_alias_domain_target_text'] = 'The domain where mails should go to.'; # XXX
$PALANG['pCreate_alias_domain_active'] = 'Active'; # XXX
$PALANG['pCreate_alias_domain_button'] = 'Add Alias Domain'; # XXX
$PALANG['pCreate_alias_domain_error1'] = 'You are not allowed to create the chosen configuration.'; # XXX
$PALANG['pCreate_alias_domain_error2'] = 'The chosen configuration is invalid, please choose a different one!'; # XXX
$PALANG['pCreate_alias_domain_error3'] = 'Database insert failed.'; # XXX
$PALANG['pCreate_alias_domain_error4'] = 'All domains are already aliased.'; # XXX
$PALANG['pCreate_alias_domain_success'] = 'The domain alias has been added to the alias domain table!'; # XXX
$PALANG['pDelete_domain_alias_error'] = '<span class="error_msg">Este dominio no te pertenece ';
$PALANG['pDelete_alias_error'] = '<span class="error_msg">No se pudo eliminar el alias ';
$PALANG['pCreate_alias_domain_welcome'] = 'Sincronizar direcciones de un dominio a otro.';
$PALANG['pCreate_alias_domain_alias'] = 'Alias de Dominio';
$PALANG['pCreate_alias_domain_alias_text'] = 'El dominio al que llega el email.';
$PALANG['pCreate_alias_domain_target'] = 'Dominio de destino';
$PALANG['pCreate_alias_domain_target_text'] = 'El dominio al que deberían ir los emails.';
$PALANG['pCreate_alias_domain_active'] = 'Activo';
$PALANG['pCreate_alias_domain_button'] = 'Añadir Alias de Dominio';
$PALANG['pCreate_alias_domain_error1'] = 'No estás autorizado a crear la configuración que has elegido.';
$PALANG['pCreate_alias_domain_error2'] = '¡La configuración seleccionada no es válida, por favor elige una diferente!';
$PALANG['pCreate_alias_domain_error3'] = 'Falló la inserción en la base de datos.';
$PALANG['pCreate_alias_domain_error4'] = 'Ya están todos los dominios asignados.';
$PALANG['pCreate_alias_domain_success'] = '¡El alias de dominio se insertó en la tabla!';
$PALANG['pCreate_alias_welcome'] = 'Crear un nuevo alias para el dominio.';
$PALANG['pCreate_alias_address'] = 'Alias';
@ -107,7 +108,7 @@ $PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">¡
$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">¡Esta dirección ya existe, elija otra diferente por favor!</span>';
$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">¡Ha llegado a su límite de creación de alias!</span>';
$PALANG['pCreate_alias_goto'] = 'Destino';
$PALANG['pCreate_alias_active'] = 'Active'; # XXX
$PALANG['pCreate_alias_active'] = 'Activo';
$PALANG['pCreate_alias_button'] = 'Añadir alias';
$PALANG['pCreate_alias_goto_text'] = 'A donde debe de ser enviado el e-mail.';
$PALANG['pCreate_alias_goto_text_error'] = 'A donde debe de ser enviado el e-mail.<br /><span class="error_msg">¡El PARA no es válido!</span>';
@ -119,13 +120,13 @@ $PALANG['pEdit_alias_welcome'] = 'Edite un alias para su dominio.<br />Una entra
$PALANG['pEdit_alias_address'] = 'Alias';
$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">¡Imposible de localizar el alias!</span>';
$PALANG['pEdit_alias_goto'] = 'Destino';
$PALANG['pEdit_alias_active'] = 'Active'; # XXX
$PALANG['pEdit_alias_active'] = 'Activo';
$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">No ha introducido nada en el destino</span>';
$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">La dirección de e-mail introducida no es válida: ';
$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Este dominio no le pertenece: ';
$PALANG['pEdit_alias_domain_result_error'] = '<span class="error_msg">Unable to modify the alias domain!</span>'; # XXX
$PALANG['pEdit_alias_forward_and_store'] = 'Deliver to the local mailbox.'; # XXX
$PALANG['pEdit_alias_forward_only'] = 'Forward to given email addresses only.'; # XXX
$PALANG['pEdit_alias_domain_result_error'] = '<span class="error_msg">¡No se pudo modificar el alias de dominio!</span>';
$PALANG['pEdit_alias_forward_and_store'] = 'Entregar al buzón local.';
$PALANG['pEdit_alias_forward_only'] = 'Reenviar sólo al email especificado.';
$PALANG['pEdit_alias_button'] = 'Editar alias';
$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">¡Imposible modificar el alias!</span>';
@ -177,11 +178,11 @@ $PALANG['pPassword_button'] = 'Cambiar contraseña';
$PALANG['pPassword_result_error'] = '<span class="error_msg">¡Imposible cambiar la contraseña!</span>';
$PALANG['pPassword_result_success'] = '¡Su contraseña ha sido cambiada!';
$PALANG['pEdit_vacation_set'] = 'Change / Set away message'; # XXX
$PALANG['pEdit_vacation_remove'] = 'Remove away message'; # XXX
$PALANG['pEdit_vacation_set'] = 'Cambiar / Establecer mensaje de ausencia';
$PALANG['pEdit_vacation_remove'] = 'Quitar mensaje de ausencia';
$PALANG['pVacation_result_error'] = '<span class="error_msg">¡Imposible actualizar la configuracióne la respuesta automática!</span>';
$PALANG['pVacation_result_removed'] = 'Auto response has been removed!'; # XXX
$PALANG['pVacation_result_added'] = 'Auto response has been enabled!'; # XXX
$PALANG['pVacation_result_removed'] = '¡Autorespuesta eliminada!';
$PALANG['pVacation_result_added'] = '¡Autorespuesta habilitada!';
$PALANG['pViewlog_welcome'] = 'Ver las últimas 10 acciones para ';
$PALANG['pViewlog_timestamp'] = 'Fecha/Hora';
@ -189,18 +190,18 @@ $PALANG['pViewlog_username'] = 'Administrador';
$PALANG['pViewlog_domain'] = 'Dominio';
$PALANG['pViewlog_action'] = 'Acción';
$PALANG['pViewlog_data'] = 'Datos';
$PALANG['pViewlog_action_create_mailbox'] = 'create mailbox'; # XXX
$PALANG['pViewlog_action_delete_mailbox'] = 'delete mailbox'; # XXX
$PALANG['pViewlog_action_edit_mailbox'] = 'edit mailbox'; # XXX
$PALANG['pViewlog_action_edit_mailbox_state'] = 'edit mailbox active'; # XXX
$PALANG['pViewlog_action_create_alias'] = 'create alias'; # XXX
$PALANG['pViewlog_action_create_alias_domain'] = 'create alias domain'; # XXX
$PALANG['pViewlog_action_delete_alias'] = 'delete alias'; # XXX
$PALANG['pViewlog_action_delete_alias_domain'] = 'delete alias domain'; # XXX
$PALANG['pViewlog_action_edit_alias'] = 'edit alias'; # XXX
$PALANG['pViewlog_action_edit_alias_state'] = 'edit alias active'; # XXX
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'edit alias domain active'; # XXX
$PALANG['pViewlog_action_edit_password'] = 'change password'; # XXX
$PALANG['pViewlog_action_create_mailbox'] = 'crear buzón';
$PALANG['pViewlog_action_delete_mailbox'] = 'borrar buzón';
$PALANG['pViewlog_action_edit_mailbox'] = 'editar buzón';
$PALANG['pViewlog_action_edit_mailbox_state'] = 'editar buzón activo';
$PALANG['pViewlog_action_create_alias'] = 'crear alias';
$PALANG['pViewlog_action_create_alias_domain'] = 'crear alias de dominio';
$PALANG['pViewlog_action_delete_alias'] = 'borrar alias';
$PALANG['pViewlog_action_delete_alias_domain'] = 'borrar alias de dominio';
$PALANG['pViewlog_action_edit_alias'] = 'editar alias';
$PALANG['pViewlog_action_edit_alias_state'] = 'editar alias activo';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'editar alias de dominio activo';
$PALANG['pViewlog_action_edit_password'] = 'cambiar contraseña';
$PALANG['pViewlog_button'] = 'Ir';
$PALANG['pViewlog_result_error'] = '<span class="error_msg">¡Imposible encontrar los logs!</span>';
@ -213,8 +214,8 @@ $PALANG['pSendmail_subject'] = 'Asunto';
$PALANG['pSendmail_subject_text'] = 'Bienvenido';
$PALANG['pSendmail_body'] = 'Cuerpo';
$PALANG['pSendmail_button'] = 'Enviar mensaje';
$PALANG['pSendmail_result_error'] = '<span class="error_msg">¡Imposible crear el buzón!</span>'; # XXX text change - new: <span class="error_msg">Unable to send email!</span>
$PALANG['pSendmail_result_success'] = '¡El buzón ha sido creado!'; # XXX text change - new: Email sent!
$PALANG['pSendmail_result_error'] = '<span class="error_msg">¡Imposible enviar el email!</span>';
$PALANG['pSendmail_result_success'] = '¡Email enviado!';
$PALANG['pAdminMenu_list_admin'] = 'Lista de administradores';
$PALANG['pAdminMenu_list_domain'] = 'Lista de dominios';
@ -238,7 +239,7 @@ $PALANG['pAdminList_domain_description'] = 'Descripción';
$PALANG['pAdminList_domain_aliases'] = 'Alias';
$PALANG['pAdminList_domain_mailboxes'] = 'Buzones';
$PALANG['pAdminList_domain_maxquota'] = 'Cuota Máxima (MB)';
$PALANG['pAdminList_domain_transport'] = 'Transport'; # XXX
$PALANG['pAdminList_domain_transport'] = 'Transporte';
$PALANG['pAdminList_domain_backupmx'] = 'Backup MX'; # XXX
$PALANG['pAdminList_domain_modified'] = 'Última Modificación';
$PALANG['pAdminList_domain_active'] = 'Activo';
@ -259,7 +260,7 @@ $PALANG['pAdminList_virtual_mailbox_active'] = 'Activo';
$PALANG['pAdminCreate_domain_welcome'] = 'Añadir nuevo dominio';
$PALANG['pAdminCreate_domain_domain'] = 'Dominio';
$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">¡El dominio ya existe!</span>';
$PALANG['pAdminCreate_domain_domain_text_error2'] = '<span class="error_msg">The domain is invalid!</span>'; # XXX
$PALANG['pAdminCreate_domain_domain_text_error2'] = '<span class="error_msg">!El dominio no es válido!</span>';
$PALANG['pAdminCreate_domain_description'] = 'Descripción';
$PALANG['pAdminCreate_domain_aliases'] = 'Alias';
$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = deshabilitar | 0 = ilimitado';
@ -268,15 +269,16 @@ $PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = deshabilitar | 0 = ilimita
$PALANG['pAdminCreate_domain_maxquota'] = 'Cuota máxima';
$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = deshabilitar | 0 = ilimitado';
$PALANG['pAdminCreate_domain_transport'] = 'Transport'; # XXX
$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport'; # XXX
$PALANG['pAdminCreate_domain_transport_text'] = 'Definir transport'; # XXX
$PALANG['pAdminCreate_domain_defaultaliases'] = 'Añadir alias por defecto';
$PALANG['pAdminCreate_domain_defaultaliases_text'] = '';
$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX'; # XXX
$PALANG['pAdminCreate_domain_backupmx'] = 'El servidor de correo es backup MX'; # XXX
$PALANG['pAdminCreate_domain_button'] = 'Añadir dominio';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">¡Imposible añadir el dominio!</span>';
$PALANG['pAdminCreate_domain_result_success'] = '¡El dominio ha sido añadido!';
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">¡No se pudo eliminar el dominio!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">¡No se pudo eliminar el alias de dominio!</span>';
$PALANG['pAdminEdit_domain_welcome'] = 'Editar un dominio';
$PALANG['pAdminEdit_domain_domain'] = 'Dominio';
@ -288,8 +290,8 @@ $PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = deshabilitar | 0 = ilimitado
$PALANG['pAdminEdit_domain_maxquota'] = 'Cuota máxima';
$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = deshabilitar | 0 = ilimitado';
$PALANG['pAdminEdit_domain_transport'] = 'Transport';
$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport'; # XXX
$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX'; # XXX
$PALANG['pAdminEdit_domain_transport_text'] = 'Definir transport'; # XXX
$PALANG['pAdminEdit_domain_backupmx'] = 'El servidor de correo es backup MX'; # XXX
$PALANG['pAdminEdit_domain_active'] = 'Activo';
$PALANG['pAdminEdit_domain_button'] = 'Editar dominio';
$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">¡Imposible modificar el dominio!</span>';
@ -331,7 +333,7 @@ $PALANG['pUsersMenu_edit_alias'] = 'Cambiar la redirección';
$PALANG['pUsersMenu_password'] = 'Cambiar la contraseña';
$PALANG['pUsersMain_vacation'] = 'Configure un mensaje de "fuera del trabajo" o una respuesta automática para su correo.';
$PALANG['pUsersMain_vacationSet'] = $PALANG['pUsersMenu_vacation'] . ' is ON, click \'' . $PALANG['pUsersMenu_vacation'] . '\' to ' . $PALANG['edit'] . '/remove'; # XXX
$PALANG['pUsersMain_vacationSet'] = $PALANG['pUsersMenu_vacation'] . ' está ACTIVADO, click \'' . $PALANG['pUsersMenu_vacation'] . '\' para ' . $PALANG['edit'] . '/eliminar';
$PALANG['pUsersMain_edit_alias'] = 'Cambie su redirección de correo.';
$PALANG['pUsersMain_password'] = 'Cambie su contraseña.';
@ -339,7 +341,7 @@ $PALANG['pUsersVacation_welcome'] = 'Respuesta automática.';
$PALANG['pUsersVacation_welcome_text'] = '¡Ya dispone de una respuesta automática configurada!';
$PALANG['pUsersVacation_subject'] = 'Asunto';
$PALANG['pUsersVacation_subject_text'] = 'Fuera del trabajo';
$PALANG['pUsersVacation_body'] = 'Cuerpo'; # XXX text changed to 'Message'
$PALANG['pUsersVacation_body'] = 'Mensaje';
$PALANG['pUsersVacation_body_text'] = <<<EOM
Estaré fuera desde <date> hasta <date>.
Para asuntos urgentes, puede contactar conmigo en <contact person>.
@ -348,76 +350,78 @@ $PALANG['pUsersVacation_button_away'] = 'Ausente';
$PALANG['pUsersVacation_button_back'] = 'De vuelta';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">¡Imposible actualizar la configuración de su respuesta automática!</span>';
$PALANG['pUsersVacation_result_success'] = '¡Su respuesta automática ha sido borrada!';
$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox'; # XXX
$PALANG['pCreate_dbLog_createalias'] = 'create alias'; # XXX
$PALANG['pDelete_dbLog_deletealias'] = 'delete alias'; # XXX
$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox'; # XXX
$PALANG['pEdit_dbLog_editactive'] = 'change active state'; # XXX
$PALANG['pEdit_dbLog_editalias'] = 'edit alias'; # XXX
$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox'; # XXX
$PALANG['pSearch'] = 'search'; # XXX
$PALANG['pSearch_welcome'] = 'Searching for: '; # XXX
$PALANG['pReturn_to'] = 'Return to'; # XXX
$PALANG['pBroadcast_title'] = 'Send broadcast message'; # XXX
$PALANG['pBroadcast_from'] = 'From'; # XXX
$PALANG['pBroadcast_name'] = 'Your name'; # XXX
$PALANG['pBroadcast_subject'] = 'Subject'; # XXX
$PALANG['pBroadcast_message'] = 'Message'; # XXX
$PALANG['pBroadcast_send'] = 'Send message'; # XXX
$PALANG['pBroadcast_success'] = 'Your broadcast message was sent.'; # XXX
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'crear buzón';
$PALANG['pCreate_dbLog_createalias'] = 'crear alias';
$PALANG['pDelete_dbLog_deletealias'] = 'borrar alias';
$PALANG['pDelete_dbLog_deletemailbox'] = 'borrar buzón';
$PALANG['pEdit_dbLog_editactive'] = 'cambiar estado activo';
$PALANG['pEdit_dbLog_editalias'] = 'editar alias';
$PALANG['pEdit_dbLog_editmailbox'] = 'editar buzón';
$PALANG['pSearch'] = 'buscar';
$PALANG['pSearch_welcome'] = 'Buscando: ';
$PALANG['pReturn_to'] = 'Volver a';
$PALANG['pBroadcast_title'] = 'Enviar mensaje a todos'; # XXX
$PALANG['pBroadcast_from'] = 'De';
$PALANG['pBroadcast_name'] = 'Tu nombre';
$PALANG['pBroadcast_subject'] = 'Asunto';
$PALANG['pBroadcast_message'] = 'Mensaje';
$PALANG['pBroadcast_send'] = 'Enviar mensaje';
$PALANG['pBroadcast_success'] = 'Se ha enviado el mensaje.';
$PALANG['pAdminMenu_broadcast_message'] = 'Broadcast message'; # XXX
$PALANG['pBroadcast_error_empty'] = 'The fields Name, Subject and Message should\'t be empty !'; # XXX
$PALANG['pStatus_undeliverable'] = 'maybe UNDELIVERABLE '; # XXX
$PALANG['pStatus_custom'] = 'Delivers to '; # XXX
$PALANG['pBroadcast_error_empty'] = '¡Los campos Nombre, Asunto y Mensaje no pueden estar vacíos!';
$PALANG['pStatus_undeliverable'] = 'posiblemente NO SE ENTREGÓ';
$PALANG['pStatus_custom'] = 'Enviado a ';
$PALANG['pStatus_popimap'] = 'POP/IMAP '; # XXX
$PALANG['pPasswordTooShort'] = "Password is too short - requires %s characters"; # XXX
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
$PALANG['pInvalidMailRegex'] = "Invalid email address, fails regexp check"; # XXX
$PALANG['pFetchmail_welcome'] = 'Fetch mail for:'; # XXX
$PALANG['pFetchmail_new_entry'] = 'New entry'; # XXX
$PALANG['pFetchmail_database_save_error'] = 'Could not save this entry in the database!'; # XXX
$PALANG['pFetchmail_database_save_success'] = 'Entry saved in database.'; # XXX
$PALANG['pPasswordTooShort'] = "La contraseña es demasiado corta - se necesitan %s caracteres";
$PALANG['pInvalidDomainRegex'] = "El nombre de dominio %s es inválido, no se ajusta a la expresión regular";
$PALANG['pInvalidDomainDNS'] = "El dominio %s no es válido, y/o no tiene resolución DNS";
$PALANG['pInvalidMailRegex'] = "La dirección de email no es válidas, no se ajusta a la expresión regular";
$PALANG['pFetchmail_welcome'] = 'Obtener mail para:';
$PALANG['pFetchmail_new_entry'] = 'Nueva entrada';
$PALANG['pFetchmail_database_save_error'] = '¡No se pudo salvar la entrada en la base de datos!';
$PALANG['pFetchmail_database_save_success'] = 'Entrada salvada en la base de datos.';
$PALANG['pFetchmail_error_invalid_id'] = 'No entry with ID %s found!'; # XXX
$PALANG['pFetchmail_invalid_mailbox'] = 'Invalid mailbox!'; # XXX
$PALANG['pFetchmail_server_missing'] = 'Please enter the remote server name!'; # XXX
$PALANG['pFetchmail_user_missing'] = 'Please enter the remote username!'; # XXX
$PALANG['pFetchmail_password_missing'] = 'Please enter the remote password!'; # XXX
$PALANG['pFetchmail_invalid_mailbox'] = '¡Buzón inválido!';
$PALANG['pFetchmail_server_missing'] = '¡Por favor introduzca el nombre del servidor remoto!';
$PALANG['pFetchmail_user_missing'] = '¡Por favor introduzca el usuario remoto!';
$PALANG['pFetchmail_password_missing'] = '¡Por favor introduzca la contraseña remota!';
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Mailbox'; # XXX
$PALANG['pFetchmail_field_src_server'] = 'Server'; # XXX
$PALANG['pFetchmail_field_src_auth'] = 'Auth Type'; # XXX
$PALANG['pFetchmail_field_src_user'] = 'User'; # XXX
$PALANG['pFetchmail_field_src_password'] = 'Password'; # XXX
$PALANG['pFetchmail_field_src_folder'] = 'Folder'; # XXX
$PALANG['pFetchmail_field_mailbox'] = 'Buzón';
$PALANG['pFetchmail_field_src_server'] = 'Servidor';
$PALANG['pFetchmail_field_src_auth'] = 'Tipo Autenticación';
$PALANG['pFetchmail_field_src_user'] = 'Usuario';
$PALANG['pFetchmail_field_src_password'] = 'Contraseña';
$PALANG['pFetchmail_field_src_folder'] = 'Carpeta';
$PALANG['pFetchmail_field_poll_time'] = 'Poll'; # XXX
$PALANG['pFetchmail_field_fetchall'] = 'Fetch All'; # XXX
$PALANG['pFetchmail_field_keep'] = 'Keep'; # XXX
$PALANG['pFetchmail_field_protocol'] = 'Protocol'; # XXX
$PALANG['pFetchmail_field_usessl'] = 'SSL active'; # XXX
$PALANG['pFetchmail_field_extra_options'] = 'Extra Options'; # XXX
$PALANG['pFetchmail_field_fetchall'] = 'Obtener todo';
$PALANG['pFetchmail_field_keep'] = 'Conservar';
$PALANG['pFetchmail_field_protocol'] = 'Protocolo';
$PALANG['pFetchmail_field_usessl'] = 'SSL activado';
$PALANG['pFetchmail_field_extra_options'] = 'Opciones extras';
$PALANG['pFetchmail_field_mda'] = 'MDA'; # XXX
$PALANG['pFetchmail_field_date'] = 'Date'; # XXX
$PALANG['pFetchmail_field_returned_text'] = 'Returned Text'; # XXX
$PALANG['pFetchmail_field_date'] = 'Fecha';
$PALANG['pFetchmail_field_returned_text'] = 'Texto Devuelto';
$PALANG['pFetchmail_desc_id'] = 'Record ID'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Local mailbox'; # XXX
$PALANG['pFetchmail_desc_src_server'] = 'Remote Server'; # XXX
$PALANG['pFetchmail_desc_mailbox'] = 'Buzón local';
$PALANG['pFetchmail_desc_src_server'] = 'Servidor Remoto';
$PALANG['pFetchmail_desc_src_auth'] = 'Mostly \'password\''; # Translators: Please do NOT translate 'password' here # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Remote User'; # XXX
$PALANG['pFetchmail_desc_src_password'] = 'Remote Password'; # XXX
$PALANG['pFetchmail_desc_src_folder'] = 'Remote Folder'; # XXX
$PALANG['pFetchmail_desc_poll_time'] = 'Poll every ... minutes'; # XXX
$PALANG['pFetchmail_desc_fetchall'] = 'Retrieve both old (seen) and new messages'; # XXX
$PALANG['pFetchmail_desc_keep'] = 'Keep retrieved messages on the remote mailserver'; # XXX
$PALANG['pFetchmail_desc_protocol'] = 'Protocol to use'; # XXX
$PALANG['pFetchmail_desc_usessl'] = 'SSL encryption'; # XXX
$PALANG['pFetchmail_desc_extra_options'] = 'Extra fetchmail Options'; # XXX
$PALANG['pFetchmail_desc_src_user'] = 'Usuario Remoto';
$PALANG['pFetchmail_desc_src_password'] = 'Contraseña Remota';
$PALANG['pFetchmail_desc_src_folder'] = 'Carpeta Remota';
$PALANG['pFetchmail_desc_poll_time'] = 'Obtener cada ... minutos';
$PALANG['pFetchmail_desc_fetchall'] = 'Obtener los mensajes leídos y nuevos';
$PALANG['pFetchmail_desc_keep'] = 'Guardar una copia de los mensajes en el servidor remoto';
$PALANG['pFetchmail_desc_protocol'] = 'Protocolo a usar';
$PALANG['pFetchmail_desc_usessl'] = 'Cifrado SSL';
$PALANG['pFetchmail_desc_extra_options'] = 'Opciones extras para fetchmail';
$PALANG['pFetchmail_desc_mda'] = 'Mail Delivery Agent'; # XXX
$PALANG['pFetchmail_desc_date'] = 'Date of last polling/configuration change'; # XXX
$PALANG['pFetchmail_desc_returned_text'] = 'Text message from last polling'; # XXX
$PALANG['pFetchmail_desc_date'] = 'Fecha del último sondeo/cambio en la configuración';
$PALANG['pFetchmail_desc_returned_text'] = 'Mensaje del último sondeo';
$PALANG['please_keep_this_as_last_entry'] = ''; # needed for language-check.sh
/* vim: set expandtab ft=php softtabstop=3 tabstop=3 shiftwidth=3: */

@ -275,6 +275,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'E-posti server on varuserver (backup
$PALANG['pAdminCreate_domain_button'] = 'Lisa domeen';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Domeeni lisamine ebaõnnestus!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Domeen on lisatud!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -350,6 +351,8 @@ $PALANG['pUsersVacation_button_away'] = 'Olen eemal alates';
$PALANG['pUsersVacation_button_back'] = 'Tulen tagasi';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Automaatse vastuse uuendamine ebaõnnestus!</span>';
$PALANG['pUsersVacation_result_success'] = 'Automaatne vastus on eemaldatud!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'postkasti loomine';
$PALANG['pCreate_dbLog_createalias'] = 'aliase loomine';

@ -273,6 +273,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX'; # XXX
$PALANG['pAdminCreate_domain_button'] = 'Domeinua gehitu';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Ezinezkoa domeinua gehitzea!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Domeinua gehituta!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -346,6 +347,8 @@ $PALANG['pUsersVacation_button_away'] = 'Aldeginda';
$PALANG['pUsersVacation_button_back'] = 'Itzulita';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Ezinezkoa zure erantzun atomatikoaren konfigurazioa eguneratzea!</span>';
$PALANG['pUsersVacation_result_success'] = 'Zure erantzun automatikoa borratu da!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox'; # XXX
$PALANG['pCreate_dbLog_createalias'] = 'create alias'; # XXX

@ -275,6 +275,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Sähköpostipalvelin on vara MX';
$PALANG['pAdminCreate_domain_button'] = 'Lisää domain';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Domainin lisäys ei onnistunut!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Domain on lisätty!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Domainin voitu poistaa!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Domainin aliasta ei voitu poistaa!</span>';
@ -347,6 +348,8 @@ $PALANG['pUsersVacation_button_away'] = 'Lomalle';
$PALANG['pUsersVacation_button_back'] = 'Takaisin lomalta';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Automaattivastauksen asettaminen epäonnistui!</span>';
$PALANG['pUsersVacation_result_success'] = 'Automaattivastaus on poistettu käytöstä!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'luo sähköpostilaatikko';
$PALANG['pCreate_dbLog_createalias'] = 'luo alias';

@ -275,6 +275,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Post servari er "backup MX"';
$PALANG['pAdminCreate_domain_button'] = 'Stovna navnaøki';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Fái ikki stovnað navnaøki!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Navnaøki er stovnað!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -352,6 +353,8 @@ $PALANG['pUsersVacation_button_away'] = 'Burtur';
$PALANG['pUsersVacation_button_back'] = 'Heima';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Fái ikki broytt tínar frítíðarboð uppsetingar!</span>';
$PALANG['pUsersVacation_result_success'] = 'Títt frítíðarboð er strikað!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox'; # XXX
$PALANG['pCreate_dbLog_createalias'] = 'create alias'; # XXX

@ -24,13 +24,13 @@ $PALANG['pLogin_welcome'] = 'Entrez votre adresse courriel pour administrer votr
$PALANG['pLogin_username'] = 'Adresse courriel';
$PALANG['pLogin_password'] = 'Mot de passe';
$PALANG['pLogin_button'] = 'Entrer';
$PALANG['pLogin_failed'] = 'Your email address or password are not correct.'; # XXX
$PALANG['pLogin_failed'] = 'Votre email ou mot de passe est incorrect.';
$PALANG['pLogin_login_users'] = 'Utilisateurs, cliquez ici pour rejoindre votre section.';
$PALANG['pMenu_main'] = 'Menu principal';
$PALANG['pMenu_overview'] = 'Vue d\'ensemble';
$PALANG['pMenu_create_alias'] = 'Ajouter un alias';
$PALANG['pMenu_create_alias_domain'] = 'Add Alias Domain'; # XXX
$PALANG['pMenu_create_alias_domain'] = 'Ajouter un alias de domaine';
$PALANG['pMenu_create_mailbox'] = 'Ajouter un compte courriel';
$PALANG['pMenu_fetchmail'] = 'Récupérer le courrier';
$PALANG['pMenu_sendmail'] = 'Envoyer un courriel';
@ -53,21 +53,21 @@ $PALANG['pOverview_title'] = ':: Domaines définis';
$PALANG['pOverview_up_arrow'] = 'Remonter';
$PALANG['pOverview_right_arrow'] = 'Page suivante';
$PALANG['pOverview_left_arrow'] = 'Page précédente';
$PALANG['pOverview_alias_domain_title'] = ':: Domain Aliases'; # XXX
$PALANG['pOverview_alias_domain_title'] = ':: Alias Domaine';
$PALANG['pOverview_alias_title'] = ':: Alias';
$PALANG['pOverview_mailbox_title'] = ':: Comptes courriels';
$PALANG['pOverview_button'] = 'Aller';
$PALANG['pOverview_welcome'] = 'Vue d\'ensemble pour ';
$PALANG['pOverview_alias_domain_aliases'] = 'Alias Domains'; # XXX
$PALANG['pOverview_alias_domain_target'] = '%s is an Alias Domain for:'; # XXX
$PALANG['pOverview_alias_domain_aliases'] = 'Alias Domaines';
$PALANG['pOverview_alias_domain_target'] = '%s est un alias de domaine pour:';
$PALANG['pOverview_alias_alias_count'] = 'Alias';
$PALANG['pOverview_alias_mailbox_count'] = 'Comptes courriels';
$PALANG['pOverview_alias_address'] = 'De';
$PALANG['pOverview_alias_goto'] = 'A';
$PALANG['pOverview_alias_modified'] = 'Dernière Modification';
$PALANG['pOverview_alias_domain_modified'] = 'Last Modified'; # XXX
$PALANG['pOverview_alias_domain_modified'] = 'Dernière Modification';
$PALANG['pOverview_alias_active'] = 'Activé';
$PALANG['pOverview_alias_domain_active'] = 'Active'; # XXX
$PALANG['pOverview_alias_domain_active'] = 'Activé';
$PALANG['pOverview_alias_edit'] = 'Alias';
$PALANG['and_x_more'] = '[et %s en plus...]';
$PALANG['pOverview_mailbox_username'] = 'courriel';
@ -80,7 +80,7 @@ $PALANG['pOverview_vacation_option'] = 'Configurer le répondeur';
$PALANG['pOverview_get_domain'] = 'Domaine';
$PALANG['pOverview_get_aliases'] = 'Alias';
$PALANG['pOverview_get_alias_domains'] = 'Domain Aliases'; # XXX
$PALANG['pOverview_get_alias_domains'] = 'Alias Domaine';
$PALANG['pOverview_get_mailboxes'] = 'Comptes courriels';
$PALANG['pOverview_get_quota'] = 'Limite compte courriels (MB)';
$PALANG['pOverview_get_modified'] = 'Dernière Modification';
@ -89,20 +89,20 @@ $PALANG['pDelete_delete_error'] = '<span class="error_msg">Impossible d\'effacer
$PALANG['pDelete_delete_success'] = '%s supprimé.';
$PALANG['pDelete_postdelete_error'] = '<span class="error_msg">Impossible d\'effacer ce compte courriel';
$PALANG['pDelete_domain_error'] = '<span class="error_msg">Ce domaine n\'est pas le votre ';
$PALANG['pDelete_domain_alias_error'] = '<span class="error_msg">This domain is not yours '; # XXX
$PALANG['pDelete_domain_alias_error'] = '<span class="error_msg">Ce domaine n\'est pas le votre ';
$PALANG['pDelete_alias_error'] = '<span class="error_msg">Impossible d\'effacer cet alias ';
$PALANG['pCreate_alias_domain_welcome'] = 'Mirror addresses of one of your domains to another.'; # XXX
$PALANG['pCreate_alias_domain_alias'] = 'Alias Domain'; # XXX
$PALANG['pCreate_alias_domain_alias_text'] = 'The domain that mails come in for.'; # XXX
$PALANG['pCreate_alias_domain_target'] = 'Target Domain'; # XXX
$PALANG['pCreate_alias_domain_target_text'] = 'The domain where mails should go to.'; # XXX
$PALANG['pCreate_alias_domain_active'] = 'Active'; # XXX
$PALANG['pCreate_alias_domain_button'] = 'Add Alias Domain'; # XXX
$PALANG['pCreate_alias_domain_error1'] = 'You are not allowed to create the chosen configuration.'; # XXX
$PALANG['pCreate_alias_domain_error2'] = 'The chosen configuration is invalid, please choose a different one!'; # XXX
$PALANG['pCreate_alias_domain_error3'] = 'Database insert failed.'; # XXX
$PALANG['pCreate_alias_domain_error4'] = 'All domains are already aliased.'; # XXX
$PALANG['pCreate_alias_domain_success'] = 'The domain alias has been added to the alias domain table!'; # XXX
$PALANG['pCreate_alias_domain_welcome'] = 'Les adresses mirroirs de l\'un de vos domaines vers un autre.';
$PALANG['pCreate_alias_domain_alias'] = 'Alias Domaine';
$PALANG['pCreate_alias_domain_alias_text'] = 'Le domaine dans lequel les courriels viennent.';
$PALANG['pCreate_alias_domain_target'] = 'Domaine Cible';
$PALANG['pCreate_alias_domain_target_text'] = 'Le domaine où les mails doivent aller.';
$PALANG['pCreate_alias_domain_active'] = 'Activé';
$PALANG['pCreate_alias_domain_button'] = 'Ajouter un Alias de Domaine';
$PALANG['pCreate_alias_domain_error1'] = 'Vous n\'etes pas autorisé a créer la configuration choisie.';
$PALANG['pCreate_alias_domain_error2'] = 'La configuration choisie est invalide, merci d\'en choisir une autre!';
$PALANG['pCreate_alias_domain_error3'] = 'Insertion dans la base de donnée échouée.';
$PALANG['pCreate_alias_domain_error4'] = 'Tous les domaines sont déjà liés à un alias.';
$PALANG['pCreate_alias_domain_success'] = 'L\'alias de domaine est déjà présent dans la table de domaine!';
$PALANG['pCreate_alias_welcome'] = 'Créer un nouvel alias pour votre domaine.';
$PALANG['pCreate_alias_address'] = 'Alias';
$PALANG['pCreate_alias_address_text_error1'] = '<br><span class="error_msg">Cet ALIAS n\'est pas valide!</span>';
@ -125,7 +125,7 @@ $PALANG['pEdit_alias_active'] = 'Activé';
$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Vous devez entrer quelques choses dans le champ À</span>';
$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">L\'adresse courriel que vous avez entré est invalide: ';
$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Ce domaine n\'est pas le votre: ';
$PALANG['pEdit_alias_domain_result_error'] = '<span class="error_msg">Unable to modify the alias domain!</span>'; # XXX
$PALANG['pEdit_alias_domain_result_error'] = '<span class="error_msg">Impossible de modifier cet alias de domaine!</span>';
$PALANG['pEdit_alias_forward_and_store'] = 'Transferer une copie.';
$PALANG['pEdit_alias_forward_only'] = 'Transferer les messages sans conserver de copie.';
$PALANG['pEdit_alias_button'] = 'Modifier cet alias';
@ -195,12 +195,12 @@ $PALANG['pViewlog_action_delete_mailbox'] = 'supprimer un compte courriel';
$PALANG['pViewlog_action_edit_mailbox'] = 'éditer un compte courriel';
$PALANG['pViewlog_action_edit_mailbox_state'] = 'activer un compte courriel';
$PALANG['pViewlog_action_create_alias'] = 'créer un alias';
$PALANG['pViewlog_action_create_alias_domain'] = 'create alias domain'; # XXX
$PALANG['pViewlog_action_create_alias_domain'] = 'créer un alias de domaine';
$PALANG['pViewlog_action_delete_alias'] = 'supprimer un alias';
$PALANG['pViewlog_action_delete_alias_domain'] = 'delete alias domain'; # XXX
$PALANG['pViewlog_action_delete_alias_domain'] = 'supprimer un alias de domaine';
$PALANG['pViewlog_action_edit_alias'] = 'éditer un alias';
$PALANG['pViewlog_action_edit_alias_state'] = 'activer un alias';
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'edit alias domain active'; # XXX
$PALANG['pViewlog_action_edit_alias_domain_state'] = 'editer alias de domaine actif';
$PALANG['pViewlog_action_edit_password'] = 'changer le mot de passe';
$PALANG['pViewlog_button'] = 'Aller';
@ -214,8 +214,8 @@ $PALANG['pSendmail_subject'] = 'Sujet';
$PALANG['pSendmail_subject_text'] = 'Bienvenue';
$PALANG['pSendmail_body'] = 'Message';
$PALANG['pSendmail_button'] = 'Envoyer le message';
$PALANG['pSendmail_result_error'] = '<span class="error_msg">Erreur lors de l\'envoit du message!</span>'; # XXX text change - new: <span class="error_msg">Unable to send email!</span>
$PALANG['pSendmail_result_success'] = 'Le message a été envoyé!'; # XXX text change - new: Email sent!
$PALANG['pSendmail_result_error'] = '<span class="error_msg">Erreur lors de l\'envoit du message!</span>';
$PALANG['pSendmail_result_success'] = 'Le message a été envoyé!';
$PALANG['pAdminMenu_list_admin'] = 'Liste Administrateurs';
$PALANG['pAdminMenu_list_domain'] = 'Liste Domaines';
@ -240,7 +240,7 @@ $PALANG['pAdminList_domain_aliases'] = 'Alias';
$PALANG['pAdminList_domain_mailboxes'] = 'Comptes courriels';
$PALANG['pAdminList_domain_maxquota'] = 'Limite maximum (MB)';
$PALANG['pAdminList_domain_transport'] = 'Transport';
$PALANG['pAdminList_domain_backupmx'] = 'Backup MX'; # XXX
$PALANG['pAdminList_domain_backupmx'] = 'MX Backup';
$PALANG['pAdminList_domain_modified'] = 'Dernière modification';
$PALANG['pAdminList_domain_active'] = 'Actif';
@ -261,7 +261,7 @@ $PALANG['pAdminCreate_domain_welcome'] = 'Ajouter un nouveau domaine';
$PALANG['pAdminCreate_domain_domain'] = 'Domaine';
$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Le domaine existe déjà!</span>';
$PALANG['pAdminCreate_domain_domain_text_error2'] = '<span class="error_msg">Le domaine est non valide!</span>';
$PALANG['pAdminCreate_domain_description'] = 'Description'; # XXX
$PALANG['pAdminCreate_domain_description'] = 'Description';
$PALANG['pAdminCreate_domain_aliases'] = 'Alias';
$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = désactivé | 0 = illimité';
$PALANG['pAdminCreate_domain_mailboxes'] = 'Comptes courriels';
@ -276,9 +276,10 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Le serveur est un "backup MX"';
$PALANG['pAdminCreate_domain_button'] = 'Ajouter un domaine';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Impossible d\'ajouter le domaine!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Le domaine a été ajouté!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Impossible de supprimer le domain!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Impossible de supprimé cet alias de domaine!</span>';
$PALANG['pAdminEdit_domain_welcome'] = 'Modifier un domaine';
$PALANG['pAdminEdit_domain_domain'] = 'Domaine';
@ -340,7 +341,7 @@ $PALANG['pUsersVacation_welcome'] = 'Répondeur Automatique.';
$PALANG['pUsersVacation_welcome_text'] = 'Votre repondeur automatique est déjà configuré!';
$PALANG['pUsersVacation_subject'] = 'Sujet';
$PALANG['pUsersVacation_subject_text'] = 'En dehors du bureau';
$PALANG['pUsersVacation_body'] = 'Message'; # XXX
$PALANG['pUsersVacation_body'] = 'Message';
$PALANG['pUsersVacation_body_text'] = <<<EOM
Je serai absent(e) de <date> jusqu\'au <date>.
Pour toute urgence, merci de contacter <contact person>.
@ -349,6 +350,8 @@ $PALANG['pUsersVacation_button_away'] = 'Absence';
$PALANG['pUsersVacation_button_back'] = 'De retour';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Impossible de mettre à jour vos paramètres de réponse automatique!</span>';
$PALANG['pUsersVacation_result_success'] = 'Votre réponse automatique a été enlevée!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'Création de compte';
$PALANG['pCreate_dbLog_createalias'] = 'Création d\'alias';
@ -375,9 +378,9 @@ $PALANG['pStatus_undeliverable'] = 'Non délivrable ';
$PALANG['pStatus_custom'] = 'Délivré à ';
$PALANG['pStatus_popimap'] = 'POP/IMAP ';
$PALANG['pPasswordTooShort'] = "Mot de passe trop court. - %s caractères minimum";
$PALANG['pInvalidDomainRegex'] = "Invalid domain name %s, fails regexp check"; # XXX
$PALANG['pInvalidDomainDNS'] = "Invalid domain %s, and/or not discoverable in DNS"; # XXX
$PALANG['pInvalidMailRegex'] = "Invalid email address, fails regexp check"; # XXX
$PALANG['pInvalidDomainRegex'] = "Nom de Domaine Invalide %s, vérification regexp impossible";
$PALANG['pInvalidDomainDNS'] = "Domaine Invalide %s, et/ou non resolvable via les DNS";
$PALANG['pInvalidMailRegex'] = "Adresse email invalide, vérification regexp impossible";
$PALANG['pFetchmail_welcome'] = 'Récupérer le courrier pour :';
$PALANG['pFetchmail_new_entry'] = 'Nouvelle entrée';
$PALANG['pFetchmail_database_save_error'] = 'Impossible d\'enregistrer cette entrée dans la base!';
@ -387,7 +390,7 @@ $PALANG['pFetchmail_invalid_mailbox'] = 'Compte courriel incorrect!';
$PALANG['pFetchmail_server_missing'] = 'Merci d\'entrer le nom du serveur distant!';
$PALANG['pFetchmail_user_missing'] = 'Merci d\'entrer le nom de l\'utilisateur distant!';
$PALANG['pFetchmail_password_missing'] = 'Merci d\'entrer le mot de passe distant!';
$PALANG['pFetchmail_field_id'] = 'ID'; # XXX
$PALANG['pFetchmail_field_id'] = 'ID';
$PALANG['pFetchmail_field_mailbox'] = 'Compte courriel';
$PALANG['pFetchmail_field_src_server'] = 'Serveur';
$PALANG['pFetchmail_field_src_auth'] = 'Type Auth';
@ -398,10 +401,10 @@ $PALANG['pFetchmail_field_poll_time'] = 'Fréquence';
$PALANG['pFetchmail_field_fetchall'] = 'Tout récupérer';
$PALANG['pFetchmail_field_keep'] = 'Conserver';
$PALANG['pFetchmail_field_protocol'] = 'Protocole';
$PALANG['pFetchmail_field_usessl'] = 'SSL active'; # XXX
$PALANG['pFetchmail_field_usessl'] = 'SSL activé';
$PALANG['pFetchmail_field_extra_options'] = 'Options supplémentaires';
$PALANG['pFetchmail_field_mda'] = 'MDA'; # XXX
$PALANG['pFetchmail_field_date'] = 'Date'; # XXX
$PALANG['pFetchmail_field_mda'] = 'MDA';
$PALANG['pFetchmail_field_date'] = 'Date';
$PALANG['pFetchmail_field_returned_text'] = 'Message retour';
$PALANG['pFetchmail_desc_id'] = 'Identifiant';
$PALANG['pFetchmail_desc_mailbox'] = 'Compte courriel local';
@ -414,9 +417,9 @@ $PALANG['pFetchmail_desc_poll_time'] = 'Vérifier toutes les ... minutes'
$PALANG['pFetchmail_desc_fetchall'] = 'Récupérer tous les messages, nouveaux et déjà lus';
$PALANG['pFetchmail_desc_keep'] = 'Conserver une copie des messages sur le serveur';
$PALANG['pFetchmail_desc_protocol'] = 'Protocole à utiliser';
$PALANG['pFetchmail_desc_usessl'] = 'SSL encryption'; # XXX
$PALANG['pFetchmail_desc_usessl'] = 'Encryption SSL';
$PALANG['pFetchmail_desc_extra_options'] = 'Options supplémentaires de Fetchmail';
$PALANG['pFetchmail_desc_mda'] = 'Mail Delivery Agent'; # XXX
$PALANG['pFetchmail_desc_mda'] = 'Mail Delivery Agent';
$PALANG['pFetchmail_desc_date'] = 'Date dernière vérification/changement configuration';
$PALANG['pFetchmail_desc_returned_text'] = 'Message dernière vérification';

@ -274,6 +274,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Poslužitelj e-pošte je sekundarni M
$PALANG['pAdminCreate_domain_button'] = 'Dodaj domenu';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Domenu nije bilo moguče dodati!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Domena je bila uspješno dodana!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -346,6 +347,8 @@ $PALANG['pUsersVacation_button_away'] = 'Uključi odsutnost';
$PALANG['pUsersVacation_button_back'] = 'Isključi odsutnost';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Nemoguće promijeniti vaše postavke o odsutnosti!</span>';
$PALANG['pUsersVacation_result_success'] = 'Obvijest o odsutnosti je uklonjena!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'stvori poštanski ormarić';
$PALANG['pCreate_dbLog_createalias'] = 'stvori alias';

@ -280,6 +280,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'A mail szerver egy backup MX';
$PALANG['pAdminCreate_domain_button'] = 'Domain felvétele';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">A domain felvétele sikertelen!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'A domain-t felvettük az adatbázisba!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">A domain törlése nem sikerült!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -355,6 +356,8 @@ $PALANG['pUsersVacation_button_away'] = 'Automatikus válaszadás bekapcsolása'
$PALANG['pUsersVacation_button_back'] = 'Automatikus válaszadás kikapcsolása';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Nem sikerült megváltoztatni az automatikus válasz konfigurációdat!</span>';
$PALANG['pUsersVacation_result_success'] = 'Az automatikus válaszadás sikeresen kikapcsolva!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'postafiók létrehozása';
$PALANG['pCreate_dbLog_createalias'] = 'alias létrehozása';

@ -274,6 +274,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
$PALANG['pAdminCreate_domain_button'] = 'Bæta við léni';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Get ekki bætt við léni!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Lén hefur verið bætt inn!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Unable to remove domain!</span>'; # XXX
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -346,6 +347,8 @@ $PALANG['pUsersVacation_button_away'] = 'Verð í burtu';
$PALANG['pUsersVacation_button_back'] = 'Kem aftur';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Get ekki uppfært sjálfvirk skilaboð þín!</span>';
$PALANG['pUsersVacation_result_success'] = 'Sjálfvirk skilaboð þín (svar) hefur verið fjarlægt!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox'; # XXX
$PALANG['pCreate_dbLog_createalias'] = 'create alias'; # XXX

@ -276,6 +276,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'Questo server &egrave; un MX secondar
$PALANG['pAdminCreate_domain_button'] = 'Aggiungi dominio';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Impossibile aggiungere il dominio!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'Il dominio &egrave; stato aggiunto!';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">Impossibile cancellare il dominio!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -348,6 +349,8 @@ $PALANG['pUsersVacation_button_away'] = 'Imposta autorisponditore';
$PALANG['pUsersVacation_button_back'] = 'Rimuovi autorisponditore';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Impossibile registrare i valori per l\'autorisponditore!</span>';
$PALANG['pUsersVacation_result_success'] = 'La tua risposta automatica &egrave; stata tolta!';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'crea casella';
$PALANG['pCreate_dbLog_createalias'] = 'crea alias';

@ -280,6 +280,7 @@ $PALANG['pAdminCreate_domain_backupmx'] = 'バックアップ MXサーバ';
$PALANG['pAdminCreate_domain_button'] = 'ドメイン追加';
$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">ドメインを追加できません!</span>';
$PALANG['pAdminCreate_domain_result_success'] = 'ドメインを追加しました。';
$PALANG['pAdminDelete_admin_error'] = 'Unable to delete admin!'; # XXX
$PALANG['pAdminDelete_domain_error'] = '<span class="error_msg">ドメインが削除できません!</span>';
$PALANG['pAdminDelete_alias_domain_error'] = '<span class="error_msg">Unable to remove domain alias!</span>'; # XXX
@ -353,6 +354,8 @@ $PALANG['pUsersVacation_button_away'] = '設定';
$PALANG['pUsersVacation_button_back'] = '解除';
$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">自動応答の設定を更新できませんでした!</span>';
$PALANG['pUsersVacation_result_success'] = '自動応答を解除しました。';
$PALANG['pUsersVacation_activefrom'] = 'Active from'; # XXX
$PALANG['pUsersVacation_activeuntil'] = 'Active until'; # XXX
$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox'; # XXX
$PALANG['pCreate_dbLog_createalias'] = 'create alias'; # XXX

@ -72,10 +72,10 @@ function update_string_list() {
function forcepatch() {
for i in `seq 1 10` ; do
for i in `seq 1 5` ; do
for file in $filelist ; do
test "$file" = "en.lang" && { echo "*** skipping en.lang ***"; continue ; } >&2
"$0" "$file" | head -n7 | recountdiff | patch "$file"
"$0" "$file" | sed -n '1,3 p ; 5 s/^./-/p ; 5s/^./+/p ; 6p' | recountdiff | patch "$file"
done
done
} # end forcepatch

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save