phamm-0.5.18/0000755000175300017530000000000011354605742011712 5ustar phammphammphamm-0.5.18/README.locales0000644000175300017530000000262111146320641014203 0ustar phammphamm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Phamm - README.translations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright (c) 2005-2009 Phamm Team Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; A copy of the license in DOCS.LICENSE file. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Phamm uge gettext to support locale translations. Howto create a new translation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1- enter in po directory and copy phamm.pot (Phamm po Template) in your new ll_CC.po file or from CVS repository http://cvs.savannah.gnu.org/viewvc/*checkout*/phamm/phamm05/po/phamm.pot ll = indicate the language (en, fr, de, it...) CC = indicate the country code (GB, CH, DE...) 2- edit your ll_CC.po and edit header informations 3- fill all msgstr messages (preserve variable like %s or %d) Note that you can provide partial translation, the words not available in your translation will be displayed in English. 4- (optional) try compile your translation with msgfmt -v ll_CC.po 5- Submit you translation as patch using https://savannah.nongnu.org/projects/phamm or send a e-mail attach to Thanks! phamm-0.5.18/docs/0000755000175300017530000000000011354605735012644 5ustar phammphammphamm-0.5.18/docs/phamm_history-it.sgml0000644000175300017530000001421110732750224017015 0ustar phammphamm
Phamm 05 De Zorzi
team@phamm.org
0.1 2007-10-06 dza Prima versione Questo documento ... Phamm .
Storia del progetto Conoscevo Mirko Grava da neanche un anno e mi dimostr come nel 2002 installava e configurava server mail con domini virtuali utilizzando come base dati LDAP, certo un sistema all'avanguardia pensando che esso era totlamente basato su software open-source. Come front-end di gestione web Mirko usava Jamm, un software scritto in linguaggio JSP. Alle installazioni di base effettuate usando l'howto di Jamm Mirko aggiungeva via via sempre pi caratteristiche e novit, prima fra tutte il vacation e si present ben presto l'esigenza di avere a disposizione un software modificabile e velocemente adattabile alle nuove esigenze e qui fui interpellato. Non conoscendo il linguaggio JSP pensai che forse non sarebbe stato difficile riscrivere totalmente il front-end in PHP. L'idea piacque a Mirko in quanto l'installazione dell'esecutore di Java quasi sempre installato appositamente per il front-end Jamm poteva essere evitata adottando pi comodamente una installazione del server web con supporto PHP. Inoltre usando PHP si sarebbe usato solo software libero gi disponibili su tutte le distribuzioni Linux, un vantaggio non trascurabile. Non fu difficile dare le basi al progetto, in un pomeriggio c'era un qualcosa che fu la versione 0.0.1 che gestiva i dati in sola lettura. Inizialmente decidemmo di mantenere lo schema del progetto Jamm e di ricreare pezzo per pezzo tutte le caratteristiche di Jamm ma riscrivendo totalmente il codice in PHP. Il 04/06/2004 11:14 si annunciava sulla mailing list ufficiale di Phamm (che contava meno di cinque iscritti) la versione 0.0.2 destinata ai soli sviluppatori. Dalla versione 0.0.9 si cominciava a fare sul serio, Phamm a parte alcune feature mancante e qualche bug di giovinezza era usabile quanto Jamm, in sostanza la serie 0.1.x segna l'entrata di Phamm sui sistemi di produzione RHX (la nostra azienda). Gi da queste prime versioni alcuni temerari sistemisti iniziarono a usare Phamm e a fornire le prime traduzioni. Nello stesso periodo Mirko e io eravamo sorpresi ma carichi nel vedere che altre persone erano interessate al progetto, probabilmente per gli stessi motivi che avevano spinto noi alla scrittura iniziale di Phamm. I plugin L'idea dei plugin non nuova ed era un obiettivo a cui volevo arrivare, la versione 0.2.0 segna l'introduzione del supporto dei plugin. Il primo plugin a essere scritto fu il plugin pdns. phamm.schema Studiando pi a fondo LDAP e seguento una pianificazione mirata si decise di abbandonare jamm.schema questo non voleva essere una scelta per customizzare il progetto, anzi la idea di creare delle objectClass generiche che fossero sub di person dimostra il voler utilizzare quanto gi disponibile e aprire la strada per l'integrazione di nuove funzionalit: i plugin. La versione 0.3.0 segna l'entrata del phamm.schema. A breve fu richiesto a IANA e assegnato a RHX Studio Associato un OID utilizzato nel progetto. L'OID assegnato il numero 22339 ed pubblicato sulla URL http://www.iana.org/assignments/enterprise-numbers. phamm04 La versione 0.4.0 segna dei cambiamenti sostanziali alla struttura del file-system come la separazione della directory www-data per separare i file accessibili da web. Nel 2005 phamm04 era ormai utilizzato da molte persone si presentava tuttavia alcuni limiti derivanti dallo sviluppo precoce del progetto dettato dalla necessit di rimpiazzare in produzione Jamm. Si decise quindi di aprire non nuovo branch ma un nuovo modulo riscrivendo il codice al 100%. phamm05 Alla fine del 2005 buttai le basi per phamm05 il server CVS del progetto era ospitato Savannah (gnu.org) dopo essere transitato su diversi server cvs,svn di nostra propriet per dare un accesso pubblico al sorgente e pi in linea con le esigenze di un progetto open-source. Dopo una lunga gestazione durata quasi due anni, finalmente a settembre 2007 phamm05 era usabile. In breve periodo si sussegguirono alcune versioni che correggievano errori e introducevano le feature mancanti. XML Temaple 4 Phamm Parallelamente allo sviluppo di Phamm mi interesai al progetto PHPLdapAdmin che per sua natura (linguaggio PHP) era una montagna di codice che svolgeva raffinate funzioni di accesso in lettura/scrittura a diversi server LDAP. In particolare mi interessava il sistema di definizione dei Template che usava un file XML per la generazione di maschere di creazione di nuovi oggetti. Per un po' studiai il sistema e fornii anche alcune patch che furono accettate dagli sviluppatori perch tentavo di capire se PHPLdapAdmin avrebbe potuto essere un sistema che si prestava alla customizzazione, tramite appunto i template per le esigenze di Phamm. Dopo qualche mese decisi che PHPLdap admin i cui obiettivi erano quelli di fornire un frontedn generico di accesso ai server LDAP non erano compatibili con Phamm che doveva svolgere compiti molto pi precisi. Il lavoro effettuato con PLA fu comunque un buon punto di partenza per la creazione del nuovo sistema di template XML di Phamm.
phamm-0.5.18/docs/install.xml0000644000175300017530000001670711125657012015036 0ustar phammphamm Phamm Install Phamm Team
team@phamm.org
24/09/2008 Copyright © 2008 Alessandro De Zorzi, Mirko Grava Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
Preliminary Obtain Phamm To obtain last version of Phamm, please visit the web site www.phamm.org. Files can be download directly from http://open.rhx.it/phamm/ Prepare the files Untar the archive and put the directory phamm-X.X.X in a web accessible director (Example: /var/www/). tar xvfz phamm-X.X.X.tar.gz mv phamm /var/www/ You can obtain to configure httpd to use Alias and make accessible from web only the sub-directory phamm/www-data. Requirements Phamm should works any web server that support PHP. Phamm Team tested Phamm with Apache and lighttpd. You need a OpenLDAP server configured and a Webbrowser (doh!). Optional requirements required for email postfix email server pop3/imap: severs (that support ldap)examples: cyrus,courier. (tested with apache) gnarwl: for autoresponding:(to first user email) amavisd: for anti-virus/anti-spam: spamassassain clam-av or similar av-software (tested with Clam-AV) Optional requirements for ftp pure-ftpd pure-ftpd-ldap-backend Contents In the examples folder you can find examples of all the configuration files for each server section outlined below. Please remember these are examples and they will have to be edited to suit your own personal requirements. Configure LDAP Service Schema Copy schema/phamm.schema file in your schema directory (ex. /etc/ldap/schema/ for Debian). Probably you need other schema files, you can copy they from respective projects or from http://open.rhx.it/phamm/schema/ amavis.schema dnsdomain2.schema ISPEnv2.schema pureftpd.schema radius.schema samba.schema Copy examples/conf/slapd/slapd.conf to override your slapd.conf (ex. /etc/ldap/ for Debian or /etc/openldap). Add YOUR password for the cn admin with the command slappasswd. The slapd.conf has the loglevel set to 0. For debugging set it to 128 or start slapd with /usr/sbin/slapd -d1 as this will display to screen and save you the trouble of searching your log files for problems. For improve security we suggest to use Phamm LDAP ACL definition if you do not use already ACL please copy examples/conf/phamm/phamm.acl in the same place of the slapd.conf (ex. /etc/ldap/ for Debian or /etc/openldap) otherwise comment the line below in your slapd.conf # include /etc/ldap/phamm.acl then restart LDAP service. Change phamm password Create the password you want for the cn phamm with slappasswd and amend it in the examples/ldif/sample-mail.ldif (the default is rhx) with cut and paste :). Populate ldapadd -v -x -D "cn=admin,dc=example,dc=tld" -W -h localhost -f examples/ldif/sample-main.ldif The password is the first one you created. Phamm configuration Config file If not exists you need to create the main config file in phamm directory from the sample cp config.inc.example.php config.inc.php Then edit config.inc.php. Config file (plugin support) If you wish to use the plugin, please decomment each line you want in $plugins[] lines: $plugins = array(); $plugins[] = "mail"; $plugins[] = "alias"; //$plugins[] = "ftp"; //$plugins[] = "proxy"; Setting mail services There are a couple of excellent general examples of how to setup postfix and courier below these should assist with a more detailed discription of what you find below. http://www.postfix.org/addon.html http://www.faqs.org/docs/Linux-HOWTO/LDAP-Implementation-HOWTO.html#AEN747 http://alinux.washcoll.edu/docs/plc/postfix-courier-howto.html Config Postfix Install Postfix as a full Internet email server, and then add the snips that are in the samples directory to the relevant parts of the Postfix configuration files, remember to reload postfix after making the changes (most postfix configuration files are found in /etc/postfix) ensure the user vmail and the group vmail have been added. if not add them and remember the gid and uid as you need it here and in courier config don't forget to update your transport file and the transport.db file this is required. postmap /etc/postfix/transport Test this by logging into smtp and sending a mail to yourself (then when you set up courier you should have the mail awaiting you) log with /etc/init.d/postfix start; tail -f /var/log/mail.log Config Courier check that authdaemonrc is using ldap as a method to authenticate ie (authmodulelist=ldap), add the snips from the samples folder to the relevent file (normally found in /etc/courier) these files are authldap (configuration of ldap server) test by logging into your pop or imap server and collecting the mail that you sent to your self in setting up postfix. /etc/init.d/courier-authdaemonrc start; tail -f /var/log/mail.log Config Amavis Add the amavis sample data to your amavis.conf file. restart the services and check the logs for dependancies) Config Gnarwl add the sample gnarwl.cfg snip to you gnarwl.cfg. (this normally lives in /etc/gnarwl.cfg) set debug to 3 and test. don't forget to set debug back again when working. cleaner.sh script Edit the cleaner.sh script to reflect the your ldap layout. Phamm does not really delete accounts. Phamm mark them as "Deleting". You can use tools/cleaner.sh to do this with crond.
phamm-0.5.18/examples/0000755000175300017530000000000011354605735013532 5ustar phammphammphamm-0.5.18/examples/ldif/0000755000175300017530000000000011354605735014450 5ustar phammphammphamm-0.5.18/examples/ldif/sample-main.ldif0000644000175300017530000000024010760603702017477 0ustar phammphammdn:dc=example,dc=tld objectClass: top objectClass: domain dc: example dn:cn=admin,dc=example,dc=tld objectClass: top objectClass: organizationalRole cn: admin phamm-0.5.18/examples/ldif/sample-pureftpd.ldif0000644000175300017530000000225410434533771020421 0ustar phammphamm# IMPORTANT # the sample-mail.ldif must be already in the tree # to add this sample file use mod-ldap.sh in the tools directory # could be some problem with phpldapadmin dn: cn=postmaster,vd=example.tld,o=hosting,dc=example,dc=tld changetype: modify add: objectClass gidNumber: 5000 homeDirectory: /var/www/example.tld uid: example.tld uidNumber: 5000 objectClass: posixAccount FTPQuotaMBytes: 100 FTPStatus: enabled objectClass: PureFTPdUser # about FTPStatus # this is the documentation from # http://www.pureftpd.org/README.LDAP #--- #FTPStatus should be either "enabled" or "disabled". If the FTPStatus field #exists and is set to anything except "enabled", the user will not be #permitted to log in. If the FTPStatus field does not exist, the user *WILL* #be allowed to log in as normal, to allow LDAP users without the PureFTPdUser #objectClass. #--- # so could be a good thing have this attribute boolean in the schema but # the control is in the code so this MUST be like the original schema # attributetype ( 1.3.6.1.4.1.6981.11.3.7 NAME 'FTPStatus' # DESC 'Account status: enabled or disabled' # EQUALITY caseIgnoreIA5Match # SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) phamm-0.5.18/examples/ldif/smbldap-populate.ldif0000644000175300017530000001222210434400555020547 0ustar phammphamm# LDIF Export for: dc=example,dc=tld # Server: My LDAP Server (localhost) # IMPORTANT READ THIS FIRST # change the basedn and # change "THISISMYSID" with the SID obtained # by "net getlocalsid" by root # after this do the following command # smbldap-populate -i smbldap-populate.ldif -a Administrator # dn: uid=Administrator,vd=example.tld,o=hosting,dc=example,dc=tld cn: Administrator sn: Administrator objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: sambaSamAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 0 uid: Administrator uidNumber: 0 homeDirectory: /home/Administrator sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaHomePath: \\PHAMM-PDC\Administrator sambaHomeDrive: H: sambaProfilePath: \\PHAMM-PDC\profiles\Administrator sambaPrimaryGroupSID: THISISMYSID-5012 sambaSID: THISISMYSID-5000 loginShell: /bin/false gecos: Netbios Domain Administrator sambaLMPassword: D58939F1B5DBE9DBAAD3B435B51404EE sambaAcctFlags: [U] sambaNTPassword: A107034C4767307F00FD68E3ED9330E6 sambaPwdLastSet: 1148320187 sambaPwdMustChange: 1152208187 userPassword: {SSHA}h5GQAerojC7lZfU3JYLZbKKXSCNndUxP dn: uid=nobody,vd=example.tld,o=hosting,dc=example,dc=tld cn: nobody sn: nobody objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: sambaSamAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 5014 uid: nobody uidNumber: 999 homeDirectory: /dev/null sambaPwdLastSet: 0 sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 2147483647 sambaHomePath: \\PHAMM-PDC\nobody sambaHomeDrive: H: sambaProfilePath: \\PHAMM-PDC\profiles\nobody sambaPrimaryGroupSID: THISISMYSID-5014 sambaLMPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX sambaNTPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX sambaAcctFlags: [NUD ] sambaSID: THISISMYSID-2998 loginShell: /bin/false dn: o=samba,dc=example,dc=tld objectClass: organization o: samba dn: ou=Computers,o=samba,dc=example,dc=tld objectClass: top objectClass: organizationalUnit ou: Computers dn: ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: organizationalUnit ou: Groups dn: cn=Account Operators,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5048 cn: Account Operators description: Netbios Domain Users to manipulate users accounts sambaSID: S-1-5-32-5048 sambaGroupType: 5 displayName: Account Operators dn: cn=Administrators,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5044 cn: Administrators description: Netbios Domain Members can fully administer the computer/sambaDomainName sambaSID: S-1-5-32-5044 sambaGroupType: 5 displayName: Administrators dn: cn=Backup Operators,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5051 cn: Backup Operators description: Netbios Domain Members can bypass file security to back up files sambaSID: S-1-5-32-5051 sambaGroupType: 5 displayName: Backup Operators dn: cn=Domain Admins,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5012 cn: Domain Admins memberUid: root description: Netbios Domain Administrators sambaSID: THISISMYSID-5012 sambaGroupType: 2 displayName: Domain Admins dn: cn=Domain Computers,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5015 cn: Domain Computers description: Netbios Domain Computers accounts sambaSID: THISISMYSID-5015 sambaGroupType: 2 displayName: Domain Computers dn: cn=Domain Guests,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5014 cn: Domain Guests description: Netbios Domain Guests Users sambaSID: THISISMYSID-5014 sambaGroupType: 2 displayName: Domain Guests dn: cn=Domain Users,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5013 cn: Domain Users description: Netbios Domain Users sambaSID: THISISMYSID-5013 sambaGroupType: 2 displayName: Domain Users dn: cn=Print Operators,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5050 cn: Print Operators description: Netbios Domain Print Operators sambaSID: S-1-5-32-5050 sambaGroupType: 5 displayName: Print Operators dn: cn=Replicators,ou=Groups,o=samba,dc=example,dc=tld objectClass: top objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 5052 cn: Replicators description: Netbios Domain Supports file replication in a sambaDomainName sambaSID: S-1-5-32-5052 sambaGroupType: 5 displayName: Replicators dn: ou=Idmap,o=samba,dc=example,dc=tld objectClass: top objectClass: organizationalUnit ou: Idmap dn: sambaDomainName=PHAMM,o=samba,dc=example,dc=tld gidNumber: 10000 uidNumber: 10000 objectClass: top objectClass: sambaDomain objectClass: sambaUnixIdPool sambaSID: THISISMYSID sambaDomainName: PHAMM phamm-0.5.18/examples/ldif/sample-pdns.ldif0000644000175300017530000000242310432323266017524 0ustar phammphammdn: ou=dns,dc=example,dc=tld objectClass: top objectClass: organizationalUnit ou: dns description: dns zone on ldap dn: cn=dnsldap,ou=dns,dc=example,dc=tld objectClass: top objectClass: organizationalRole objectClass: simpleSecurityObject cn: dnsldap userPassword:: e1NTSEF9blFYSHpMeVVHK3VsNExmU2taU0NrdkwzeVAyTE03NUQ= dn: dc=example.tld,ou=dns,dc=example,dc=tld objectClass: top objectClass: dnsdomain2 objectClass: domainrelatedobject dc: example.tld associatedDomain: example.tld aRecord: 192.168.12.12 dn: dc=www,dc=example.tld,ou=dns,dc=example,dc=tld objectClass: top objectClass: dnsdomain2 objectClass: domainrelatedobject dc: www associatedDomain: www.example.tld aRecord: 192.168.12.12 dn: dc=mail,dc=example.tld,ou=dns,dc=example,dc=tld objectClass: top objectClass: dnsdomain2 objectClass: domainrelatedobject dc: mail associatedDomain: mail.example.tld aRecord: 192.168.12.12 dn: dc=mail2,dc=example.tld,ou=dns,dc=example,dc=tld objectClass: top objectClass: dnsdomain2 objectClass: domainrelatedobject dc: mail2 associatedDomain: mail2.example.tld aRecord: 192.168.12.12 dn: dc=webmail,dc=example.tld,ou=dns,dc=example,dc=tld objectClass: top objectClass: dnsdomain2 objectClass: domainrelatedobject dc: webmail associatedDomain: webmail.example.tld cNAMERecord: www.example.tld phamm-0.5.18/examples/ldif/address-book.ldif0000644000175300017530000000163610563026222017660 0ustar phammphamm# LDIF Export for: mail=mirko@example.tld,vd=example.tld,o=hosting,dc=example,dc=tld # this is a sample entry for a complete account # it is only needed if you want a address book with Thunderbird dn: mail=mirko@example.tld,vd=example.tld,o=hosting,dc=example,dc=tld objectClass: top objectClass: VirtualMailAccount objectClass: Vacation objectClass: VirtualForward objectClass: amavisAccount mail: mirko@example.tld userPassword: {CRYPT}$1$1i1IhFKP$HYUi3KiRFLZNsFokvRuHF1 uid: mirko.example.tld lastChange: 1170928183 quota: 10 vdHome: /home/vmail/domains mailbox: example.tld/mirko delete: FALSE vacationActive: FALSE forwardActive: FALSE accountActive: TRUE smtpAuth: FALSE amavisBypassVirusChecks: TRUE amavisBypassSpamChecks: FALSE mobile: +39 0987654321 cn: Grava Mirko homePhone: +39 1234 56789 telephoneNumber: +39 4321 0987654 sn: Grava pager: +39 69 72437 givenName: Mirko facsimileTelephoneNumber: +39 2143 329012 phamm-0.5.18/examples/ldif/sample-mail.ldif0000644000175300017530000000522111036660352017502 0ustar phammphammdn:o=hosting,dc=example,dc=tld objectClass: top objectClass: organization o: hosting description: mail.example.tld hosting root dn:cn=phamm,o=hosting,dc=example,dc=tld objectClass: top objectClass: organizationalRole objectClass: simpleSecurityObject cn: phamm userPassword: {SSHA}zCfpI3LEnzO0ZWJo8VeHes6TicnPJuME dn:vd=example.tld,o=hosting,dc=example,dc=tld objectClass: top objectClass: VirtualDomain postfixTransport: maildrop: lastChange: 1066742030 vd: example.tld delete: FALSE accountActive: TRUE adminID: cn=matrix,ou=admin,dc=example,dc=tld editAV: FALSE maxAlias: 20 maxMail: 10 maxQuota: 250 dn:cn=postmaster,vd=example.tld,o=hosting,dc=example,dc=tld objectClass: top objectClass: VirtualMailAlias mail: postmaster@example.tld lastChange: 1066742031 maildrop: postmaster accountActive: TRUE cn: postmaster sn: postmaster userPassword: {SSHA}G7vRIKNRvDQg0T0qarcMgbYaQ+iOLEgq editAccounts: FALSE dn:mail=abuse@example.tld,vd=example.tld,o=hosting,dc=example,dc=tld objectClass: top objectClass: VirtualMailAlias mail: abuse@example.tld lastChange: 1066742031 maildrop: postmaster accountActive: TRUE cn: abuse sn: abuse dn:mail=john.doe@example.tld,vd=example.tld,o=hosting,dc=example,dc=tld objectClass: top objectClass: VirtualMailAccount objectClass: Vacation objectClass: amavisAccount objectClass: VirtualForward mail: john.doe@example.tld vdHome: /home/vmail/domains mailbox: example.tld/john.doe/ delete: FALSE accountActive: TRUE sn: Doe userPassword: {SSHA}G7vRIKNRvDQg0T0qarcMgbYaQ+iOLEgq description: Vacation description vacationActive: FALSE vacationStart: 01 gennaio 2004 vacationEnd: 01 gennaio 2004 vacationForward: user@example.tld forwardActive: FALSE lastChange: 1108499016 cn: John quota: 52428800S amavisSpamKillLevel: 6.0 amavisSpamTag2Level: 5.5 amavisSpamTagLevel: 3.0 amavisBypassVirusChecks: FALSE amavisBypassSpamChecks: TRUE mailAutoreply: john.doe@example.tld.autoreply dn:mail=john.smith@example.tld,vd=example.tld,o=hosting,dc=example,dc=tld objectClass: top objectClass: VirtualMailAccount objectClass: Vacation objectClass: amavisAccount objectClass: VirtualForward mail: john.smith@example.tld vdHome: /home/vmail/domains mailbox: example.tld/john.smith/ delete: FALSE accountActive: TRUE sn: Smith userPassword: {SSHA}G7vRIKNRvDQg0T0qarcMgbYaQ+iOLEgq description: Vacation description vacationActive: FALSE vacationStart: 01 gennaio 2004 vacationEnd: 01 gennaio 2004 vacationForward: user@example.tld amavisBypassVirusChecks: TRUE amavisBypassSpamChecks: FALSE forwardActive: FALSE lastChange: 1108499023 cn: John quota: 52428800S amavisSpamKillLevel: 6.0 amavisSpamTag2Level: 5.5 amavisSpamTagLevel: 3.0 mailAutoreply: john.smith@example.tld.autoreply phamm-0.5.18/examples/ldif/sample-squid.ldif0000644000175300017530000000077010434533771017716 0ustar phammphamm# IMPORTANT # the sample-mail.ldif must be already in the tree # to add this sample file use mod-ldap.sh in the tools directory # could be some problem with phpldapadmin dn:mail=john.doe@example.tld,vd=example.tld,o=hosting,dc=example,dc=tld changetype: modify add: ObjectClass objectClass: proxyAccount uid: john.doe webAccess: TRUE dn:mail=john.smith@example.tld,vd=example.tld,o=hosting,dc=example,dc=tld changetype: modify add: ObjectClass objectClass: proxyAccount uid: john.smith webAccess: FALSE phamm-0.5.18/examples/ldif/sample-hosting.ldif0000644000175300017530000000047310752357007020243 0ustar phammphammdn:o=hosting,dc=example,dc=tld objectClass: top objectClass: organization o: hosting description: mail.example.tld hosting root dn:cn=phamm,o=hosting,dc=example,dc=tld objectClass: top objectClass: organizationalRole objectClass: simpleSecurityObject cn: phamm userPassword: {SSHA}zCfpI3LEnzO0ZWJo8VeHes6TicnPJuME phamm-0.5.18/examples/conf/0000755000175300017530000000000011354605735014457 5ustar phammphammphamm-0.5.18/examples/conf/sasl/0000755000175300017530000000000011354605735015421 5ustar phammphammphamm-0.5.18/examples/conf/sasl/saslauthd.conf0000644000175300017530000000135710772507717020272 0ustar phammphamm# This file must be in /etc # this is the default for ldap (see man saslauthd) # this is for fastbind # all your account o alias could do smtpauth ldap_servers: ldap://ldap.example.tld/ ldap_auth_method: fastbind ldap_filter: mail=%u,vd=%d,o=hosting,dc=example,dc=tld ldap_base: o=hosting,dc=example,dc=tld ldap_version: 3 # this is for simple bind # only smthAuth=TRUE could do relay ldap_servers: ldap://ldap.example.tld/ ldap_auth_method: bind ldap_bind_dn: cn=phamm,o=hosting,dc=example,dc=tld ldap_bind_pw: phammpasswordhere ldap_filter: (&(mail=%U@%d)(smtpAuth=TRUE)) ldap_base: o=hosting,dc=example,dc=tld ldap_version: 3 phamm-0.5.18/examples/conf/sasl/master.cf0000644000175300017530000000026110432334341017211 0ustar phammphamm# could be some problem in some standard installation # smtpd is chrooted so you must do a simple change like this smtp inet n - n - - smtpd phamm-0.5.18/examples/conf/sasl/main.cf0000644000175300017530000000062110432334341016642 0ustar phammphamm# this is an add-on ONLY for SASL-AUTH # in your /etc/postfix/main.cf # remember to add permit_sasl_authenticated # where you need smtpd_sasl_auth_enable = yes smtpd_sasl_application_name = smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains, ..... phamm-0.5.18/examples/conf/sasl/saslauthd0000644000175300017530000000055110432334341017321 0ustar phammphamm# On Debian this is in /etc/default/ # This needs to be uncommented before saslauthd will be run automatically START=yes # You must specify the authentication mechanisms you wish to use. # This defaults to "pam" for PAM support, but may also include # "shadow" or "sasldb", like this: # MECHANISMS="pam shadow" MECHANISMS="ldap" PARAMS="-O /etc/saslauthd.conf" phamm-0.5.18/examples/conf/sasl/smtpd.conf0000644000175300017530000000034310772507717017423 0ustar phammphamm# with this postfix use SASL to permit # relay be sure that you use SMTP-AUTH over TLS # /etc/postfix/sasl/smtpd.conf pwcheck_method: saslauthd saslauthd_path: /var/run/saslauthd/mux saslauthd_version: 2 mech_list: PLAIN LOGIN phamm-0.5.18/examples/conf/davical/0000755000175300017530000000000011354605735016062 5ustar phammphammphamm-0.5.18/examples/conf/davical/example.org-conf.php0000644000175300017530000003236711252124201021727 0ustar phammphammpg_connect[] = 'dbname=davical port=5432 user=general' * The application will attempt to * connect to the database, successively applying connection parameters from * the array in $c->pg_connect. * used in the web interface but also the caldav Server */ $c->pg_connect[] = "dbname=davical user=davical_app"; // $c->pg_connect[] = "dbname=davical user=davical_app port=5433 host=somehost password=mypass"; /**************************** ********* Desirable ********* *****************************/ /** * default : DAViCal CalDAV Server * Is used to specify the authentication realm of the server, as well as * being used as a name to display in various places. */ $c->system_name = "DAViCal CalDAV Server @ example.org"; /** * default is false * If true, then TODO requested from someone other than the admmin or owner * of a calendar will not get any answer. Often these todo are only relevant * to the owner, but in some shared calendar situations they might not be in * which case you should let this default to false. */ $c->hide_TODO = true; /** * The default is false for backward compatibility * If true, then calendars accessed via WebDAV will only be readonly. Any * changes to them must be applied via CalDAV. * * You may want to set this to false during your initial setup to make it * easier for people to PUT whole calendars as part of the conversion of * their data. After this it is recommended to turn it off so that clients * which have been misconfigured are readily identifiable. */ $c->readonly_webdav_collections = true; /*************************************************************************** * * * ADMIN web Interface * * * ***************************************************************************/ /** * Displayed on the login page to indicate who you should ask if you have * problems logging on. Also for the "From" of the email sent when a user * has lost his password and click on the login page * on "Help! I've forgotten my password" */ $c->admin_email ='webmaster@example.org'; /** * default=true * if true the admin web interface will * have link on name to access details *

The "enable_row_linking" option controls whether javascript is used * to make the entire row clickable in browse lists in the administration * pages. Since this doesn't work in Konqueror you may want to set this * to false if you expect people to be using Konqueror with the DAViCal * administration pages.

*/ $c->enable_row_linking = true; /** * These should be an array of style sheets with a path specified relative * to the root directory. Used for overriding display styles in the admin * interface. * e.g. : $c->local_styles = array('/css/my.css'); **/ // $c->local_styles = array(); // $c->print_styles = array(); /*************************************************************************** * * * Caldav Server * * * ***************************************************************************/ /** * The "collections_always_exist" value defines whether a MKCALENDAR * command is needed to create a calendar collection before calendar * resources can be stored in it. You will want to leave this to the * default (true) if people will be using Evolution or Sunbird / * Lightning against this because that software does not support the * creation of calendar collections. * Default: true */ $c->collections_always_exist = true; /** * The name of a user's "home" calendar. This will be created for each * new user. * Default: 'home' */ // $c->home_calendar_name = 'home'; /** * An array of groups / permissions which should be automatically added * for each new user created. This is a crude mechanism which we * will hopefully manage to work out some better approach for in the * future. For now, create an array that looks something like: * array( 9 => 'R', 4 => 'A' ) * to create a 'read' relationship to user_no 9 and an 'all' relation * with user_no 4. * Default: none */ // $c->default_relationships = array(); /** * An array of fields on the usr record which should be set to specific * values when the users are created. * Default: none */ // $c->template_usr = array( 'active' => true, // 'locale' => 'it_IT', // 'date_format_type' => 'E', // 'email_ok' => date('Y-m-d') // ); /*************************************************************************** * * * External Authentication Sources * * * ***************************************************************************/ /** * Allow specifying another way to control access of the user by authenticating * him against other drivers such has LDAP (the default is the PgSQL DB) * $c->authenticate_hook['call'] should be set to the name of the plugin and must * be a valid function that will be call like this: * call_user_func( $c->authenticate_hook['call'], $username, $password ) * * The login mecanism is made in 2 places: * - for the web interface in: index.php that calls RSCDSSession.php that extends * Session.php (from AWL libraries) * - for the caldav client in: caldav.php that calls BasicAuthSession.php * Both Session.php and BasicAuthSession.php check against the * authenticate_hook['call'], although for BasicAuthSession.php this will be for * each page. For Session.php this will only occur during login. * * $c->authenticate_hook['config'] should be set up with any configuration data * needed by the authenticate call for the moment used only in awl/inc/AuthPlugins.php * and he used to authenticate the user should be at least 'password,user_no' * awl/inc/AuthPlugins.php is a sample file not used by showing what could be * a hook */ /********************************/ /******* Other AWL hook *********/ /********************************/ // require_once('auth-functions.php'); // $c->authenticate_hook = array( // 'call' => 'AuthExternalAwl', // 'config' => array( // // A PgSQL database connection string for the database containing user records // 'connection' => 'dbname=wrms host=otherhost port=5433 user=general', // // Which columns should be fetched from the database // 'columns' => "user_no, active, email_ok, joined, last_update AS updated, last_used, username, password, fullname, email", // // a WHERE clause to limit the records returned. // 'where' => "active AND org_code=7" // ) // ); /********************************/ /*********** LDAP hook **********/ /********************************/ /* * For Active Directory go down to the next example. */ $c->authenticate_hook['call'] = 'LDAP_check'; $c->authenticate_hook['config'] = array( 'host' => 'localhost', //host name of your LDAP Server 'port' => '389', //port /* For the initial bind to be anonymous leave bindDN and passDN commented out */ // DN to bind to this server enabling to perform request 'bindDN'=> 'cn=admin,dc=example,dc=org', // Password of the previous bindDN to bind to this server enabling to perform request 'passDN'=> 'PASSWORD', 'protocolVersion' => '3', //Version of LDAP protocol to use 'baseDNUsers'=> 'o=hosting,dc=perversia,dc=net', //where to look at valid user // 'filterUsers' => 'objectClass=CalDavAccount', //filter which must validate a user according to RFC4515, i.e. surrounded by brackets 'filterUsers' => '(objectClass=CalDavAccount)(CalDavAccess=TRUE)', // 'baseDNGroups' => 'ou=divisions,dc=tennaxia,dc=net', //not used ATM // 'filterGroups' => 'objectClass=groupOfUniqueNames', //not used ATM /** /!\ "username" should be set and "updated" must be set **/ 'mapping_field' => array("username" => "mail", "updated" => "modifyTimestamp", "fullname" => "mail", "email" => "mail" ), //used to create the user based on his ldap properties /** used to set default value for all users, will be overcharged by ldap if defined also in mapping_field **/ // 'default_value' => array("date_format_type" => "E","locale" => "fr_FR"), /** foreach key set start and length in the string provided by ldap example for openLDAP timestamp : 20070503162215Z **/ 'format_updated'=> array('Y' => array(0,4),'m' => array(4,2),'d'=> array(6,2),'H' => array(8,2),'M'=>array(10,2),'S' => array(12,2)), // 'startTLS' => 'no', // Require that TLS is used for LDAP? // If ldap_start_tls is not working, it is probably // because php wants to validate the server's // certificate. Try adding "TLS_REQCERT never" to the // ldap configuration file that php uses (e.g. /etc/ldap.conf // or /etc/ldap/ldap.conf). Of course, this lessens security! 'scope' => 'subtree', // Search scope to use, defaults to subtree. // // Allowed values: base, onelevel, subtree. // ); // include('drivers_ldap.php'); /* * Use the following LDAP example if you are using Active Directory * * You will need to change host, passDN and DOMAIN in bindDN * and baseDNUsers. */ //$c->authenticate_hook['call'] = 'LDAP_check'; //$c->authenticate_hook['config'] = array( // 'host' => 'ldap://ldap.example.net', // 'bindDN' => 'auth@DOMAIN', // 'passDN' => 'secret', // 'baseDNUsers' => 'dc=DOMAIN,dc=local', // 'protocolVersion' => 3, // 'optReferrals' => 0, // 'filterUsers' => '(&(objectcategory=person)(objectclass=user)(givenname=*))', // 'mapping_field' => array("username" => "uid", // "fullname" => "cn" , // "email" => "mail"), // 'default_value' => array("date_format_type" => "E","locale" => "en_NZ"), // 'format_updated' => array('Y' => array(0,4),'m' => array(4,2),'d'=> array(6,2),'H' => array(8,2),'M'=>array(10,2),'S' => array(12,2)) // ); //include('drivers_ldap.php'); /** * Authentication against PAM using the Squid helper script. */ //$c->authenticate_hook = array( // 'call' => 'SQUID_PAM_check', // 'config' => array( 'script' => '/usr/bin/pam_auth', 'email_base' => 'example.com' ) // ); //include('drivers_squid_pam.php'); /** * The default locale will be "en_NZ"; * If you are in a non-English locale, you can set the default_locale * configuration to one of the supported locales. * * Supported Locales (at present, see: "select * from supported_locales ;" for a full list) * * "de_DE", "en_NZ", "es_AR", "fr_FR", "nl_NL", "ru_RU" * * If you want locale support you probably know more about configuring it than me, but * at this stage it should be noted that all translations are UTF-8, and pages are * served as UTF-8, so you will need to ensure that the UTF-8 versions of these locales * are supported on your system. * * People interested in providing new translations are directed to the Wiki: * http://rscds.sourceforge.net/moin/TranslatingRscds **/ $c->default_locale = "de_DE"; /** * Default will be $_SERVER['SERVER_NAME']; * This is used to construct URLs which are passed in the answers to the client. You may * want to force this to a specific domain in responses if your system is accessed by * multiple names, otherwise you probably won't need to change it. */ $c->domain_name = "example.org"; /** * Used as a fallback for the TZID of an event where one is not supplied as part * of a VEVENT. The local (server) time zone will be used as a default. */ // $c->local_tzid; /** * Many people want this, but it may be a security issue for you, so it is * disabled by default. If you enable it, then confidential / private events * will be visible to the 'organizer' or 'attendee' lists. The reason that * this becomes a security issue is that this identification needs to be based * on the user's e-mail address. The user's e-mail address is generally * something which they can set, so they could change it to be the address of * an attendee of a meeting and then would be able to read the meeting. * * Without this, the only person who can view/change PRIVATE or CONFIDENTIAL * events in a calendar is someone with full administrative rights to the calendar * usually the owner. * * If the only person that devious is your sysadmin then you probably already * enabled this option... */ // $c->allow_get_email_visibility = false; phamm-0.5.18/examples/conf/dovecot/0000755000175300017530000000000011354605735016122 5ustar phammphammphamm-0.5.18/examples/conf/dovecot/dovecot-ldap.conf0000644000175300017530000000157310752352522021352 0ustar phammphamm# dovecot-ldap.conf specific for phamm # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. hosts = localhost auth_bind = yes auth_bind_userdn = mail=%u,vd=%d,o=hosting,dc=example,dc=tld ldap_version = 3 base = o=hosting,dc=example,dc=tld deref = never scope = subtree user_filter = (&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u)) pass_filter = (&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u)) default_pass_scheme = CRYPT # the uid of your vmail user user_global_uid = 1002 # the guid of your vmail group user_global_gid = 1002 phamm-0.5.18/examples/conf/dovecot/dovecot.conf0000644000175300017530000000144610752352522020433 0ustar phammphamm# dovecot.conf specific for phamm # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. protocols = imap imaps client_workarounds = oe6-fetch-no-newmail outlook-idle log_timestamp = "%Y-%m-%d %H:%M:%S " mail_extra_groups = mail mail_debug = no mail_location = maildir:/home/vmail/domains/%d/%u # auth default { mechanisms = plain passdb ldap { args = /etc/dovecot/dovecot-ldap.conf } userdb ldap { args = /etc/dovecot/dovecot-ldap.conf } } phamm-0.5.18/examples/conf/apache2.2/0000755000175300017530000000000011354605735016122 5ustar phammphammphamm-0.5.18/examples/conf/apache2.2/htaccess0000644000175300017530000000032610522050522017623 0ustar phammphammAuthType Basic AuthName "Admin Zone" AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthLDAPURL ldap://localhost:389/o=hosting,dc=example,dc=tld?uid?sub? Require ldap-user "phamm" Require ldap-user "example.com" phamm-0.5.18/examples/conf/cron/0000755000175300017530000000000011354605735015420 5ustar phammphammphamm-0.5.18/examples/conf/cron/phamm0000644000175300017530000000057610564307316016451 0ustar phammphamm#! /bin/sh # phamm Cron script to rotate phamm log files daily. # phamm log do now work with syslogd # so is not important to restart syslogd # but could be a good idea have some days of # log to control your installation # set -e cd /var/log LOG="phamm.log" savelog -g adm -m 640 -u "www-data" -c 7 $LOG >/dev/null phamm-0.5.18/examples/conf/pure-ftpd-ldap/0000755000175300017530000000000011354605735017303 5ustar phammphammphamm-0.5.18/examples/conf/pure-ftpd-ldap/pureftpd-ldap.conf0000644000175300017530000000023610760603701022711 0ustar phammphammLDAPServer localhost LDAPPort 389 LDAPBaseDN o=hosting,dc=example,dc=tld LDAPBindDN cn=admin,dc=example,dc=tld LDAPBindPW rhx # # look sample-pureftpd.ldif phamm-0.5.18/examples/conf/gnarwl/0000755000175300017530000000000011354605735015751 5ustar phammphammphamm-0.5.18/examples/conf/gnarwl/footer.txt0000644000175300017530000000002710732433215017776 0ustar phammphamm -- $fullname <$reply> phamm-0.5.18/examples/conf/gnarwl/header.txt0000644000175300017530000000023010732433215017724 0ustar phammphammFrom: $fullname <$reply> To: $sender X-mailer: GNARWL MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Subject: Re: $subject phamm-0.5.18/examples/conf/gnarwl/gnarwl.cfg0000644000175300017530000000216310732443420017714 0ustar phammphamm# # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # map_sender $sender map_receiver $recepient map_subject $subject map_field $begin vacationStart map_field $end vacationEnd map_field $fullname cn map_field $deputy vacationForward map_field $reply mail server localhost port 389 scope sub login cn=phamm,o=hosting,dc=example,dc=tld password rhx protocol 0 base dc=example,dc=tld queryfilter (&(mailAutoreply=$recepient)(vacationActive=TRUE)) result vacationInfo blockfiles /var/lib/gnarwl/block/ umask 0644 blockexpire 48 mta /usr/sbin/sendmail -F $recepient -t $sender maxreceivers 64 maxheader 512 charset ISO8859-1 badheaders /var/lib/gnarwl/badheaders.db blacklist /var/lib/gnarwl/blacklist.db forceheader /var/lib/gnarwl/header.txt forcefooter /var/lib/gnarwl/footer.txt recvheader To Cc loglevel 3 phamm-0.5.18/examples/conf/pdns-backend-ldap/0000755000175300017530000000000011354605735017726 5ustar phammphammphamm-0.5.18/examples/conf/pdns-backend-ldap/pdns.local0000644000175300017530000000117010432334340021670 0ustar phammphamm# pdns.local specific for phamm # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # # view original sample from pdns package # this is a simple config for a LAN ldap-basedn=ou=dns,dc=example,dc=tld ldap-binddn=cn=dnsldap,ou=dns,dc=example,dc=tld ldap-secret=yourdnsldappasswdhere ldap-method=simple phamm-0.5.18/examples/conf/pdns-backend-ldap/pdns.conf0000644000175300017530000000154610432334340021532 0ustar phammphamm# pdns.conf specific for phamm # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # # view original sample from pdns package # this is a simple config for a LAN allow-recursion=127.0.0.1, 192.168.1.0/24 chroot=/var/spool/powerdns config-dir=/etc/powerdns daemon=yes disable-axfr=yes guardian=yes launch=ldap lazy-recursion=yes local-address=0.0.0.0 local-port=53 loglevel=3 master=yes module-dir=/usr/lib/powerdns recursor= 192.192.243.192 setgid=pdns setuid=pdns socket-dir=/var/run version-string=PHAMM DNS include=/etc/powerdns/pdns.d phamm-0.5.18/examples/conf/phamm/0000755000175300017530000000000011354605735015561 5ustar phammphammphamm-0.5.18/examples/conf/phamm/phamm.acl0000644000175300017530000001224411146312137017335 0ustar phammphamm# acl specific for phamm # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # # account must edit his password, spam level, forward, vacation, his name # postmaster with editAccounts=FALSE do the same thing for his domain # postmaster with editAccounts=TRUE can add account/alias and edit also amavisBypassVirusChecks, quota and smtpAuth # vadmin could do the same as postmaster with editAccounts=TRUE for some domains # IMPORTANT # this file was tested to be used on Debian Lenny with slapd 2.4.7-5 # Please remember that the rootdn is cn=admin,dc=example,dc=tld # access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=userPassword by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous auth by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=amavisBypassVirusChecks,quota,smtpAuth,accountActive by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [TRUE]" write by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=cn,sn,uid,forwardActive,vacationActive,vacationInfo,vacationStart,vacationEnd,vacationForward,amavisSpamTagLevel,amavisSpamTag2Level,amavisSpamKillLevel by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write access to dn.regex="^.*,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=editAccounts by dn="cn=admin,dc=example,dc=tld" write by self read by set.expand="user/editAccounts & [TRUE]" write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by * none access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=objectClass,entry by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [TRUE]" write by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=amavisBypassSpamChecks,accountActive,delete by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=otherPath by dn="cn=admin,dc=example,dc=tld" write by anonymous read by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=createMaildir,vdHome,mailbox,otherTransport by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/vd & [$1]" read access to dn.regex="^(.+,)?vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=vd by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$2,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$2]" write access to dn.regex="^(.+,)?vd=([^,]+),o=hosting,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [FALSE]" read by dn.exact,expand="cn=postmaster,vd=$2,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$2]" write access to dn.regex=".+,o=hosting,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by anonymous auth access to dn.regex=".+,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by anonymous auth access to dn.regex=".+,ou=admin,dc=example,dc=tld$" attrs=userPassword by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous auth access to dn.regex=".+,ou=admin,dc=example,dc=tld$" attrs=vd by dn="cn=admin,dc=example,dc=tld" write by self read access to dn.regex="ou=admin,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by self read phamm-0.5.18/examples/conf/phamm/global.acl0000644000175300017530000001375711131341575017507 0ustar phammphamm# acl specific for phamm # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # First of all # acl for pdns access to dn.regex="^(.+,)?cn=([^,]+),ou=dns,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by anonymous auth by dn.exact="cn=dnsldap,ou=dns,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$2,o=hosting,dc=example,dc=tld" write access to dn.regex="^(.+,)?dc=([^,]+),ou=dns,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by anonymous auth by dn.exact="cn=dnsldap,ou=dns,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$2,o=hosting,dc=example,dc=tld" write access to dn.regex="ou=dns,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by anonymous auth by dn.exact="cn=dnsldap,ou=dns,dc=example,dc=tld" read # now mail service # account must edit his password, spam level, forward, vacation, his name # postmaster with editAccounts=FALSE do the same thing for his domain # postmaster with editAccounts=TRUE can add account/alias and edit also amavisBypassVirusChecks, quota and smtpAuth # vadmin could do the same as postmaster with editAccounts=TRUE for some domains access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=userPassword,sambaNTPassword,sambaLMPassword by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous auth by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=amavisBypassVirusChecks,quota,smtpAuth,accountActive by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [TRUE]" write by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=cn,sn,forwardActive,vacationActive,vacationInfo,vacationStart,vacationEnd,vacationForward,amavisSpamTagLevel,amavisSpamTag2Level,amavisSpamKillLevel by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write access to dn.regex="^.*,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=editAccounts by dn="cn=admin,dc=example,dc=tld" write by self read by set.expand="user/editAccounts & [TRUE]" write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by * none access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=objectClass,entry by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [TRUE]" write by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=amavisBypassSpamChecks,accountActive,delete by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=FTPQuotaMBytes,FTPStatus,FTPQuotaFiles,uid,otherPath by dn="cn=admin,dc=example,dc=tld" write by anonymous read by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=uidNumber,gidNumber,createMaildir,vdHome,mailbox,otherTransport by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/vd & [$1]" read access to dn.regex="^(.+,)?vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=vd by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$2,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$2]" write access to dn.regex="^(.+,)?vd=([^,]+),o=hosting,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [FALSE]" read by dn.exact,expand="cn=postmaster,vd=$2,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$2]" write access to dn.regex=".+,o=hosting,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by anonymous auth access to dn.regex=".+,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by anonymous auth access to dn.regex=".+,ou=admin,dc=example,dc=tld$" attrs=userPassword by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous auth access to dn.regex=".+,ou=admin,dc=example,dc=tld$" attrs=vd by dn="cn=admin,dc=example,dc=tld" write by self read access to dn.regex="ou=admin,dc=x4w,dc=it$" by dn="cn=admin,dc=example,dc=tld" write by self read phamm-0.5.18/examples/conf/phamm/addressbook.acl0000644000175300017530000000273011127376257020546 0ustar phammphamm# acl specific for address book # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # account must read his name and all attribute of a person that is in his domain # postmaster with editAccounts=FALSE do the same thing for his domain # postmaster with editAccounts=TRUE can add account/alias and edit also amavisBypassVirusChecks, quota and smtpAuth # vadmin could do the same as postmaster with editAccounts=TRUE for some domains access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=cn,sn,givenName,telephoneNumber,homePhone,mobile,fax,pager by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write access to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=mail by dn="cn=admin,dc=example,dc=tld" write by self read by anonymous read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write phamm-0.5.18/examples/conf/libnss-ldap/0000755000175300017530000000000011354605735016667 5ustar phammphammphamm-0.5.18/examples/conf/libnss-ldap/README0000644000175300017530000000013310513641145017533 0ustar phammphammFor Debian users please use dpkg-reconfigure libnss-ldap to create also libnss-ldap.secret phamm-0.5.18/examples/conf/libnss-ldap/libnss-ldap.conf0000644000175300017530000000176010760603701021741 0ustar phammphamm# The distinguished name of the search base. base dc=example,dc=tld # Another way to specify your LDAP server is to provide an uri ldap://127.0.0.1/ # The LDAP version to use (defaults to 3 # if supported by client library) ldap_version 3 # The distinguished name to bind to the server with. # Optional: default is to bind anonymously. # Please do not put double quotes around it as they # would be included literally. binddn cn=admin,dc=example,dc=tld # The credentials to bind with. # Optional: default is no credential. bindpw rhx # The distinguished name to bind to the server with # if the effective user ID is root. Password is # stored in /etc/libnss-ldap.secret (mode 600) # Use 'echo -n "mypassword" > /etc/libnss-ldap.secret' instead # of an editor to create the file. rootbinddn cn=admin,dc=example,dc=tld # Filter to AND with uid=%s #pam_filter objectclass=account pam_filter objectclass=sambaSamAccount # The user ID attribute (defaults to uid) #pam_login_attribute uid pam_login_attribute uid phamm-0.5.18/examples/conf/courier-authlib-ldap/0000755000175300017530000000000011354605735020473 5ustar phammphammphamm-0.5.18/examples/conf/courier-authlib-ldap/authldaprc0000644000175300017530000000162410432334340022533 0ustar phammphamm# Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. LDAP_SERVER localhost # for new version of courier delete above # and remove comment on the next line ## LDAP_URI ldap://localhost LDAP_PORT 389 LDAP_PROTOCOL_VERSION 3 LDAP_BASEDN o=hosting,dc=example,dc=tld LDAP_BINDDN cn=phamm,o=hosting,dc=example,dc=tld LDAP_BINDPW rhx LDAP_TIMEOUT 5 LDAP_AUTHBIND 1 LDAP_MAIL mail LDAP_FILTER (accountActive=TRUE) LDAP_GLOB_UID vmail LDAP_GLOB_GID vmail LDAP_HOMEDIR vdHome LDAP_MAILDIR mailbox LDAP_MAILDIRQUOTA quota LDAP_FULLNAME cn LDAP_CRYPTPW userPassword LDAP_DEREF never LDAP_TLS 0 phamm-0.5.18/examples/conf/amavisd-new/0000755000175300017530000000000011354605735016672 5ustar phammphammphamm-0.5.18/examples/conf/amavisd-new/50-user0000644000175300017530000000140610765244417020017 0ustar phammphammuse strict; # # Place your configuration directives here. They will override those in # earlier files. # # See /usr/share/doc/amavisd-new/ for documentation and examples of # the directives you can use in this file # $warnvirusrecip = 1; @bypass_virus_checks_acl = qw("localhost.$mydomain"); # $enable_ldap = 1; $default_ldap = { hostname => [ 'localhost' ], port => 389, version => 3, timeout => 120, tls => 0, scope => 'sub', base => 'o=hosting,dc=example,dc=tld', bind_dn => 'cn=admin,dc=example,dc=tld', bind_password => 'rhx', query_filter => '(&(objectClass=amavisAccount)(mail=%m))' }; #------------ Do not modify anything below this line ------------- 1; # insure a defined return phamm-0.5.18/examples/conf/amavisd-new/amavisd.conf0000644000175300017530000000220210760603701021150 0ustar phammphamm# amavisd.conf specific for phamm # # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # # I dont know why, but amavisd support binding only for the # rootdn, so "other" dont have to read the file # $mydomain = 'example.tld' @bypass_virus_checks_acl = qw("localhost.$mydomain"); # $enable_ldap = 1; $default_ldap = { hostname => 'localhost', tls => 0, base => 'o=hosting,dc=example,dc=tld', bind_dn => 'cn=admin,dc=example,dc=tld', bind_password => 'rhx', query_filter => '(&(objectClass=amavisAccount)(mail=%m))' }; # $bypass_virus_checks_ldap = {res_attr => 'amavisBypassVirusChecks'}; $bypass_spam_checks_ldap = {res_attr => 'amavisBypassSpamChecks'}; $spam_tag_level_ldap = {res_attr => 'amavisSpamTagLevel'}; $spam_tag2_level_ldap = {res_attr => 'amavisSpamTag2Level'}; $spam_kill_level_ldap = {res_attr => 'amavisSpamKillLevel'}; phamm-0.5.18/examples/conf/slapd/0000755000175300017530000000000011354605735015562 5ustar phammphammphamm-0.5.18/examples/conf/slapd/indexing.Debian0000644000175300017530000000063510772477225020503 0ustar phammphamm# specific for mail index objectClass eq index cn,mail,givenname eq,subinitial index vd,delete eq,pres index accountActive,forwardActive eq,pres index smtpAuth eq,pres index sn,displayName pres,eq,sub index default sub phamm-0.5.18/examples/conf/slapd/slapd.conf0000644000175300017530000000364711131431220017521 0ustar phammphamm# this is a sample file # for debian etch # with slapd 2.3.25-1 include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/phamm.schema include /etc/ldap/schema/ISPEnv2.schema include /etc/ldap/schema/amavis.schema include /etc/ldap/schema/dnsdomain2.schema include /etc/ldap/schema/pureftpd.schema include /etc/ldap/schema/samba.schema # Only if you need to use address book # and only in a intranet #include /etc/ldap/addressbook.acl include /etc/ldap/phamm.acl pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args loglevel 0 modulepath /usr/lib/ldap moduleload back_hdb backend hdb database hdb directory "/var/lib/ldap" sizelimit 500 tool-threads 1 dbconfig set_cachesize 0 2097152 0 dbconfig set_lk_max_objects 1500 dbconfig set_lk_max_locks 1500 dbconfig set_lk_max_lockers 1500 # lastmod on suffix "dc=example,dc=tld" rootdn "cn=admin,dc=example,dc=tld" rootpw rhx checkpoint 512 30 # specific for mail index objectClass eq index cn,mail,givenname eq,subinitial index vd,delete eq,pres index accountActive,forwardActive eq,pres index smtpAuth eq,pres index associatedDomain pres,eq,sub index aAAARecord pres,eq index aRecord pres,eq index sn,displayName pres,eq,sub index uid,uidNumber,gidNumber,memberUid eq index default sub index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq # added for TLS/SSL # see http://www.openldap.org/doc/admin24/tls.html # for more information TLSCACertificateFile /etc/ldap/ssl/server.pem TLSCertificateFile /etc/ldap/ssl/server.pem TLSCertificateKeyFile /etc/ldap/ssl/server.pem phamm-0.5.18/examples/conf/postfix/0000755000175300017530000000000011354605735016153 5ustar phammphammphamm-0.5.18/examples/conf/postfix/main.cf.mxbackup0000644000175300017530000000344410772503530021220 0ustar phammphamm# main.cf specific for phamm # on the mx backup # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. ldap_bind_dn = cn=phamm,o=hosting,dc=example,dc=tld ldap_bind_pw = rhx ldap_search_base = o=hosting,dc=example,dc=tld ldap_domain = dc=example,dc=tld ldap_server_host = localhost ldap_server_port = 389 ldap_version = 3 # MX Backup mxb_server_host = $ldap_server_host mxb_search_base = $ldap_search_base mxb_query_filter = (&(&(vd=%s)(objectClass=VirtualDomain))(accountActive=TRUE)(delete=FALSE)) mxb_result_attribute = vd mxb_cache = no mxb_bind = yes mxb_scope = one mxb_bind_dn = $ldap_bind_dn mxb_bind_pw = $ldap_bind_pw mxb_version = $ldap_version accountsmap_server_host = $ldap_server_host accountsmap_search_base = $ldap_search_base accountsmap_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(accountActive=TRUE)(delete=FALSE)) accountsmap_result_attribute = mail accountsmap_cache = no accountsmap_bind = yes accountsmap_bind_dn = $ldap_bind_dn accountsmap_bind_pw = $ldap_bind_pw accountsmap_version = $ldap_version aliasmap_server_host = $ldap_server_host aliasmap_search_base = $ldap_search_base aliasmap_query_filter = (&(&(objectClass=VirtualMailAlias)(mail=%s))(accountActive=TRUE)) aliasmap_result_attribute = mail aliasmap_cache = no aliasmap_bind = yes aliasmap_bind_dn = $ldap_bind_dn aliasmap_bind_pw = $ldap_bind_pw aliasmap_version = $ldap_version relay_domains = $mydestination, ldap:mxb relay_recipient_maps = hash:/etc/postfix/relay_recipients, ldap:accountsmap, ldap:aliasmap phamm-0.5.18/examples/conf/postfix/transport0000644000175300017530000000002310732433215020114 0ustar phammphamm.autoreply gnarwl: phamm-0.5.18/examples/conf/postfix/master.cf0000644000175300017530000000233710733710405017754 0ustar phammphamm# master.cf specific for phamm # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # change the line maildrop like this maildrop unix - n n - - pipe flags=Rhu user=daemon argv=/usr/bin/maildrop -w 91 -d ${recipient} # for autoresponder gnarwl unix - n n - - pipe flags=F user=vmail argv=/usr/bin/gnarwl -a ${user}@${nexthop} -s ${sender} # only if you use amavisd-new for content filtering #smtp-amavis unix - - n - 3 smtp # -o smtp_data_done_timeout=1200 # -o disable_dns_lookups=yes #127.0.0.1:10025 inet n - n - - smtpd # -o content_filter= # -o local_recipient_maps= # -o relay_recipient_maps= # -o smtpd_restriction_classes= # -o smtpd_client_restrictions= # -o smtpd_helo_restrictions= # -o smtpd_sender_restrictions= # -o smtpd_recipient_restrictions=permit_mynetworks,reject # -o mynetworks=127.0.0.0/8 # -o strict_rfc821_envelopes=yes phamm-0.5.18/examples/conf/postfix/main.cf.mxbackup.withoutprimary0000644000175300017530000000270410772503530024324 0ustar phammphamm# main.cf specific for phamm # on the primary mx for backup other domains # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. ldap_bind_dn = cn=phamm,o=hosting,dc=example,dc=tld ldap_bind_pw = rhx ldap_search_base = o=hosting,dc=example,dc=tld ldap_domain = dc=example,dc=tld ldap_server_host = localhost ldap_server_port = 389 ldap_version = 3 # MX Backup # find domain vbd_server_host = $ldap_server_host vbd_search_base = $ldap_search_base vbd_query_filter = (&(&(vd=%s)(objectClass=VirtualBackupDomain))(accountActive=TRUE)(delete=FALSE)) vbd_result_attribute = vd vbd_cache = no vbd_bind = yes vbd_scope = one vbd_bind_dn = $ldap_bind_dn vbd_bind_pw = $ldap_bind_pw vbd_version = $ldap_version # MX Backup # find account vbmmap_server_host = $ldap_server_host vbmmap_search_base = $ldap_search_base vbmmap_query_filter = (&(&(objectClass=VirtualBackupMail)(mail=%s))(accountActive=TRUE)) vbmmap_result_attribute = mail vbmmap_cache = no vbmmap_bind = yes vbmmap_bind_dn = $ldap_bind_dn vbmmap_bind_pw = $ldap_bind_pw vbmmap_version = $ldap_version relay_domains = $mydestination, ldap:vbd relay_recipient_maps = hash:/etc/postfix/relay_recipients, ldap:vbmmap phamm-0.5.18/examples/conf/postfix/fork.pl0000644000175300017530000000506010477524743017456 0ustar phammphamm#!/usr/bin/perl # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. # many thanks to Marco Sanson for his time # IMPORTANT IMPORTANT # READ BEFORE USE IT!! # at the moment you MUST change the line above the description # CHANGE-THIS to set your correct parameters # like basedn, binddn and gnarwl path # Thanks to Pavol Luptak for some troubleshooting use Net::LDAP; use Getopt::Std; sub generate_random_string { my $length_of_randomstring=shift; my @chars=('a'..'z','A'..'Z','0'..'9','_'); my $random_string; foreach (1..$length_of_randomstring) { $random_string.=$chars[rand @chars]; } return $random_string; } my $random_string=&generate_random_string(32); #open (LOG,">>/tmp/forkpl.log") || die ("Can't open LOG"); $ldap = Net::LDAP->new("localhost"); $ldap->bind("cn=phamm,o=hosting,dc=example,dc=tld", password=>"rhx"); $in=""; while () { $in=join '',$in,$_; } chomp($in); #print LOG "BEFORE FORK: $in"; # due to the -m switch shift; while ($#ARGV >=0) { SWITCH: { $mail=$ARGV[0]; shift; $path = ''; $vforward = ''; $mesg = $ldap->search(filter=>"(mail=$mail)", base=>"dc=example,dc=tld", attrs=> ['vdHome', 'mailbox', 'vacationForward'] ); @entries = $mesg->entries; foreach $entry (@entries) { $path = $entry->get_value('vdHome') . "/" . $entry->get_value('mailbox'); $vforward = $entry->get_value('vacationForward'); } $cmd1="" . $path . "new/" . $random_string . ""; $cmd2="/usr/bin/gnarwl"; $cmd3="/usr/sbin/sendmail ". $vforward; open (MAIL,">$cmd1"); # Fork cmd1 # do not touch double fork!! unless ($pid = fork) { unless (fork) { # print LOG "AFTER FORK $cmd1: $in"; # exec ("echo '$in' > $cmd1"); print MAIL "$in"; close (MAIL); die "exec failed!"; } exit 0; } waitpid($pid,0); # Fork cmd2 unless ($pid = fork) { unless (fork) { exec ("cat '$cmd1' | $cmd2"); die "exec failed!"; } exit 0; } waitpid($pid,0); #Fork cmd3 # here we use the attribute VactionForward for the mail delivery # but the original destination receive the mail # only a copy will be sent if($vforward =~ /\@/){ unless ($pid = fork) { unless (fork) { exec ("cat '$cmd1' | $cmd3"); die "exec failed!"; } exit 0; } waitpid($pid,0); } } } exit; phamm-0.5.18/examples/conf/postfix/main.cf0000644000175300017530000001000311346447730017403 0ustar phammphamm# main.cf specific for phamm # Copyright (c) 2005 Alessandro De Zorzi, Mirko Grava # http://phamm.rhx.it/ # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.2 # or any later version published by the Free Software Foundation; # A copy of the license in DOCS.LICENSE file. ldap_bind_dn = cn=phamm,o=hosting,dc=example,dc=tld ldap_bind_pw = rhx ldap_search_base = o=hosting,dc=example,dc=tld ldap_domain = dc=example,dc=tld ldap_server_host = localhost ldap_server_port = 389 ldap_version = 3 # transports transport_server_host = $ldap_server_host transport_search_base = $ldap_search_base transport_query_filter = (&(&(vd=%s)(objectClass=VirtualDomain))(accountActive=TRUE)(delete=FALSE)) transport_result_attribute = postfixTransport transport_cache = no transport_bind = yes transport_scope = one transport_bind_dn = $ldap_bind_dn transport_bind_pw = $ldap_bind_pw transport_version = $ldap_version # aliases aliases_server_host = $ldap_server_host aliases_search_base = $ldap_search_base aliases_query_filter = (&(&(objectClass=VirtualMailAlias)(mail=%s))(accountActive=TRUE)) aliases_result_attribute = maildrop aliases_bind = yes aliases_cache = no aliases_bind_dn = $ldap_bind_dn aliases_bind_pw = $ldap_bind_pw aliases_version = $ldap_version # VirtualForward virtualforward_server_host = $ldap_server_host virtualforward_search_base = $ldap_search_base virtualforward_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(vacationActive=FALSE)(forwardActive=TRUE)(accountActive=TRUE)(delete=FALSE)) virtualforward_result_attribute = maildrop virtualforward_bind = yes virtualforward_cache = no virtualforward_bind_dn = $ldap_bind_dn virtualforward_bind_pw = $ldap_bind_pw virtualforward_version = $ldap_version # Accounts accounts_server_host = $ldap_server_host accounts_search_base = $ldap_search_base accounts_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE)) accounts_result_attribute = mailbox accounts_cache = no accounts_bind = yes accounts_bind_dn = $ldap_bind_dn accounts_bind_pw = $ldap_bind_pw accounts_version = $ldap_version accountsmap_server_host = $ldap_server_host accountsmap_search_base = $ldap_search_base accountsmap_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE)) accountsmap_result_attribute = mail accountsmap_cache = no accountsmap_bind = yes accountsmap_bind_dn = $ldap_bind_dn accountsmap_bind_pw = $ldap_bind_pw accountsmap_version = $ldap_version # virtual quota quota_server_host = $ldap_server_host quota_search_base = $ldap_search_base quota_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(accountActive=TRUE)(delete=FALSE)) quota_result_attribute = quota quota_cache = no quota_bind = yes quota_bind_dn = $ldap_bind_dn quota_bind_pw = $ldap_bind_pw quota_version = $ldap_version # Mail to reply for gnarwl and mail to forward during vacation recipient_bcc_maps = ldap:vma vma_server_host = $ldap_server_host vma_search_base = $ldap_search_base vma_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(vacationActive=TRUE)(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE)) vma_result_attribute = mailAutoreply vma_cache = no vma_bind = yes vma_bind_dn = $ldap_bind_dn vma_bind_pw = $ldap_bind_pw vma_version = $ldap_version # transport_maps maildrop_destination_concurrency_limit = 2 maildrop_destination_recipient_limit = 1 transport_maps = hash:/etc/postfix/transport, ldap:transport mydestination = $transport_maps, localhost, $myhostname, localhost.$mydomain, $mydomain virtual_alias_maps = hash:/etc/postfix/virtual, ldap:virtualforward, ldap:aliases, ldap:accountsmap # virtual accounts for delivery virtual_mailbox_base = /home/vmail/domains virtual_mailbox_maps = ldap:accounts virtual_minimum_uid = 500 virtual_uid_maps = static:500 virtual_gid_maps = static:500 local_recipient_maps = proxy:unix:passwd.byname, $alias_maps, $virtual_mailbox_maps phamm-0.5.18/examples/conf/squid/0000755000175300017530000000000011354605735015604 5ustar phammphammphamm-0.5.18/examples/conf/squid/squid.conf0000644000175300017530000000032310432334341017562 0ustar phammphammauth_param basic program /usr/lib/squid/ldap_auth -v 3 -b "o=hosting,dc=example,dc=tld" -f "(&(objectClass=proxyAccount)(webAccess=TRUE)(uid=%s))" -h localhost -D "cn=phamm,o=hosting,dc=example,dc=tld" -w "rhx" phamm-0.5.18/examples/conf/smbldap-tools/0000755000175300017530000000000011354605735017237 5ustar phammphammphamm-0.5.18/examples/conf/smbldap-tools/smbldap.conf0000644000175300017530000001725510435025262021530 0ustar phammphamm# $Source: /sources/phamm/phamm05/examples/conf/smbldap-tools/smbldap.conf,v $ # $Id: smbldap.conf,v 1.2 2006/05/24 09:43:14 mgrava Exp $ # # smbldap-tools.conf : Q & D configuration file for smbldap-tools # This code was developped by IDEALX (http://IDEALX.org/) and # contributors (their names can be found in the CONTRIBUTORS file). # # Copyright (C) 2001-2002 IDEALX # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # Purpose : # . be the configuration file for all smbldap-tools scripts ############################################################################## # # General Configuration # ############################################################################## # Put your own SID. To obtain this number do: "net getlocalsid". # If not defined, parameter is taking from "net getlocalsid" return ##SID="S-1-5-21-3869540645-2669363961-2494650606" # Domain name the Samba server is in charged. # If not defined, parameter is taking from smb.conf configuration file # Ex: sambaDomain="IDEALX-NT" sambaDomain="PHAMM" ############################################################################## # # LDAP Configuration # ############################################################################## # Notes: to use to dual ldap servers backend for Samba, you must patch # Samba with the dual-head patch from IDEALX. If not using this patch # just use the same server for slaveLDAP and masterLDAP. # Those two servers declarations can also be used when you have # . one master LDAP server where all writing operations must be done # . one slave LDAP server where all reading operations must be done # (typically a replication directory) # Slave LDAP server # Ex: slaveLDAP=127.0.0.1 # If not defined, parameter is set to "127.0.0.1" slaveLDAP="127.0.0.1" # Slave LDAP port # If not defined, parameter is set to "389" slavePort="389" # Master LDAP server: needed for write operations # Ex: masterLDAP=127.0.0.1 # If not defined, parameter is set to "127.0.0.1" masterLDAP="127.0.0.1" # Master LDAP port # If not defined, parameter is set to "389" masterPort="389" # Use TLS for LDAP # If set to 1, this option will use start_tls for connection # (you should also used the port 389) # If not defined, parameter is set to "1" ldapTLS="0" # How to verify the server's certificate (none, optional or require) # see "man Net::LDAP" in start_tls section for more details verify="require" # CA certificate # see "man Net::LDAP" in start_tls section for more details cafile="/etc/opt/IDEALX/smbldap-tools/ca.pem" # certificate to use to connect to the ldap server # see "man Net::LDAP" in start_tls section for more details clientcert="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.pem" # key certificate to use to connect to the ldap server # see "man Net::LDAP" in start_tls section for more details clientkey="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.key" # LDAP Suffix # Ex: suffix=dc=IDEALX,dc=ORG suffix="dc=example,dc=tld" # Where are stored Users # Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for usersdn usersdn="vd=example.tld,o=hosting,${suffix}" # Where are stored Computers # Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for computersdn computersdn="ou=Computers,o=samba,${suffix}" # Where are stored Groups # Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for groupsdn groupsdn="ou=Groups,o=samba,${suffix}" # Where are stored Idmap entries (used if samba is a domain member server) # Ex: groupsdn="ou=Idmap,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for idmapdn idmapdn="ou=Idmap,o=samba,${suffix}" # Where to store next uidNumber and gidNumber available for new users and groups # If not defined, entries are stored in sambaDomainName object. # Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}" # Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}" sambaUnixIdPooldn="sambaDomainName=PHAMM,o=samba,${suffix}" # Default scope Used scope="sub" # Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT) hash_encrypt="SSHA" # if hash_encrypt is set to CRYPT, you may set a salt format. # default is "%s", but many systems will generate MD5 hashed # passwords if you use "$1$%.8s". This parameter is optional! crypt_salt_format="%s" ############################################################################## # # Unix Accounts Configuration # ############################################################################## # Login defs # Default Login Shell # Ex: userLoginShell="/bin/bash" userLoginShell="/bin/bash" # Home directory # Ex: userHome="/home/%U" userHome="/home/%U" # Default mode used for user homeDirectory userHomeDirectoryMode="700" # Gecos userGecos="System User" # Default User (POSIX and Samba) GID defaultUserGid="5013" # Default Computer (Samba) GID defaultComputerGid="5015" # Skel dir skeletonDir="/etc/skel" # Default password validation time (time in days) Comment the next line if # you don't want password to be enable for defaultMaxPasswordAge days (be # careful to the sambaPwdMustChange attribute's value) defaultMaxPasswordAge="45" ############################################################################## # # SAMBA Configuration # ############################################################################## # The UNC path to home drives location (%U username substitution) # Just set it to a null string if you want to use the smb.conf 'logon home' # directive and/or disable roaming profiles # Ex: userSmbHome="\\PDC-SMB3\%U" userSmbHome="\\PHAMM-PDC\%U" # The UNC path to profiles locations (%U username substitution) # Just set it to a null string if you want to use the smb.conf 'logon path' # directive and/or disable roaming profiles # Ex: userProfile="\\PDC-SMB3\profiles\%U" userProfile="\\PHAMM-PDC\profiles\%U" # The default Home Drive Letter mapping # (will be automatically mapped at logon time if home directory exist) # Ex: userHomeDrive="H:" userHomeDrive="H:" # The default user netlogon script name (%U username substitution) # if not used, will be automatically username.cmd # make sure script file is edited under dos # Ex: userScript="startup.cmd" # make sure script file is edited under dos userScript="logon.bat" # Domain appended to the users "mail"-attribute # when smbldap-useradd -M is used # Ex: mailDomain="idealx.com" mailDomain="example.tld" ############################################################################## # # SMBLDAP-TOOLS Configuration (default are ok for a RedHat) # ############################################################################## # Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf.pm) but # prefer Crypt::SmbHash library with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" # Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_conf.pm) # but prefer Crypt:: libraries with_slappasswd="0" slappasswd="/usr/sbin/slappasswd" # comment out the following line to get rid of the default banner # no_banner="1" phamm-0.5.18/examples/conf/smbldap-tools/smbldap_bind.conf0000644000175300017530000000064410760603702022520 0ustar phammphamm############################ # Credential Configuration # ############################ # Notes: you can specify two differents configuration if you use a # master ldap for writing access and a slave ldap server for reading access # By default, we will use the same DN (so it will work for standard Samba # release) slaveDN="cn=admin,dc=example,dc=tld" slavePw="rhx" masterDN="cn=admin,dc=example,dc=tld" masterPw="rhx" phamm-0.5.18/README0000644000175300017530000000177011131431430012557 0ustar phammphamm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Phamm - README ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright (c) 2005-2009 Alessandro De Zorzi, Mirko Grava http://www.phamm.org/ Project sponsored by RHX Studio Snc - www.rhx.it Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Phamm provides an useful PHP front-end with multi-role access to manage virtual services using a LDAP back-end. Phamm works with a plug-in system, the typical service is a mail server with virtual mail domain support but other plug-ins are available (ftp, proxy...). It is easy create or customize existing plug-ins for Phamm using XML descriptor files. Phamm back-end require own phamm.schema and custom ACL. phamm-0.5.18/schema/0000755000175300017530000000000011354605736013155 5ustar phammphammphamm-0.5.18/schema/phamm.schema0000644000175300017530000002013211354577665015450 0ustar phammphamm#-------------------------------------------------------------------------- # LDAP Schema for phamm #---------------------- # Release 1.4 # 2010/03/30 #-------------------------------------------------------------------------- # Copyright (c) 2006-2009 Mirko Grava, RHX Studio Snc - www.rhx.it # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 2 # or any later version published by the Free Software Foundation; #-------------------------------------------------------------------------- # 1.3.6.1.4.1.22339 RHX Studio Snc's OID # 1.3.6.1.4.1.22339.1 Phamm # 1.3.6.1.4.1.22339.1.1 AttributeTypes # 1.3.6.1.4.1.22339.1.2 ObjectClasses #-------------------------------------------------------------------------- # Attribute Types #----------------- attributetype ( 1.3.6.1.4.1.22339.1.1.1 NAME 'postfixTransport' DESC 'A string directing postfix which transport to use' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{20} SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.2 NAME 'accountActive' DESC 'A boolean telling whether an account is active or not' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.3 NAME 'lastChange' DESC 'Time in unix time of last change in entry' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.4 NAME 'vd' DESC 'A virtual domain managed by Phamm' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) attributetype ( 1.3.6.1.4.1.22339.1.1.5 NAME 'mailbox' DESC 'The absolute path to the mailbox for a mail account in a non-default location' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.6 NAME 'quota' DESC 'A string that represents the quota on a mailbox' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.7 NAME 'clearPassword' DESC 'A separate text that stores the mail account password in clear text' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128}) attributetype ( 1.3.6.1.4.1.22339.1.1.8 NAME 'maildrop' DESC 'RFC822 Mailbox - mail alias' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) attributetype ( 1.3.6.1.4.1.22339.1.1.9 NAME 'mailsource' DESC 'Message source' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) attributetype ( 1.3.6.1.4.1.22339.1.1.10 NAME 'editAliases' DESC 'A boolean telling whether a domain manager can edit Aliases' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.11 NAME 'editAccounts' DESC 'A boolean telling whether a domain manager can edit Accounts' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.12 NAME 'editAV' DESC 'A boolean telling whether a domain manager can edit Antivirus' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.13 NAME 'delete' DESC 'A boolean telling whether this item is marked for deletion' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.14 NAME 'forwardActive' DESC 'A boolean telling whether this item is using forward' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.15 NAME 'maxDomain' DESC 'A string that represents the max domain for a VirtualAdmin' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.16 NAME 'maxMail' DESC 'A string that represents the max mail for a VirtualAdmin' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.17 NAME 'maxAlias' DESC 'A string that represents the max alias for a VirtualAdmin' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.18 NAME 'maxQuota' DESC 'A string that represents the max quota for a VirtualAdmin' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.19 NAME 'adminID' DESC 'A string that represents the dn of admin domain' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.20 NAME 'vdHome' DESC 'The absolute path to the virtual domain home' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.21 NAME 'otherTransport' DESC 'A string directing postfix which transport to use' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{20} SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.22 NAME 'creationDate' DESC 'Timestamp of creation' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{14} SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.23 NAME 'otherPath' DESC 'This path to help any application' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.24 NAME 'createMaildir' DESC 'A boolean telling when we must create Maildir for maildrop transport' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.25 NAME 'smtpAuth' DESC 'A boolean telling when we could do smtp-auth' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.26 NAME 'expireDate' DESC 'Expire date' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{14} SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.1.1.27 NAME 'mailAutoreply' DESC 'RFC822 Mailbox - mail for autoreply' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) attributetype ( 1.3.6.1.4.1.22339.1.1.28 NAME 'bypassGreyListing' DESC 'A boolean telling when we could do smtp-auth' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) # Classes #--------- objectclass ( 1.3.6.1.4.1.22339.1.2.1 NAME 'VirtualMailAccount' SUP inetOrgPerson STRUCTURAL DESC 'Mail account objects' MUST ( mail $ vdHome $ mailbox $ accountActive $ lastChange $ delete ) MAY ( quota $ otherTransport $ editAccounts $ creationDate $ createMaildir $ smtpAuth $ expireDate $ mailAutoreply $ bypassGreyListing) ) objectclass ( 1.3.6.1.4.1.22339.1.2.2 NAME 'VirtualMailAlias' SUP inetOrgPerson STRUCTURAL DESC 'Mail aliasing/forwarding entry' MUST ( mail $ maildrop $ accountActive $ lastChange ) MAY ( mailsource $ editAccounts $ creationDate $ smtpAuth $ expireDate $ bypassGreyListing) ) objectclass ( 1.3.6.1.4.1.22339.1.2.3 NAME 'VirtualDomain' SUP top STRUCTURAL DESC 'Virtual Domain entry to be used with postfix transport maps' MUST ( vd $ accountActive $ lastChange $ delete ) MAY ( postfixTransport $ description $ maxMail $ maxAlias $ maxQuota $ editAV $ adminID $ creationDate $ bypassGreyListing) ) objectclass ( 1.3.6.1.4.1.22339.1.2.4 NAME 'VirtualForward' SUP top AUXILIARY DESC 'Forward setting for VirtualMailAccount' MUST ( forwardActive ) MAY ( maildrop ) ) objectclass ( 1.3.6.1.4.1.22339.1.2.5 NAME 'VirtualAdmin' SUP inetOrgPerson STRUCTURAL DESC 'Virtual Admin entry' MUST ( mail $ maxDomain $ accountActive $ lastChange ) MAY ( vd $ editAccounts ) ) objectclass ( 1.3.6.1.4.1.22339.1.2.6 NAME 'VirtualBackupDomain' SUP top STRUCTURAL DESC 'Virtual Backup Domain entry to be used for relay' MUST ( vd $ accountActive $ lastChange $ delete ) MAY ( description ) ) objectclass ( 1.3.6.1.4.1.22339.1.2.7 NAME 'VirtualBackupMail' SUP top STRUCTURAL DESC 'Virtual Backup Mail entry to be used for relay' MUST ( mail $ accountActive $ lastChange ) MAY ( description ) ) objectclass ( 1.3.6.1.4.1.22339.1.2.8 NAME 'Yap' SUP top AUXILIARY DESC 'Yet another path' MUST ( otherPath ) ) phamm-0.5.18/schema/contrib/0000755000175300017530000000000011354605736014615 5ustar phammphammphamm-0.5.18/schema/contrib/perversia.net.schema0000644000175300017530000000326711253631706020566 0ustar phammphamm# LDAP schema for perversia.net # # Version 0.3 # 2009-08-02 # # Copyright (C) 2009 Johannes Heyder. # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.3 # or any later version published by the Free Software Foundation; # See http://www.gnu.org/licenses/fdl-1.3.html # # # # 1.3.6.1.4.1.34102 Registered OID for perversia.net # 1.3.6.1.4.1.34102.1 jabber # 1.3.6.1.4.1.34102.1.1 AttributeTypes # 1.3.6.1.4.1.34102.1.2 ObjectClasses # 1.3.6.1.4.1.34102.1.3 Syntax # 1.3.6.1.4.1.34102.2 CalDav # 1.3.6.1.4.1.34102.2.1 AttributeTypes # 1.3.6.1.4.1.34102.2.2 ObjectClasses # 1.3.6.1.4.1.34102.2.3 Syntax attributetype ( 1.3.6.1.4.1.34102.1.1.1 NAME 'jabberID' DESC 'Jabber-ID' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) attributetype ( 1.3.6.1.4.1.34102.1.1.2 Name 'jabberAccess' DESC 'Account status: enabled or disabled' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.34102.2.1.1 Name 'CalDavAccess' DESC 'Account status: enabled or disabled' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) objectclass ( 1.3.6.1.4.1.34102.1.2.1 NAME 'JabberAccount' SUP top AUXILIARY DESC 'Jabber account' MUST ( jabberID $ JabberAccess $ userPassword) ) objectclass ( 1.3.6.1.4.1.34102.2.2.1 NAME 'CalDavAccount' SUP top AUXILIARY DESC 'CalDav account' MUST ( CalDavAccess $ userPassword) ) phamm-0.5.18/schema/phamm-vacation.schema0000644000175300017530000000416611354577665017263 0ustar phammphamm#-------------------------------------------------------------------------- # LDAP Schema for phamm-vacation #---------------------- # Release 1.1 # 2010/03/31 #-------------------------------------------------------------------------- # Copyright (c) 2008-2009 Mirko Grava, RHX Studio Snc - www.rhx.it # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 2 # or any later version published by the Free Software Foundation; #-------------------------------------------------------------------------- # 1.3.6.1.4.1.22339 RHX Studio Snc's OID # 1.3.6.1.4.1.22339.2 Phamm-vacation # 1.3.6.1.4.1.22339.2.1 AttributeTypes # 1.3.6.1.4.1.22339.2.2 ObjectClasses #-------------------------------------------------------------------------- # Attribute Types #----------------- attributetype ( 1.3.6.1.4.1.22339.2.1.1 NAME 'vacationActive' DESC 'A flag, for marking the user as being away' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.2.1.2 NAME 'vacationInfo' DESC 'Absentee note to leave behind, while on vacation' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.2.1.3 NAME 'vacationStart' DESC 'Beginning of vacation' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.2.1.4 NAME 'vacationEnd' DESC 'End of vacation' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.1.22339.2.1.5 NAME 'vacationForward' DESC 'RFC1274: RFC822 Mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) # Classes #--------- objectclass ( 1.3.6.1.4.1.22339.2.2.1 NAME 'Vacation' SUP top AUXILIARY DESC 'Users vacation status information' MUST ( vacationActive ) MAY ( vacationInfo $ vacationStart $ vacationEnd $ vacationForward ) ) phamm-0.5.18/PHAMM-LOGO-USE.POLICY0000644000175300017530000000105710732744521014666 0ustar phammphamm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Phamm - LOGO USE POLICY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Phamm logo created by Alessandro De Zorzi Copyright (c) 2004 Alessandro De Zorzi - - www.rhx.it PHAMM USE LOGO POLICY Phamm logo or a modified version may be used by anyone to refer to the Phamm project, but does not indicate endorsement by the project. Note: we would appreciate that you make the image a link to http://www.phamm.org/ if you use it on a web page. phamm-0.5.18/THANKS0000644000175300017530000000313011252124463012613 0ustar phammphamm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Phamm - THANKS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright (c) 2005-2009 Alessandro De Zorzi, Mirko Grava http://www.phamm.org/ Project sponsored by RHX Studio Snc - www.rhx.it Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Translators ^^^^^^^^^^^ Renato Ben (Italiano) Tristan Defert (Francais) Jan Dankert (Deutsch) Ronaldo Fabricio Reis Silva (Portugues Brasileiro) Zoltan Gyula Beck (Magyar) Ari Widodo (Indonesian) Igor V. Gots (Russian) Javier Enrique Tiá Marí (Spanish) Alice Kaerast (Danish) Fabio Tranchitella: phpLDAPAdmin Maintainer http://www.kobold.it/ for Debian Package Support Pierangelo Masarati: OpenLDAP Core Team http://www.sys-net.it for ACL suggestions and more Michele Baldessari: Interesting suggestions Alan Walters: Interesting suggestions abount schema extensions. Documentation review Tristan Defert: Interesting suggestions about front-end Tiziano D'Inca': Radius plugins Marco Sanson: Initial idea of perl transport script Ricardo Amaro: Perl transport script improvements. Iliana Comina: for Phamm Logo restyling Bruno Pelaia: Interesting suggestions Zsolt Jonas: patchs and bugs fix kabe: patchs and bugs fix And many others, whose names are lost in the changelog. Thank you. phamm-0.5.18/welcome_message.txt0000644000175300017530000000005010676414053015604 0ustar phammphammWelcome! --- Phamm http://www.phamm.org phamm-0.5.18/INSTALL0000644000175300017530000001466611131431430012740 0ustar phammphamm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Phamm - INSTALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright (c) 2005-2009 Alessandro De Zorzi, Mirko Grava http://www.phamm.org/ Project sponsored by RHX Studio Snc - www.rhx.it Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SECTIONS 0. PRELIMINARY 0.1 Prepare the files 0.2 Requirements 0.2.1 optional requirements required for email 0.2.2 optional requirements for ftp 0.3 Contents 1. LDAP 1.1 Schema 1.2 Change phamm password 1.3 Populate 1.3.1 populate plugin support 2. PHAMM CONFIGURATION 2.1 Config files 3. MAIL SERVICES 3.1 config postfix 3.2 config courier 3.3 config amavis 3.4 config gnarwl 3.5 cleaner.sh script 0. PRELIMINARY ^^^^^^^^^^^^^^ 0.1 Prepare the files Untar the archive tar xvfz phamm-X.X.X.tar.gz Put the directory phamm-X.X.X in a web accessible directory: (Example: mv phamm /var/www/) or configure httpd to use Alias. You can obtain for make accessible from web only the sub-directory phamm/www-data. 0.2 Requirements web server (tested with Apache) php4 or php5 with ldap extension enable (php-ldap php4-ldap...) OpenLDAP (recommend openldap 2.1 or 2.2) Webbrowser (doh!) 0.2.1 optional requirements required for email postfix email server pop3/imap: severs (that support ldap) examples: cyrus,courier. (tested with apache) gnarwl: for autoresponding:(to first user email) amavisd: for anti-virus/anti-spam: spamassassain clam-av or similar av-software (tested with Clam-AV) net::ldap cpan modules 0.2.2 optional requirements for ftp pure-ftpd pure-ftpd-ldap-backend 0.3 Contents In the examples folder you can find examples of all the configuration files for each server section outlined below. Please remember these are examples and they will have to be edited to suit your own personal requirements. 1. LDAP ^^^^^^^ 1.1 Schema Copy schema/phamm.schema file in your schema directory (ex. /etc/ldap/schema/ for Debian). Probably you need other schema files, you can copy they from respective projects or from http://open.rhx.it/phamm/schema/ amavis.schema dnsdomain2.schema ISPEnv2.schema pureftpd.schema radius.schema samba.schema Copy examples/conf/slapd/slapd.conf to override your slapd.conf (ex. /etc/ldap/ for Debian or /etc/openldap). Add YOUR password for the cn admin with the command slappasswd. The slapd.conf has the loglevel set to 0. For debugging set it to 128 or start slapd with /usr/sbin/slapd -d1 as this will display to screen and save you the trouble of searching your log files for problems. For improve security we suggest to use Phamm LDAP ACL definition if you do not use already ACL please copy examples/conf/phamm/phamm.acl in the same place of the slapd.conf (ex. /etc/ldap/ for Debian or /etc/openldap) otherwise comment the line below in your slapd.conf # include /etc/ldap/phamm.acl restart LDAP service 1.2 Change phamm password Create the password you want for the cn phamm with slappasswd and amend it in the examples/ldif/sample-mail.ldif (the default is rhx) with cut & paste :). 1.3 Populate ldapadd -v -x -D "cn=admin,dc=example,dc=tld" -W -h localhost -f examples/ldif/sample-main.ldif The password is the first one you created. 1.3.1 populate plugin support If you wish to use mail and DNS plugin: ldapadd -v -x -D "cn=admin,dc=example,dc=tld" -W -h localhost -f examples/ldif/sample-mail.ldif 2. PHAMM CONFIGURATION ^^^^^^^^^^^^^^^^^^^^^^^ 2.1 Config files Create the main config file in phamm directory from the sample: cp config.inc.example.php config.inc.php Then edit config.inc.php. 2.1.1 Config file (plugin support) If you wish to use the plugin, please decomment each line you want in $plugins[] lines Example: $plugins = array(); $plugins[] = "mail"; $plugins[] = "alias"; //$plugins[] = "ftp"; 3. SETTING MAIL SERVICES ^^^^^^^^^^^^^^^^^^^^^^^^^^ There are a couple of excellent general examples of how to setup postfix and courier below these should assist with a more detailed discription of what you find below. http://www.postfix.org/addon.html http://www.faqs.org/docs/Linux-HOWTO/LDAP-Implementation-HOWTO.html#AEN747 http://alinux.washcoll.edu/docs/plc/postfix-courier-howto.html 3.1 config postfix install postfix as a full internet email server, and then add the snips that are in the samples directory to the relevent parts of the postfix configuration files, remember to reload postfix after making the changes (most postfix configuration files are found in /etc/postfix) ensure the user vmail and the group vmail have been added. if not add them and remember the gid and uid as you need it here and in courier config don't forget to update your transport file and the transport.db file this is required. postmap /etc/postfix/transport test this by logging into smtp and sending a mail to yourself (then when you set up courier you should have the mail awaiting you) log with /etc/init.d/postfix start; tail -f /var/log/mail.log 3.2 config courier check that authdaemonrc is using ldap as a method to authenicate ie (authmodulelist=ldap), add the snips from the samples folder to the relevent file (normally found in /etc/courier) these files are authldap (configuration of ldap server) test by logging into your pop or imap server and collecting the mail that you sent to your self in setting up postfix. /etc/init.d/courier-authdaemonrc start; tail -f /var/log/mail.log 3.3 config amavis add the amavis sample data to your amavis.conf file. restart the services and check the logs for dependancies) 3.4 config gnarwl add the sample gnarwl.cfg snip to you gnarwl.cfg. (this normally lives in /etc/gnarwl.cfg) set debug to 3 and test. don't forget to set debug back again when working. 3.5 cleaner.sh script Edit the cleaner.sh script to reflect the your ldap layout. Phamm does not really delete accounts. Phamm mark them as "Deleting". You can use tools/cleaner.sh to do this with crond. phamm-0.5.18/README.PLUGINS0000644000175300017530000000155110732744521013712 0ustar phammphamm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Phamm - README.PLUGINS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright (c) 2006 Alessandro De Zorzi, Mirko Grava http://www.phamm.org/ Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Create a file .xml inside plugins directory .xml Take a look at DTD/phamm-plugins.dtd To validate a XML plugin description file use on-line or other tools http://validator.w3.org/ http://www.stg.brown.edu/service/xmlvalid/ Enable plugin with a new entry in config.inc.php $plugins[] = ""; phamm-0.5.18/LIB_FUNCTIONS0000644000175300017530000000506011065721231013663 0ustar phammphamm**************************************** ../lib/common.php function refresh ($url, $force_meta = false, $seconds = 0) function xml2array ($file) function phamm_list ($base_dn,$filter,$attributes,$sort=null) function phamm_search ($base_dn,$filter,$attributes=null,$sort=null) function phamm_add ($dn,$entry) function phamm_modify ($dn,$entry) function wrong_pw ($password1,$password2,$length=PASSWORD_MIN_LENGHT) function password_hash($password_clear) function self_values ($dn, $filter="(cn=*)") function purge_empty_values ($data,$attribute=null) function phamm_mod_add ($dn,$entry) function phamm_mod_del ($dn,$entry) function phamm_ldap_delete($dn,$recursive=false) function phamm_error () function check_syntax ($type,$arg,$length="0") function phamm_ldap_connect () --------------------------------------------------------- ../lib/locale.php function locale_set($language) --------------------------------------------------------- ../lib/login.php function login_dn_costructor($login_username) function login_try($connect, $proposed, $login_password,$login_username) function bind_try($connect, $dn, $password) function login_check() function logout() --------------------------------------------------------- ../lib/phamm.php function phamm_date($date_format) function phamm_php_error_level () function phamm_log ($pn,$user,$operation,$result) function phamm_set_var($name, $values=null, $methods=null, $level=0) function phamm_print_message ($class,$message,$newline=true) function phamm_print_xhtml ($tag) function group_actions ($command,$values) --------------------------------------------------------- ../lib/plugin.php function plugins_menu () function plugins_load() --------------------------------------------------------- ../lib/xhtml.php function page_start() function page_end() function page_exit() function login_form() function style_set() function style_load($style) function domains_list($vds,$values) function accounts_list($domain,$values,$initial) function form_add_domain () function form_template($p_name,$attributes,$myvalues,$skip_table=null) function form_add_domain_2 ($domain_new,$action) function form_add_account () function form_add_account_2 ($account_new,$action) function navigation ($initial) function trueorfalse($table,$value,$field,$reverse) function action_select1($dispaly) function action_select($group_actions) function tof_icon($table,$value,$tof_action,$reverse=null,$cron=null) function date_input($name,$current_date,$format='ymd') function locale_select() function form_catch_all($domain) --------------------------------------------------------- phamm-0.5.18/config.inc.example.php0000644000175300017530000001106511354605517016075 0ustar phammphamm * Copyright (C) 2004,2008 Alessandro De Zorzi and Mirko Grava * Project sponsored by RHX Studio Snc - www.rhx.it * * Phamm 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. * * Phamm 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * The main Phamm config file * * @package Phamm * @subpackage configuration * @author Alessandro De Zorzi **/ // *============================* // *=== LDAP Server Settings ===* // *============================* // The server address (To use ldapssl change to ldaps://localhost) define ('LDAP_HOST_NAME','localhost'); // The protocol version [2,3] define ('LDAP_PROTOCOL_VERSION','3'); // The server port (To use ldapssl change to 636) define ('LDAP_PORT','389'); // Set LDAP_TLS to 1 if you want to use TLS define ('LDAP_TLS',0); // The container define ('SUFFIX','dc=example,dc=tld'); // The admin bind dn (could be rootdn) define ('BINDDN','cn=admin,dc=example,dc=tld'); // The Phamm container define ('LDAP_BASE','o=hosting,dc=example,dc=tld'); // *============================* // *=== Layout Settings ===* // *============================* // Page title define('ORG_TITLE','Phamm'); // URL define('ORG_URL','http://www.phamm.org'); // Logo define('ORG_LOGO', './img/phamm_100.png'); // CSS Style $style = 'phamm'; // Default language define ('DEFAULT_LANGUAGE','en_GB'); // The languages available $supported_languages = array(); $supported_languages["de_DE"] = "Deutsch"; $supported_languages["en_GB"] = "English"; $supported_languages["es_ES"] = "Español"; $supported_languages["fr_FR"] = "French"; $supported_languages["hu_HU"] = "Hungarian"; $supported_languages["it_IT"] = "Italiano"; $supported_languages["pl_PL"] = "Polish"; $supported_languages["ru_RU"] = "Russian"; $supported_languages["vi_VN"] = "Tiếng Việt"; // Vietnamese $supported_languages["da_DK"] = "Dansk"; // Danish // $supported_languages["ll_CC"] = "Your language here"; // This TLDs menu $tld = array(); $tld[] = ".com"; $tld[] = ".org"; $tld[] = ".net"; // $tld[] = ".biz"; // $tld[] = ".info"; // $tld[] = ".eu"; // $tld[] = ".it"; // $tld[] = ".fr"; // $tld[] = ".de"; // *============================* // *=== Plugins Settings ===* // *============================* // The default plugin define ('DEFAULT_PLUGIN','mail'); // This array contains the active plugins // NOTE the display order reflect this order $plugins = array(); $plugins[] = "mail"; $plugins[] = "alias"; //$plugins[] = "dns"; //$plugins[] = "ftp"; //$plugins[] = "proxy"; //$plugins[] = "radius"; //$plugins[] = "radius_stats"; //$plugins[] = "rates"; //$plugins[] = "person"; //$plugins[] = "jabber"; //$plugins[] = "davical"; // Account can be mail OR alias $plugins_exclusion = array("mail","alias"); // *============================* // *=== System Settings ===* // *============================* // Phamm Version (+ indicate a CVS version) define ('VERSION','0.5.18'); // Useful if you want hide the version [0,1] define ('HIDE_VERSION',0); // Useful if you wish force SSL through PHP [0,1] define ('FORCE_SSL',0); // Min password length define ('PASSWORD_MIN_LENGHT',3); // Seconds after refresh page define ('REFRESH_TIME',1); // A Domain administrator (example: postmaster) define ('PHAMM_DOMAIN_ADMIN_NAME','postmaster'); // Welcome message define ('SEND_WELCOME',0); $welcome_msg = '../welcome_message.txt'; $welcome_subject = 'Welcome!'; # $welcome_sender = 'postmaster@localhost'; # $welcome_bcc = 'postmaster@localhost'; // *============================* // *=== Advanced Settings ===* // *============================* // Debug level [0,1] define ('DEBUG',0); // PHP Error Level [0,1,2,10] define ('ERROR_LEVEL',2); // Log level 0->don't log [0,1,2] define ('PHAMM_LOG',0); // Log file path define ('LOG_FILE','/var/log/phamm.log'); // Standard LDAP encryption type [CRYPT,MD5,CLEAR] define ('ENC_TYPE','CRYPT'); // Permit login without @domain (use it with carefull) // define ('DEFAULT_DOMAIN','example.tld'); ?> phamm-0.5.18/plugins/0000755000175300017530000000000011354605736013376 5ustar phammphammphamm-0.5.18/plugins/proxy.xml0000644000175300017530000000242511060754602015273 0ustar phammphamm 0.0.3 2005-02-19 2008-09-08 beta Alessandro De Zorzi De Zorzi team@phamm.org http://www.phamm.org GPL Plugin to manage proxy accounts Plugin to manage proxy accounts (Squid...) top FF4455 10 0 0 1 0 Web Access 1
1 TRUE
Proxy Host 1
phamm-0.5.18/plugins/davical.xml0000644000175300017530000000227511252123651015515 0ustar phammphamm 0.0.1 2009-09-02 2009-09-02 beta viva perversia viva@perversia.net http://perversia.net GPL Plugin to manage DAViCal accounts Plugin to manage DAViCal accounts top FF4455 10 0 0 1 0 CalDav Access 1
1 1 TRUE
phamm-0.5.18/plugins/person.xml0000644000175300017530000000306211064276142015420 0ustar phammphamm 0.0.3 2006-05-25 2008-09-08 beta Alessandro De Zorzi De Zorzi team@phamm.org http://www.phamm.org GPL RFC2798: Internet Organizational Person RFC2798: Internet Organizational Person top FF4455 10 0 0 1 0 Telephone 1
Home Phone 1
Mobile 1
FAX 1
Pager 1
phamm-0.5.18/plugins/jabber.xml0000644000175300017530000000260111242243224015326 0ustar phammphamm 0.0.1 2009-08-13 2009-08-13 beta viva perversia viva@perversia.net http://perversia.net GPL Plugin to manage jabber accounts Plugin to manage jabber accounts top FF4455 10 0 0 1 0 Jabber Access 1
1 1 TRUE
Jabber-ID 1 1 =php.Value(+account_new+,@,%domain%)
phamm-0.5.18/plugins/alias.xml0000644000175300017530000000376111061004640015176 0ustar phammphamm 0.0.3 2006-09-22 2008-09-08 stable Alessandro De Zorzi De Zorzi team@phamm.org http://www.phamm.org GPL Plugin to manage e-mail alias Plugin to manage e-mail alias top FF4455 2 0 0 1 0 0 Destination 1
1
Active 1 1
TRUE 4
SMTP Auth 1 1
FALSE 4
Virus Check 1 1 TRUE 4 SPAM Check 1 1 TRUE 4
phamm-0.5.18/plugins/mail.xml0000644000175300017530000002032611064720113015026 0ustar phammphamm 0.0.4 2005-02-19 2008-09-08 stable Alessandro De Zorzi De Zorzi team@phamm.org http://www.phamm.org GPL Plugin to manage Virtual Domain, e-mail account and aliases Plugin to manage Virtual Domain, e-mail account and aliases top FF4455 2 1 1 1 Max number of Mail 4 1 4 100 Max number of Alias 1 4 4 100 Max Quota 4 1 4 100 Active 1 1 1
TRUE
Can edit Anti-Virus 1 1 TRUE Delete 1 1
1 1 1 FALSE
Postfix Transport maildrop: 1
Can edit Accounts 1 1
TRUE 6
0 0 0 0 SMTP Auth 1 1
FALSE 4
Quota 1
50 1048576 S 4
Active 1 1
1 TRUE 4
Virtual Home 1 1 /home/vmail/domains 4 Mailbox 1 1 =php.Value(%domain%,/,+account_new+,/) 4 UID 1 =php.Value(+account_new+,.,%domain%) 4 1 1 Mail Autoreply 1 =php.Value(+account_new+,@,%domain%,.autoreply) 4 Delete 1 1 1
FALSE 4 1
Other Transport 1 phamm: 4 Vacation FALSE 1 1 Vacation Info vacationActive Vacation Forward vacationActive 1 Vacation Start vacationActive 1 Vacation End vacationActive 1 Forward Active 1 FALSE 1 1
1
Maildrop forwardActive Virus Check 1 1
1 TRUE 4
SPAM Check 1 1
1 FALSE 4
Spam Kill Level amavisBypassSpamChecks 4 6.0 Spam Tag2 Level amavisBypassSpamChecks 4 5.5 Spam Tag Level amavisBypassSpamChecks 3.0 4 Creation Date 1
1
phamm-0.5.18/plugins/ftp.xml0000644000175300017530000000437311123402031014671 0ustar phammphamm 0.0.2 2005-02-19 2008-09-08 beta Alessandro De Zorzi De Zorzi team@phamm.org http://www.phamm.org GPL Plugin to manage pure-FTP Plugin to manage pure-FTP top FF4455 10 1 1 0 0 0 GID number 1 1 10 Home Directory 1 1 =php.Value(%domain%,/mnt/www/,+domain_new+) 10 UID 1 1 =php.Value(%domain%,,+domain_new+) 10 UID Number 1 1 10 FTP Status 1
enabled 10
FTP Quota Mb 4 4 50 10
phamm-0.5.18/CHANGELOG0000644000175300017530000001100611354605365013123 0ustar phammphamm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Phamm - CHANGELOG ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright (c) 2005-2009 Alessandro De Zorzi, Mirko Grava http://www.phamm.org/ Project sponsored by RHX Studio Snc - www.rhx.it Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 0.5.18 20100331 * Updated OID on phamm-vacation.schema * Updated examples file postfix/main.cf 0.5.17 20091109 * Modified OID 1.3.6.1.4.1.22339.1.1.33 vacationActive (Thanks to jonhattan at faita dot net) * added Jabber and Davical plugins (Thanks to Viva Perversia) * added perversia.net.schema * update French Translations (Thanks to Aldo Reset) * added Danish Translation (Thanks to Alice Kaerast) 0.5.16 20090528 * modify ACL (postmaster may change uid) * added attribute bypassGreyListing on phamm.schema * Add 3 rows for TLS in example for slapd.conf * Added Hungarian translation thanks to Zsolt Jonas * Fixed some minor bugs (Thanks to kabe - jp) * Improve UTF-8 support for welcome message (Thanks to Zsolt Jonas hu) * Fixed VacationStart and VacationEnd data format (Thanks to Zsolt Jonas hu) 0.5.15 20090108 * Changed back-end database fot Slapd from bdb to hdb (example conf) * defined expand to ruleset in the slapd ACL * Added French translation thanks to Aldo Reset * Fixed quota format in domain view * Updated documentations * Added TLS support 0.5.14 20081221 * Improved error messages * Fixed minor bugs * Added Russian translation thanks to Yuri Kozlov * Added Polish translation thanks to Sławomir Paszkiewicz 0.5.13 20081005 * Added phamm-vacation.schema * Clean up config file * Improved select actions "...execute a command" * Added givenName value instead cn * [plugins] added prettyName attribute * [plugins] templates updated * Fix minor bug (Delete attribute values from current attributes with many plugins active) * Translations updated (switch to gettext) - German - thanks to Jan Dankert - Spanish - thanks to jonhattan - Vietnamese - thanks to Clytie Siddall - Italian - thanks to Phamm Team 0.5.12 20080719 Added visible Amavis Spam level control New feature: checking for existing mail (and alias) CSS recoded DTD updated XML plugin templates updated Italian translation updated Added useful static warnings for non correct account configuration Modified postfix transport from virtual to maildrop in sample ldif 0.5.11 20080426 updated ACL, examples and configuration files to Debian standard (rootdn admin instead manager) improved welcome message Headers (From and Return-path) updated ACL files to use only per mail service added ACL examples updated DTD and mail.xml fixed accounts filter by initial updated sample to use LDAP bind v3 added checkAll js function 0.5.10 20080206 fixed md5 hash function updated Dovecot examples updated en_GB.php 0.5.9 20071224 fixed some PHP Notice and Warning fixed XHTML syntax added attribute Autoreply for objectClass VirtualMailAccount in phamm.schema for Vacation and VacationForward without script fork.pl Added sample footer.txt and header.txt for gnarwl Updated gnarwl.cfg, postfix transport, main.cf, master.cf samples moved AUTHORS to COPYRIGHT updated INSTALL and README removed schema/contrib/*schema 0.5.8 20071218 Changes required by Debian License Policy 0.5.7 20071211 removed restrictive images license added documentation 0.5.6 20071201 account uid creation defined in mail.xml plugin added count for domains and accounts updated mail.xml plugin fixed login with username and domain uppercase updated ACL 0.5.5 20071020 update mail.xml (domainActive attribute) fixed update action for values_multi fixed plugin integration in form view update logo (white background) 0.5.4 20071006 added catch all feature added DEFAULT_DOMAIN login feature fixed XHTML syntax sort accounts results improved log function 0.5.3 20070930 added textarea input box (ex. Vacation Info...) added date input box (ex. vacationStart, vacationEnd...) exception vacationActive to delete VacationForward if exists language support 0.5.2 20070929 a usable release 0.5.1 20070911 (island) a working release 0.5.0 20060516 (alfamatta) initial alpha release add some sample for samba phamm-0.5.18/www-data/0000755000175300017530000000000011354605736013450 5ustar phammphammphamm-0.5.18/www-data/img/0000755000175300017530000000000011354605736014224 5ustar phammphammphamm-0.5.18/www-data/img/phamm_icon.png0000644000175300017530000000145410323507066017040 0ustar phammphammPNG  IHDRabKGD pHYs  d_tIME07LIDATxœYHTqƿuwlQµPQ TL*BJ# 1E*P-$ [([L!@Spa4-SGgtltxC(8a_WZt"ˇO2LW鬵Xkh#ewomMZ'^$S'%hT֋A9u}l$`[O9WjQ~9h^EmL [peV7y2Z{ ʥ`T7ysXZʥ?j6}Y:G͏Ux6+K ]-zҷ`{v %%IO􄄙jZMaGx׺u!~`?uwɲcQ&q>YUnj4No?Jٷ[J ua΁pvv+n1E{Kk\H⅃K#/Lc ϫ(L18'!0O`tB'2`IK7pH+:`fB W2s$*D+LA 2Hrw0! %3oW\KVIt/`  ;`d!I|l~iijnKT)LrgGL2iH ,1<4wF7O>zŕzmj Gud nWl+<˼YWH[ZZZ֮o8dIENDB`phamm-0.5.18/www-data/img/FALSE.png0000644000175300017530000000055710536263627015573 0ustar phammphammPNG  IHDR(`PLTE mkPP$"TP2/ԏGFee#㗗~}toliߧ72UtRNS@f pHYs  tIME  5JrIDAT-K D1ﲱSPYH1KͶk)2,8%Zu=83O[%]t2xH|I}rP{}8<CZ֌LD0Y1ٶ: pEIENDB`phamm-0.5.18/www-data/img/phamm_100.png0000644000175300017530000001037410701755066016416 0ustar phammphammPNG  IHDRd, pHYs  d_tIME 7-JRIDAThZ{xUՕ_k}=BDqPԱHRZm|Ngtjʌ8EQQ4 j44!{k'1 cܻY{^k^뢈(" d"H ޾w;IqN9&Y,af9|}?X:RF Twvm{~9ZRs0HG[{CkmE!smu( ^?i_/ EJ<ȣ^a}K ^Ad_%;?dl#W^F>VLi?$mGOxq/gUgƋ!Nu (dd@V:ϼϽ 7â܀% ౸ ;_|-Z11 a090>&μʯ%K |! _%3U.,+@@ 520[;=|5֊@0 `I6޻gӧU{FSD2.d0oH7re߼O8Ii4~?F//GD͈DLYԡ&u_||UEfp%&&)IIs kcGsUsfb];_ww^]KС׷-KƍZ+E W,jW1wP% cN)/ .1N[l ~ P﷽TR}MrZ[޷We6* C㞟ϝ5f8e4R@diDָރ{7#/οUUP@ 0޷ 19 (ҶdYoxq@Jt`<к 3+cHAf3)T6ܚ]q̻xӔ m{ .HP &ɞW~⛮^(+AN )]v4>v2 mP3HcO<ӵζ7\[1zR H TLU 0!zrm_Nc 9Zus~uo\n mD$' $b]Ovsb_[XR}9JHi'D0Ĩ rp&DgRvl}7w-2lT#P l{{̕+Wp8|lp&9r$db**[貒H%uYxXDS5T0Xܽ/v#)O6 S}\# ߜ' d,yLdžDvVJ3d|PI%`[+:`)0 @)ܜzs+?VWV) G3YaSwת1~3,3E~:h]AÓKdf֞(LH Xf %S* ~"1=e?ogHqL CU*0䜥$ϱjs d Ex;:yx#h ܛ,k/rEhݿL3̌~v3Ncӏ9gu`͏]ɐN/%;$)H]y1BWk : `! G:hIL)"_oSV>BÇ;:bŽ;o+;L~(@0G)aԖ܍?@г$ =zӧ'zIhD D@9fT!* Z!uѵ$ E+yrbk%$a@CZ @G~m,,.=}Ai$X Y{Cl0jPHMxC!ʆ9d3dA2I &lx (G8h&SCР\xN6 p9 q-H ̀()@a"CL Ǚ,Yp%F!FG1 xn_ `^ō7ܠ-, E"e#ƾs9Bm$ FˆA"d *iE 0 YL,@ Q#j@(F[~i*`5'6$THsyl95 `@6+ JYu4Hm@"B05P(".}Ol~K>`L'| ?]}R<bY@{^0H% n<jxA-E݅7/|-൬՝wy2oC \u'& Z[F߃`!FA1 .`8+b6l`Ǿ}7mW^yyᰡzh+j}5UTW^uyM?cͲ%g͟v0"#! @A"z =%nu6YsyWO G޳@D"ǝTZZ:rH˲MDԩS 1?q6tE&TLK.* i$pL 8^Lb^.ם6d!uGtpLt֜EEÔ҃U;X ,Xv vm6Fo߾1c ;~0 D"eHNL2l2l2Ixm3Z  }a9gN\U\<Xv:X<D͋/\/HWG~OE jB& xd.7]ݙNO C,(-,9+3+'OP1lİh@) ! 8nϚ={-[V\tf𵴴q6l@={83j(󚚚&Lszfmmmnn>v0! p8XTT\\\3#V^/8p`ΝӧO2L2p恀=qĊL&d\MҞ]R59c۶eYG_I.q1bmu]0R;NXy\nmZӷO ݈8NЌ3">|UW]u뭷1^}w}}}[[+3YyeM0/OGDĉ/u֥RC"bi-Zt饗7F=w/7I.\8|˲z!cg֬Ypu=|lܸqD4jԨX,t`XEE޽{=km=P}F֪σ{$}]t7ߌdr"'k,Y.cMWJi0K$g*UXXX__9a-ɼ+W{}RaÆ=#Wٸqc.[h}ijJJJ&OO~033yVSSO1[l!P({5kK}3}-Zkkkt]wوxb8FcZ ʌ1mU>gclٲŋpWfӁǦFbuuc|#9~S?d0n]ĪNX'w*l?+Vl߾n@g)=4> 8N^^^8B':`رwÇ?#;OC(rgȐ!ǂZ(d"G"c7("HĶ۠D"Y箮.u5?@~~ 󼮮."WJ)3& qh6:;;-ˊF߆ + p$x<F|ߋtvvj0f===}EOIENDB`phamm-0.5.18/www-data/img/TRUE.png0000644000175300017530000000054310536263627015513 0ustar phammphammPNG  IHDR(]PLTExՇJ]YgJZYoї5JiwF[=Rצpǁ5Lξ4H٥խvDU-F#9mRtRNS@f pHYs  tIME  Y_oIDAT5 *UM;\xvۅ\)5;?^_׵WZDw`7cٵEXp̻M(VmQ8U>fxJKH="ic6d Qzٱ3,貆>HIENDB`phamm-0.5.18/www-data/img/waiting.png0000644000175300017530000000055610666277302016401 0ustar phammphammPNG  IHDR(`PLTEdi ;ꑧ&GISi#zϤy|<.2WY!mq0ZhiH68 ɏ/333G!tRNS@fbKGDH pHYs  tIME 0 HIDAT5 D lU4B;Of7t- * Copyright (C) 2004-2008 Alessandro De Zorzi and Mirko Grava * * This file is part of Phamm. * * Project sponsored by RHX Studio Associato - www.rhx.it * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * @package application * @subpackage mail * @author Alessandro De Zorzi **/ /** * Universal **/ body { font-family: sans-serif; background-color: #fff; color: #000; } form { font-size: 0.9em; } h1 { padding-top: 0.6em; font-size: 2em; } h2,h3 { padding-top: 0.6em; font-size: 1.2em; } a { font-size: 0.8em; color: #2c1602; font-weight: bold; text-decoration: none; } a:hover { color: #ff0000; text-decoration: underline; } thead { background-color: #ffffaa; font-weight: bold; vertical-align: top; text-align: center; font-size: 0.8em; height: 2.5em; } input[type="text"],input[type="password"] { background-color: white; border: 1px #2c1602 solid; } input[type="submit"] { border-style: outset; border-width: 1px; color: #42516c; background-color: #ffffff; font-size: 1em; } input[type="submit"]:hover { color: #450604; background-color: #f2ffb8; } input:focus { background-color: #ffffaa; } select { background-color: white; border: 1px #808080 solid; } textarea { background-color: white; border: 1px #2c1602 solid; } /** * ID **/ #navBar { margin-bottom: 8px; } /** * Class **/ tr.data:hover { background-color: #fbb; } a.inside:hover { color: #ffffff; } .data { font-size: 1em; background-color: #f2770d; border: 1px solid #2c1602; } .pluginActive { background-color: #fff777; border-left: 1px solid #000; border-right: 1px solid #000; border-top: 1px solid #000; font-size: 1em; padding: 0.3em; } .pluginchecked { background-color: #fff777; } .pluginunchecked { background-color: #999; } .pluginunchecked input[type="text"] { background-color: #999; } input.add[type="text"] { background-color: #ffeeee; border: 1px #2c1602 solid; } .plugin { font-size: 1em; background-color: #eee; border-left: 1px solid #000; border-right: 1px solid #000; border-top: 1px solid #000; padding: 0.3em; } .navigation { font-size: 0.9em; font-weight: normal; padding: 0.1em 0 0 2em; font-weight: normal; text-decoration: none; letter-spacing: 2px; background-image: url('../../style/phamm/img/navigation.png'); height: 1.4em; background-repeat: no-repeat; background-position: left center; display: block; } .navigation span { font-weight: bold; letter-spacing: 2px; color: #f70; } .footer { background-color: #ddddff; font-weight: bold; vertical-align: top; text-align: left; font-size: 1em; } .check { font-weight: normal; text-align: center; font-size: 0.8em; color: #ff0000; } .note { font-weight: normal; font-size: 0.8em; color: #555; } .box { text-align: center; } .error { font-weight: bold; color: #ff0000; } .debug { font-weight: bold; font-size: 1em; } .warning { font-weight: normal; color: #f70; } .success { font-weight: bold; color: #0f0; } .message { margin-top: 2em; font-weight: bold; } .label { font-weight: bold; text-align: right; vertical-align: top; } phamm-0.5.18/www-data/style/phamm/img/0000755000175300017530000000000011354605736016466 5ustar phammphammphamm-0.5.18/www-data/style/phamm/img/FALSE.png0000644000175300017530000000070410323507157020020 0ustar phammphammPNG  IHDRH- pHYs  tIME 4F#etEXtCommentCreated with The GIMPd%n:IDAT(ϕjPȥ!,$'Ip)dqtD2HAܲVC1H Bhn';p~g~p8U(*קN'%aԦ9]l\è]J%ϧt%ϧaYN d9ضFRo&Ap : }~ c XFƎUՑAU8*.Y]-H8yZ L\xUIRrk3IJ<*?6܈^wsrOG1#<+*lӲ!P0#]o#kLO?]-}YB4,&@Qx(Ua5'8c+JO:Muөw(o:lm򉈉6at50G;DDJDIw+ 0w5A""Gh?g]("zQ'!&ٓ/[uU8q%tGN~i{s¬vHcy<ؖD"cK6W4Tq⨔JBGe9ɡ\\ sXn#Ш>w߅{-#r 胨V 8ZOH|X<5}MaR%^o|f2݋סlk)IZ'¡M7f2/9GW5J] );tQHȏˉ9BKvʰ$b bCf7(d))B7TnW*!V:jG8 na bJ!$kfda@[Swgt&  qlA`V&8_qa.Ùa}|o|t)a&]nrޒ*ޙ:*].0'_-V-qzqDQWwIsPZ|nN-qdjFDrFz>BKN6 Qd*].'=!{c~ABS^YZQ ,S/K 4!Rv!gQ47iI&ҝSٰ@+޵ S%DdP 6%`opjH$mnmQ;y#ws!`V/~L_q,p\I03@Qt Wi)ʰUmtxK%ZJMULۏ ]=)<:`^6&.Wn3G1LuZT:mpz~Uԓ-vTԙR2p+bUt HS[1o2B?iټ~2JޛR*\qbM9POaǂC0/x.83kc,SlR T g'URz)3@ o$T̩ŃM-A!l~eeo+' Ro${'I|ѠtF|h7g-4@zl"ّ󐍚;-[Eߞݧ+F|78 YIz.3m"wZ")F<'=_+>ns/Djd *N#puAxEXB#v&'@ 5$RC ]"C;>Z\rfev.^W-c,5ݴ<\fwf( ļ % X{gLlM5:))q? Br/"JzTWi{^ȩD&xN?1>q"c#⻔IͪJAGOO95HS6׊c`7Ə lԊv@l2RI.ޥ)y&ˆ-XXhS;)Ak hAV-0=Uw 2ZGpO-ZW5Oߩf}Y+1pOBmm/JPip]Z&hحbGK O(d_oZ*srɑsQ9Ff?GęzQ!"tr^}+)#ೈli[+igAw{ꄲMVGRB؅ oJj/S[֓6Bo毆8(N/fNngeNg)g*jP[(wZ]7OQ¡-xQg'->z;P=U4/}'y)F"NZ )R B\xyu"' { i);ʸo˚@Yw|bt_LЅ2];䴚5iKԭHWU Fl\m)֜X]Y'Tѡ43[TK5]&quro,`GZ>  f7+ZGvc~6.x٩;ήdWZxJ2}dԡ4%GVk_:Y@nᗮ'8~a)W~97RxQ+_l1^S0q h_ɱKQuYy*?<#\"#A?Cb':C [Z\. *JEmG^_g/cjM_*6cS?dA/X9|{nv6.'R 7ɑG8 ]?BncO)"}ӫst^"`)ʺ΍"g*5ֶjf`s|^G(gF<]H•fn NmCqeRÅ 6ۏ| &:?pQ;c(qWDm*^ZEd,};ՕP@' 򺖴$_brDc@CŊxcӘ8-fObr~Ki._גãvv^,DfٟD(Xn:.lÙQt>ts%(C ž٨k"X0}r`q޿Uxҍ?{' c%Ф*9bdM1RԂh{ =_ߎo0%DDph7ӊQ͉jU0sOj}xx  {95 N/_4<12-{}%ş7Ɏ`Oo͎ J.'6'|'ƸcD|{ g}ixMM!HΚYO14u_uh7Yݗ <ΧaZQܭdq+j=95r#s5J7"#|%^Œފ}b`%||rF~ @+uC98Ve+qt]Nk\ihRϼ'; xnwƣU dCwՄ/by7^-Z]2^|u45=4|0|ikW!o3 `h~ ujtZahU `N X뽡E :⩬ZiJyЪ?+s{r4cD_hC.9=\m>_U]VgaY~^X$;_8v2/V윶bu.[RyE=K~aYloϕ<&)Hh{'R/M|R :C dÕtopvw;b@ zY`-E#1+Vv9_l"W"&]ȯs97bp OD ))MJ}X7}FC{"Zf0zjD?~zH-cRv.<Kc ڤu )U/U1(xN7M)Jp6 8]tʧ <-x'yk.pFrB-!tXyޒ y oW={T]^ =g.5?dz[2v8#nu|4:s"s#o[5A`u(mt8Q0bծ2sl@fGxt[ҐVi7]^Nbl$oa2ӎ4InV %QMJ~&NrQ2 Ljtt?m&(ov"CTs[u`5Fv܌PnUSuJK_4jD/a7zIENDB`phamm-0.5.18/www-data/main.php0000644000175300017530000006067211206443437015112 0ustar phammphamm 2) $mail = phamm_set_var('mail'); else $mail = $_SESSION["login"]["username"]; if ($_SESSION["login"]["level"] > 4) $domain = phamm_set_var('domain'); else $domain = $_SESSION["phamm"]["domain"]; // Overwrite action for user login if (!in_array($action,array('update_account')) && $_SESSION["login"]["level"] == 2) $action = 'modify_account'; // Overwrite action for Postmaster elseif (!in_array($action,array('add_account','insert_account','modify_account','update_account','domain_property','catch_all','group_actions')) && $_SESSION["login"]["level"] == 4) $action = 'domain_view'; // Link to logount and language select phamm_print_xhtml ('
'); phamm_print_xhtml (""); printf (_("Logout %s"),$_SESSION["login"]["username"]); phamm_print_xhtml (''); phamm_print_xhtml (locale_select()); phamm_print_xhtml ('

'); if (!in_array($action,array('modify_account','update_account','insert_account','add_account'))) phamm_print_xhtml ( plugins_menu() ); if ($_SESSION["login"]["level"] > 2) phamm_print_xhtml ( navigation($initial) ); // echo $action; switch ($action) : // group_actions case "group_actions" : // List of accounts/domains to modify if (isset($_POST["accounts"])) $values = $_POST["accounts"]; elseif (isset($_GET["accounts"])) $values = $_GET["accounts"]; if (isset($_POST["domains"])) $values = $_POST["domains"]; elseif (isset($_GET["domains"])) $values = $_GET["domains"]; if (isset($_POST["command"])) $command = $_POST["command"]; elseif (isset($_GET["command"])) $command = $_GET["command"]; foreach ($values as $k => $v) phamm_print_message('success',sprintf(_("%s modified"),$k)); $r = group_actions ($command,$values); phamm_log ($pn,$_SESSION["login"]["username"],$action,$r); if ($r) { $ga = explode(';',$command); if ($ga[0] == 'account') refresh ('main.php?action=domain_view&domain='.$domain, $force_meta = false, REFRESH_TIME); else refresh ('main.php', $force_meta = false, REFRESH_TIME); } else { phamm_print_message('error',_("Changes have not performed")); print phamm_error(); } break; // Create dynamic form to add a new domain // case "add_domain" : $syntax = check_syntax('domain',$_POST["domain_new"]); if ($syntax) phamm_print_xhtml ( form_add_domain_2 ($_POST["domain_new"],'insert_domain' , $values=array(), $values=array())); else { phamm_print_message('error',_("Syntax not valid or special chars found in domain name")); phamm_print_xhtml ( form_add_domain ($_POST["domain_new"]) ); } break; // Insert a new domain data // case "insert_domain" : $values = $_POST["values"]; $confirm = $_POST["confirm"]; $domain_new = $_POST["domain_new"]; $password1 = $_POST["password1"]; $password2 = $_POST["password2"]; $wrong_pw_msg = wrong_pw ($password1,$password2); if ($wrong_pw_msg) { /*echo '
';
	print_r($values);
	echo '
'; */ phamm_print_message ('error',$wrong_pw_msg); phamm_print_xhtml ( form_add_domain_2 ($_POST["domain_new"], 'insert_domain', $values, $values ) ); phamm_log ($pn,$_SESSION["login"]["username"],$action.' '.$domain_new.' '.$wrong_pw_msg,0); } else { $entry["objectclass"][0] = "top"; $entry["objectclass"][1] = "VirtualDomain"; $entry["vd"] = $domain_new; $entry["lastChange"] = time(); // Merge static values with domain values $entry = array_merge($entry,$values["domain"]); // Purge values $values_purged = purge_empty_values($entry); // @todo 2th value $r_d = @phamm_add ('vd='.$domain_new.','.LDAP_BASE,$values_purged); phamm_log ($pn,$_SESSION["login"]["username"],$action.' '.$domain_new,$r_d); unset($entry); $entry = array(); // %%%%%%%%%%%%%%%%%%%%% tmp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% $entry["objectclass"][0] = "top"; $entry["objectclass"][1] = "VirtualMailAlias"; // Add required plugin objectClass foreach ( $confirm as $p_name ) { if ($pv[$p_name]["ISPOSTMASTERRELATED"]) { if(isset($pv[$p_name]["POSTMASTER"]["OBJECTCLASSES"])) { $oc = $pv[$p_name]["POSTMASTER"]["OBJECTCLASSES"]; foreach ($oc as $oc_name => $oc_val) $entry["objectclass"][] = $oc_name; } } } $entry["cn"] = "Postmaster"; $entry["sn"] = "Postmaster"; $entry["mail"] = "postmaster@".$domain_new; $entry["userPassword"] = password_hash($password1); $entry["maildrop"] = "postmaster"; $entry["accountActive"] = "TRUE"; $entry["creationDate"] = date('Ymd'); $entry["lastChange"] = time(); // %%%%%%%%%%%%%%%%%%%%% tmp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% foreach ( $confirm as $p_name ) { $entry = array_merge($entry,$values[$p_name]); } // Add postmaster alias $r_p = @phamm_add ('cn=postmaster,vd='.$domain_new.','.LDAP_BASE,$entry); $entry_abuse["objectclass"][0] = "top"; $entry_abuse["objectclass"][1] = "VirtualMailAlias"; $entry_abuse["cn"] = "Abuse"; $entry_abuse["sn"] = "Abuse"; $entry_abuse["mail"] = "abuse@".$domain_new; $entry_abuse["maildrop"] = "postmaster"; $entry_abuse["accountActive"] = "TRUE"; $entry_abuse["creationDate"] = date('Ymd'); $entry_abuse["lastChange"] = time(); // Add abuse alias $r_a = @phamm_add ('mail=abuse@'.$domain_new.',vd='.$domain_new.','.LDAP_BASE,$entry_abuse); if ($r_d && $r_p && $r_a) { phamm_print_message('success',sprintf(_("Domain %s successfully added"),$domain_new)); refresh ('main.php', $force_meta = false, REFRESH_TIME); } elseif (!$r_d) { phamm_print_message('error',sprintf(_("domain %s not added!"),$domain_new)); print phamm_error(); } else { phamm_print_message('error',sprintf(_("An Unexpected Error Occurred during %s Addition!"),$domain_new)); print phamm_error(); } } break; ///////////// // ACCOUNT // ///////////// // Create dynamic form to add a new account case "add_account" : $syntax = check_syntax('account',$_POST["account_new"]); $account_exists = phamm_list('vd='.$domain.','.LDAP_BASE,"(mail=".$_POST["account_new"]."@".$domain.")",array('mail')); if ($syntax && $account_exists["count"] == 0) phamm_print_xhtml ( form_add_account_2 ($_POST["account_new"].'@'.$domain,'insert_account', array()) ); else { if ($account_exists["count"] > 0) phamm_print_message('error',_("Account or Alias already exists")); if (!$syntax) phamm_print_message('error',_("Special Characters not Allowed in E-mail address")); phamm_print_xhtml ( form_add_account ($_POST["account_new"]) ); } break; // Form to modify account case "modify_account" : $dn = 'mail='.$mail.',vd='.$domain.','.LDAP_BASE; $values = self_values ($dn); if (isset($values[0]["sn"][0])) $sn = $values[0]["sn"][0]; if (isset($values[0]["givenname"][0])) $givenName = $values[0]["givenname"][0]; // //////////////////////////////////////////////////////////// // Static warning @todo if (!($values[0]["amavisspamkilllevel"][0] >= $values[0]["amavisspamtag2level"][0] && $values[0]["amavisspamtag2level"][0] >= $values[0]["amavisspamtaglevel"][0])) phamm_print_message ('warning',_("SPAM Tags level are not set correctly!")); if ($values[0]["forwardactive"][0] == "TRUE" && isset($values[0]["vacationforward"]["count"])) phamm_print_message ('warning',_("do not activate Forward and Vacation Forward in the same time!")); if ($values[0]["forwardactive"][0] == "TRUE" && !isset($values[0]["maildrop"])) phamm_print_message ('warning',_("please, insert a forward destination or disable Forward!")); // // //////////////////////////////////////////////////////////// phamm_print_xhtml ( form_add_account_2 ($values[0]["mail"][0], 'update_account', $values) ); break; // One domain selected - show domain's accounts and aliases case "domain_view" : // Add domain form phamm_print_xhtml ( form_add_account() ); // Link to modify domain Property phamm_print_xhtml ( ''._("Domain property").' ' ); //Special link for catch-all if (in_array($pn,array('mail','alias'))) { // Check if catch_all exists $catch_all_dn = 'vd='.$domain.','.LDAP_BASE; $values = phamm_search ($catch_all_dn,'mail=@'.$domain,array('mail')); if (isset($values[0]["mail"][0])) phamm_print_message('warning','
'._("Catch all active")); else phamm_print_xhtml ( ' - '._("Catch all").'' ); } phamm_print_xhtml ('
'); $values = array(); // Attributes in the table if (isset($pv[$pn]["ACCOUNT"])) $values = array_merge($values,$pv[$pn]["ACCOUNT"]); phamm_print_xhtml ( accounts_list($domain,$values,$initial) ); phamm_print_xhtml ( action_select('account') ); break; // Insert a new account // case "insert_account" : $values = $_POST["values"]; $values_date = (isset($_POST["values_date"]) ? $_POST["values_date"] : null); $values_multi = (isset($_POST["values_multi"]) ? $_POST["values_multi"] : null); $confirm = $_POST["confirm"]; $account_new = $_POST["account_new"]; $password1 = $_POST["password1"]; $password2 = $_POST["password2"]; $sn = $_POST["sn"]; $givenName = $_POST["givenname"]; // Create empty array $entry = array(); $values_multi_purged_one = array(); $values_date_purged_one = array(); $values_multi_purged = array(); $values_date_purged = array(); $check_sn = check_syntax ('name',$sn,1); $check_givenName = check_syntax ('name',$givenName,1); // Is alias account ? $is_alias = in_array('alias',$confirm); if ($is_alias) $wrong_pw_msg = wrong_pw ($password1,$password2,0); else $wrong_pw_msg = wrong_pw ($password1,$password2); if ($wrong_pw_msg) phamm_print_message ('error',$wrong_pw_msg); if (!$check_givenName) phamm_print_message ('error',_("Name is not valid")); if (!$check_sn) phamm_print_message ('error',_("Surname is not valid")); if ($wrong_pw_msg || !$check_givenName || !$check_sn) { phamm_print_xhtml ( form_add_account_2 ($_POST["account_new"], 'insert_account', $values )); phamm_log ($pn,$_SESSION["login"]["username"],$action.' '.$account_new.' '.$wrong_pw_msg,0); } else { $entry["objectclass"][0] = "top"; // Add required plugin objectClass foreach ( $confirm as $p_name ) { if ($pv[$p_name]["ISACCOUNTRELATED"]) { if(isset($pv[$p_name]["ACCOUNT"]["OBJECTCLASSES"])) { $oc = $pv[$p_name]["ACCOUNT"]["OBJECTCLASSES"]; foreach ($oc as $oc_name => $oc_val) $entry["objectclass"][] = $oc_name; } } } $mail = $account_new; // in mail.xml // $uid = str_replace ( '@', CHR_UID_ACCOUNT, $mail); // $entry["uid"] = $uid; // @todo $entry["mail"] = $mail; $entry["userPassword"] = password_hash($password1); $entry["sn"] = $sn; $entry["givenname"] = $givenName; $entry["cn"] = $givenName.' '.$sn; $entry["lastChange"] = time(); $entry["creationDate"] = date('YmdHi'); $entry = purge_empty_values($entry); // Purge empty values and multiplier foreach ( $confirm as $p_name ) { // Clear and purge values $values_purged = purge_empty_values($values[$p_name],$pv[$p_name]["ACCOUNT"]["ATTRIBUTES"]); $values_multi_purged_one = purge_empty_values($values_multi[$p_name]); $values_date_purged_one = purge_empty_values($values_date[$p_name]); // Merge values for each plugin $entry = array_merge($entry,$values_purged); $values_multi_purged = array_merge($values_multi_purged,$values_multi_purged_one); $values_date_purged = array_merge($values_date_purged,$values_date_purged_one); } // Values from textarea... if ($values_multi_purged) { foreach ($values_multi_purged as $mv_name => $mv_array) { $delimitators = array(" ",";","\t",":","\n"); $values_multi_string = str_replace($delimitators,",","$mv_array"); // Purge persistent \r $values_multi_string = str_replace("\r","","$values_multi_string"); $values_multi_array = explode (",",$values_multi_string); for ($i=0; $i < count($values_multi_array); $i++) $entry[$mv_name][$i] = $values_multi_array[$i]; } } $r = @phamm_add ('mail='.$mail.',vd='.$domain.','.LDAP_BASE,$entry); phamm_log ($pn,$_SESSION["login"]["username"],$action.' '.$mail,$r); if ($r) { // Send Welcome message to new mail account if required if (SEND_WELCOME) { $eol = "\n"; // Custom or default welcome message $welcome_msg_custom = '../templates/welcome_'.$domain.'.txt'; if (file_exists($welcome_msg_custom)) $msg = file_get_contents($welcome_msg_custom); else $msg = file_get_contents($welcome_msg); $headers = ''; $msg_id = time().rand(1,1000).'_'.md5(uniqid(microtime())); $headers .= "Message-ID: <".$msg_id."@".$_SERVER['SERVER_NAME'].">".$eol; $headers .= "X-Mailer: Phamm".$eol; $headers .= "MIME-Version: 1.0".$eol; $headers .= "Content-Type: text/plain; charset=UTF-8".$eol; $headers .= "Content-Transfer-Encoding: 8bit".$eol; if (isset($welcome_sender)) $headers .= "From: <".$welcome_sender.">".$eol; else $headers .= "From: ".$eol; if (isset($welcome_bcc)) $headers .= "Bcc: <".$welcome_bcc.">".$eol; // Skip Welcome Message if is a Catch-all account if ($mail != '@'.$domain) { $safe_mode_var = ini_get('safe_mode'); // Skip 5th parameter if safe_mode=On in php.ini if ($safe_mode_var) $r = mail($mail,$welcome_subject,$msg,$headers); else $r = mail($mail,$welcome_subject,$msg,$headers,'-f postmaster@'.$domain); } phamm_log ($pn,$_SESSION["login"]["username"],'sent welcome message to '.$mail,$r); } phamm_print_message('success',sprintf(_("Account %s successfully added"),$account_new)); refresh ('main.php?action=domain_view&domain='.$domain, $force_meta = false, REFRESH_TIME); } else { phamm_print_message('error',sprintf(_("%s not added!"), $account_new)); print phamm_error(); } } break; // Update account // case "update_account" : $values = $_POST["values"]; $values_date = (isset($_POST["values_date"]) ? $_POST["values_date"] : null); $values_multi = (isset($_POST["values_multi"]) ? $_POST["values_multi"] : null); $values_multi_del = (isset($_POST["values_multi_del"]) ? $_POST["values_multi_del"] : null); $confirm = $_POST["confirm"]; $account = (isset($_POST["account_new"]) ? $_POST["account_new"] : null); $password1 = $_POST["password1"]; $password2 = $_POST["password2"]; $sn = (isset($_POST["sn"]) ? $_POST["sn"] : null); $givenName = (isset($_POST["givenname"]) ? $_POST["givenname"] : null); // Create empty array $entry = array(); $values_multi_purged_one = array(); $values_date_purged_one = array(); $values_multi_purged = array(); $values_date_purged = array(); $entry["sn"] = $sn; $entry["givenname"] = $givenName; $entry["cn"] = $givenName.' '.$sn; // Tag and others $entry = purge_empty_values($entry); if ($password1 || $password2) $wrong_pw_msg = wrong_pw ($password1,$password2); else $wrong_pw_msg = 0; if ($wrong_pw_msg) { phamm_print_message ('error',$wrong_pw_msg); phamm_print_xhtml ( form_add_account_2 ($account, 'update_account', $values )); phamm_log ($pn,$_SESSION["login"]["username"],$action.' '.$wrong_pw_msg,0); break; } if (is_array($confirm)) { foreach ( $confirm as $p_name ) { // Purge empty values if (isset($pv[$p_name]["ACCOUNT"])) $values_purged = purge_empty_values($values[$p_name],$pv[$p_name]["ACCOUNT"]["ATTRIBUTES"]); else $values_purged = purge_empty_values($values[$p_name]); if (isset($values_multi[$p_name])) $values_multi_purged_one = purge_empty_values($values_multi[$p_name]); if (isset($values_date[$p_name])) $values_date_purged_one = purge_empty_values($values_date[$p_name]); // Merge the values from each plugins confirmed $entry = array_merge($entry,$values_purged); $values_multi_purged = array_merge($values_multi_purged,$values_multi_purged_one); $values_date_purged = array_merge($values_date_purged,$values_date_purged_one); // Del Values from checkbox if (isset($values_multi_del[$p_name])) { $rd = phamm_mod_del ('mail='.$mail.',vd='.$domain.','.LDAP_BASE,$values_multi_del[$p_name]); } } } $mail = $account; // Date Values (year-month-day) if (count($values_date_purged) > 0) { foreach ($values_date_purged as $k_date => $v_date) $entry[$k_date] = $v_date["year"].$v_date["month"].$v_date["day"].'0000'; } // Add Values from textarea... if (count($values_multi_purged) > 0) { foreach ($values_multi_purged as $mv_name => $mv_array) { $delimitators = array(" ", ";", "\t", "\n", ":"); $values_multi_string = str_replace($delimitators,",","$mv_array"); // Purge persistent \r $values_multi_string = str_replace("\r","","$values_multi_string"); $values_multi_array = explode (",",$values_multi_string); for ($i=0; $i < count($values_multi_array); $i++) $entry_add[$mv_name][$i] = $values_multi_array[$i]; } if (count($values_multi_array) > 0) { $ra = phamm_mod_add ('mail='.$mail.',vd='.$domain.','.LDAP_BASE,$entry_add); } } // This swith action to change mail or postmaster value if ($mail) { $entry["lastChange"] = time(); if ($password1) $entry["userPassword"] = password_hash($password1); $r = phamm_modify ('mail='.$mail.',vd='.$domain.','.LDAP_BASE,$entry); phamm_log ($pn,$_SESSION["login"]["username"],$action.' '.$mail,$r); } else { // Skip static values cn and sn unset($entry["cn"]); unset($entry["sn"]); unset($entry["givenname"]); $entry["lastChange"] = time(); if ($password1) $entry["userPassword"] = password_hash($password1); // Clear creationdata if (isset($entry["creationdate"])) unset($entry["creationdate"]); $r = phamm_modify ('cn=postmaster,vd='.$domain.','.LDAP_BASE,$entry); phamm_log ($pn,$_SESSION["login"]["username"],$action.' postmaster@'.$domain,$r); // Update domain values $entry_domain = purge_empty_values($values["domain"]); $r_d = phamm_modify ('vd='.$domain.','.LDAP_BASE,$entry_domain); phamm_log ($pn,$_SESSION["login"]["username"],'update_domain '.$domain,$r); } if ($r) { phamm_print_message('success',sprintf("Account %s succesfully updated",$account)); refresh ('main.php?action=domain_view&domain='.$domain, $force_meta = false, REFRESH_TIME); } else phamm_print_message('error',sprintf(_("account %s not updated!"),$account)); break; case "domain_property" : $dn = 'vd='.$domain.','.LDAP_BASE; $values = phamm_search ($dn,$filter="objectClass=VirtualDomain"); $dn_postmaster = 'cn=postmaster,vd='.$domain.','.LDAP_BASE; $values_postmaster = phamm_search ($dn_postmaster,$filter="cn=postmaster"); phamm_print_xhtml ( form_add_domain_2 ($domain, 'update_account', $values, $values_postmaster ) ); break; case "catch_all" : // action update_account => postmaster phamm_print_xhtml ( form_catch_all ($domain) ); break; default : // Plugin body // @todo if ( $values = array(); $values_domain["ATTRIBUTES"] = array(); $values_postmaster["ATTRIBUTES"] = array(); // Attributes in the table if (isset($pv[$pn]["DOMAIN"])) $values_domain = $pv[$pn]["DOMAIN"]; // Attributes in the table if (isset($pv[$pn]["POSTMASTER"])) $values_postmaster = $pv[$pn]["POSTMASTER"]; $values["ATTRIBUTES"] = array_merge($values_domain["ATTRIBUTES"],$values_postmaster["ATTRIBUTES"]); // @todo only one query... if ($_SESSION["login"]["level"] == 10) { if ($initial) $vds = phamm_list(LDAP_BASE,"(&(objectClass=virtualDomain)(vd=$initial*))",array('vd')); else $vds = phamm_list(LDAP_BASE,'objectClass=virtualDomain',array('vd')); phamm_print_xhtml ( form_add_domain() ); phamm_print_xhtml ( domains_list($vds,$values) ); phamm_print_xhtml ( action_select('domain') ); } break; endswitch; } echo $page_end; ?> phamm-0.5.18/www-data/functions.js0000644000175300017530000000222311206455562016011 0ustar phammphammfunction checkAll() { var everyting=document.getElementById('post-checks'); var boxes=new Array(); for (var x=0;x phamm-0.5.18/COPYRIGHT0000644000175300017530000000112311131431430013162 0ustar phammphamm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Phamm - COPYRIGHT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copyright (c) 2004,2009 Alessandro De Zorzi, Mirko Grava http://www.phamm.org/ Project sponsored by RHX Studio Snc - www.rhx.it License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 or any later version as published by the Free Software Foundation. The complete text of the GNU General in LICENSE file. phamm-0.5.18/locales/0000755000175300017530000000000011354605736013337 5ustar phammphammphamm-0.5.18/locales/da_DK/0000755000175300017530000000000011354605735014300 5ustar phammphammphamm-0.5.18/locales/da_DK/LC_MESSAGES/0000755000175300017530000000000011354605735016065 5ustar phammphammphamm-0.5.18/locales/da_DK/LC_MESSAGES/messages.mo0000644000175300017530000000357411252125310020221 0ustar phammphamm%D5l@AIgn r~      ! )3 BPSXagk s}   J! & +9AVe jv~         #/5 =GO S^ fps %! $" #  AccountAccount (%d)Brugerkonti (%d)ActiveAllAll domainsBye!Confirm PasswordCreation DateDeleteDestinationDomainDomain (%d)Domæner (%d)Error: FTP Quota MbFTP StatusGID numberGeneric Error: LoginLogout %sMailboxMax QuotaModify accountModify domainNONamePasswordQuotaSetSurnameTelephoneUIDUID NumberVer. %sWarning: YESclick hereProject-Id-Version: POT-Creation-Date: 2009-03-19 18:47+0100 PO-Revision-Date: 2009-09-09 16:34+0100 Last-Translator: Alice Kærast Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Danish Plural-Forms: nplurals=2; plural=(n!=1); KontoBrugerkonti (%d)Brugerkonti (%d)AktivAlleAlle domænerFarvel!Bekræft AdgangskodeOprettelsesdagSletDestinationDomæneDomæner (%d)Domæner (%d)Fejl:FTP Kvote MbFTP StatusGID nummerGenerel Fejl:Log indLog ud %sPostkasseMaksimal KvoteRediger kontoRediger domæneNEJNavnAdgangskodeKvoteIndstilEfternavnTelefonUIDUID NummerVer. %sAdvarsel:JAklik herphamm-0.5.18/locales/ru/0000755000175300017530000000000011354605735013764 5ustar phammphammphamm-0.5.18/locales/ru/LC_MESSAGES/0000755000175300017530000000000011354605735015551 5ustar phammphammphamm-0.5.18/locales/ru/LC_MESSAGES/messages.mo0000644000175300017530000001751011075564220017712 0ustar phammphammd<\    . > M Q ] b t      ! ' 5 < H O l          %+ Q [ j r {            ) = T f q w &     0   64 k u y      ~ >81$!&=d"s;D6&*]& 64 ?@-& 'DC / >!Mox#1 E%P8v$)#!;E/&F U4b-%  '1GP 1/4L:i /3'BCj9?E( n6y)(1~I$Z<Z$2C0GbH=_' LT6MJaF58X(E]A?![>9@B)4DO:\ ,/W-"7d SI&;Q`Y3U%P.1R KVcN#+^* %s modified%s not added!...execute a commandAccountAccount %s successfully addedAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!Can edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeCatch-allChanges have not performedCode Common NameConfirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Home DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNONameName is not validOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSurnameSurname is not validSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm NEW POT-Creation-Date: 2008-10-15 09:56+0300 PO-Revision-Date: 2008-10-15 22:21+0400 Last-Translator: Yuri Kozlov Language-Team: Russian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Значение %s изменено%s не добавлено!...выполнение командыАккаунтАккаунт %s добавлен%d аккаунт%d аккаунта%d аккаунтовАккаунт или псевдоним уже существуютАктивенДобавить адрес для всей почтыДобавить новый аккаунтДобавить новый доменВсеВсе доменыПока!Может редактировать аккаунтыМожет управлять антивирусомНе удалось связаться с сервером LDAPПринимать всёПриём всей почты включёнВся почтаИзменения не внесеныКод Общее имяПодтверждение пароляНе удалось подключиться к серверу LDAP!Дата созданияУдалитьНазначениеДоменДомен %s добавлен%d домен%d домена%d доменовСвойства доменаОшибка: Выполнить командуФАКСFTP-квота (Mб)FTP-состояниеПересылка включенаGID-номерОбщая ошибка: Домашний каталогДомашний телефонОшибка LDAP: ЛогинРегистрационное имяНеправильный логин или пароль.Завершение работы %sПочтовый автоответчикПочтовый ящикMaildropМаксимальная квотаМаксимальное кол-во псевдонимовМаксимальное кол-во почтыМобильныйИзменить аккаунтИзменить доменНЕТИмяНеверное имяДругой транспортПейджерПарольПароль содержит спецсимволыПароль слишком короткий!Пароли не совпадают!Транспорт PostfixПрокси-хостКвотаSMTP AuthПроверка на спамНеправильно задан уровень меток спама!ЗаданУровень для удаления спамаУровень для пометки спамаУровень для 2-й пометки спамаВ почтовых адресах спецсимволы запрещеныФамилияНеверная фамилияНеверный синтаксис или в доменном имени есть спецсимволыТелефонUIDUID-номерВременное отсутствиеКонец периода временного отсутствияПересылать во время отсутствияИнформация о временном отсутствииНачало периода временного отсутствияВер. %sВиртуальный домашний каталогАнтивирусная проверкаПредупреждение: Доступ через вебДАЧерез несколько секунд вы будете автоматически перенаправлены на новую страницу.
Если это не происходит, пройдите по ссылке:аккаунт %s не обновлён!нажмите сюдане включайте Пересылку и Пересылку во время отсутствия одновременнодомен %s не добавлен!укажите адрес пересылки или выключите Пересылку!phamm-0.5.18/locales/ru_RU/0000755000175300017530000000000011354605735014372 5ustar phammphammphamm-0.5.18/locales/ru_RU/LC_MESSAGES/0000755000175300017530000000000011354605735016157 5ustar phammphammphamm-0.5.18/locales/ru_RU/LC_MESSAGES/messages.mo0000644000175300017530000001751011123414576020322 0ustar phammphammd<\    . > M Q ] b t      ! ' 5 < H O l          %+ Q [ j r {            ) = T f q w &     0   64 k u y      ~ >81$!&=d"s;D6&*]& 64 ?@-& 'DC / >!Mox#1 E%P8v$)#!;E/&F U4b-%  '1GP 1/4L:i /3'BCj9?E( n6y)(1~I$Z<Z$2C0GbH=_' LT6MJaF58X(E]A?![>9@B)4DO:\ ,/W-"7d SI&;Q`Y3U%P.1R KVcN#+^* %s modified%s not added!...execute a commandAccountAccount %s successfully addedAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!Can edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeCatch-allChanges have not performedCode Common NameConfirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Home DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNONameName is not validOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSurnameSurname is not validSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm NEW POT-Creation-Date: 2008-10-15 09:56+0300 PO-Revision-Date: 2008-10-15 22:21+0400 Last-Translator: Yuri Kozlov Language-Team: Russian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Значение %s изменено%s не добавлено!...выполнение командыАккаунтАккаунт %s добавлен%d аккаунт%d аккаунта%d аккаунтовАккаунт или псевдоним уже существуютАктивенДобавить адрес для всей почтыДобавить новый аккаунтДобавить новый доменВсеВсе доменыПока!Может редактировать аккаунтыМожет управлять антивирусомНе удалось связаться с сервером LDAPПринимать всёПриём всей почты включёнВся почтаИзменения не внесеныКод Общее имяПодтверждение пароляНе удалось подключиться к серверу LDAP!Дата созданияУдалитьНазначениеДоменДомен %s добавлен%d домен%d домена%d доменовСвойства доменаОшибка: Выполнить командуФАКСFTP-квота (Mб)FTP-состояниеПересылка включенаGID-номерОбщая ошибка: Домашний каталогДомашний телефонОшибка LDAP: ЛогинРегистрационное имяНеправильный логин или пароль.Завершение работы %sПочтовый автоответчикПочтовый ящикMaildropМаксимальная квотаМаксимальное кол-во псевдонимовМаксимальное кол-во почтыМобильныйИзменить аккаунтИзменить доменНЕТИмяНеверное имяДругой транспортПейджерПарольПароль содержит спецсимволыПароль слишком короткий!Пароли не совпадают!Транспорт PostfixПрокси-хостКвотаSMTP AuthПроверка на спамНеправильно задан уровень меток спама!ЗаданУровень для удаления спамаУровень для пометки спамаУровень для 2-й пометки спамаВ почтовых адресах спецсимволы запрещеныФамилияНеверная фамилияНеверный синтаксис или в доменном имени есть спецсимволыТелефонUIDUID-номерВременное отсутствиеКонец периода временного отсутствияПересылать во время отсутствияИнформация о временном отсутствииНачало периода временного отсутствияВер. %sВиртуальный домашний каталогАнтивирусная проверкаПредупреждение: Доступ через вебДАЧерез несколько секунд вы будете автоматически перенаправлены на новую страницу.
Если это не происходит, пройдите по ссылке:аккаунт %s не обновлён!нажмите сюдане включайте Пересылку и Пересылку во время отсутствия одновременнодомен %s не добавлен!укажите адрес пересылки или выключите Пересылку!phamm-0.5.18/locales/es_ES/0000755000175300017530000000000011354605735014334 5ustar phammphammphamm-0.5.18/locales/es_ES/LC_MESSAGES/0000755000175300017530000000000011354605735016121 5ustar phammphammphamm-0.5.18/locales/es_ES/LC_MESSAGES/messages.mo0000644000175300017530000001276411123414373020265 0ustar phammphammTq\  ! -;Pdl (< V`q !   / ? G W [ h w  %      # 2 @ E W g m v    &  0 . 6 6K     ~  >  8 I1 {%-#4Xm ' ; DR+g&2 6CSey ! ,>EW g q-}  D D?O ]  "4Kf { r$@?PI56#(9H3$ @M>)2C1*=K ?4DS<0P .AJ+/&;FQB 8"GNOT7L' , !R-I:E%%s modified%s not added!...execute a command...select an actionAccountAccount %s successfully addedAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!Can edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeChanges have not performedCode Common NameConfirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbForward ActiveGeneric Error: Home DirectoryHome PhoneLDAP Error: Login Username or Password not valid.Mail AutoreplyMailboxMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNameName is not validOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!QuotaSPAM CheckSPAM Tags level are not set correctly!SetSpecial Characters not Allowed in E-mail addressSurnameSurname is not validSyntax not valid or special chars found in domain nameTelephoneVacationVacation EndVacation ForwardVacation InfoVacation StartVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm 0.5.13 POT-Creation-Date: 2008-09-22 15:50+0300 PO-Revision-Date: 2008-09-22 17:57+0000 Last-Translator: jonhattan Language-Team: SPANISH MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: UTF-8Plural-Forms: nplurals=2; plural=n != 1; %s modificado¡%s no añadido!...ejecuta un comando...selecciona una acciónCuentaCuenta %s añadida satisfactoriamenteCuenta (%d)Cuentas (%d)Cuenta o Alias ya existenteActivoAñadir una dirección cógelo-todoAñadir nueva cuentaAñadir nuevo dominioTodoTodos los dominios¡Adiós!Puede editar CuentasPuede editar Anti-VirusNo puedo contactar con el servidor LDAPCógelo-todoCógelo-todo activoLos cambios no se han efectuadoCódigo Nombre ComúnConfirma Contraseña¡Ha Fallado la Conexión al Servidor LDAP!Fecha de CreaciónBorrarDestinoDominioDominio %s añadido satisfactoriamenteDominio (%d)Dominios (%d)Propiedades del dominioError: Ejecuta el comandoFAXFTP Cuota MbReenvío ActivoError Genérico: Directorio PersonalTeléfono de CasaError LDAP: Usuario o Contraseña no válido.Autorespuesta de CorreoBuzónMax CuotaNúmero máximo de AliasNúmero máximo de MailMóvilModificar cuentaModificar dominioNombreNombre no válidoOtro TransportePaginadorContraseñaLa contraseña contiene caracteres especiales¡Contraseña demasiado corta!¡Las contraseñas no coinciden!CuotaChequear SPAM¡el nivel de las etiquetas SPAM no se ha establecido correctamente!EstablecerNo se permiten caracteres especiales en la dirección de correoApellidosApellidos no válidosLa sintaxis no es válida, o se han encontrado caracteres especiales en el nombre del dominioTeléfonoVacacionesFin de VacacionesReenvío de VacacionesInformación de VacacionesInicio de VacacionesHome VirtualChequeo de VirusAlerta: Acceso WebSÍSerás redirigido a una nueva página en los próximos segundos.
Si esto no ocurre por favor sigue el enlace:¡cuenta %s no actualizada!haz click aquí¡no actives Reenvío y Reenvío de Vacaciones al mismo tiempo!¡dominio %s no añadido!¡por favor, inserta un destino para el reenvío o desactiva el Reenvío!phamm-0.5.18/locales/hu_HU/0000755000175300017530000000000011354605735014346 5ustar phammphammphamm-0.5.18/locales/hu_HU/LC_MESSAGES/0000755000175300017530000000000011354605735016133 5ustar phammphammphamm-0.5.18/locales/hu_HU/LC_MESSAGES/messages.mo0000644000175300017530000001447711252124463020303 0ustar phammphammd<\    . > M Q ] b t      ! ' 5 < H O l          %+ Q [ j r {            ) = T f q w &     0   64 k u y      ~ >814CX n"y!-, <TY hr'.).X^r?  %9@SW gt   +$3 NY mx !0.8g ~  ! &B^:~ @# ' 1<Mm  \N nY{M<Z$2C0GbH=_' LT6MJaF58X(E]A?![>9@B)4DO:\ ,/W-"7d SI&;Q`Y3U%P.1R KVcN#+^* %s modified%s not added!...execute a commandAccountAccount %s successfully addedAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!Can edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeCatch-allChanges have not performedCode Common NameConfirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Home DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNONameName is not validOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSurnameSurname is not validSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm 0.5.14 POT-Creation-Date: 2008-10-15 12:50+0300 PO-Revision-Date: 2009-02-01 19:03+0100 Last-Translator: Zsolt Jonas MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit %s módosítva%s nincs hozzáadva!...parancs futtatásaPostafiók%s postafiók sikeresen hozzáadvaPostafiók (%d)Postafiókok (%d)Postafiók vagy álnév (alias) már létezikAktívGyűjtő (catch-all) postafiók hozzáadásaÚj postafiók hozzáadásaÚj domain hozzáadásaMindÖsszes domainViszlát!Szerkeszthető postafiókokMódosítható az Anti-Vírus állapotaNem lehet kapcsolódni az LDAP kiszolgálóhozGyűjtő postafiókGyűjtó postafiók aktívGyűjtő postafiók címeA változások végrehajtása meghiusúltKód Megjelenített névJelszó megerősítéseHiba az LDAP kiszolgálóhoz történő kapcsolódása közben!LétrehozvaTörlésCélDomain%s domain sikeresen hozzáadvaDomain (%d)Domain-ek (%d)Domain beállításHiba: Parancs futtatásaFAXFTP Kvóta (MB)FTP állapotTovábbítás aktívGID számÁltalános hiba: Home könyvtárOtthoni telefonszámLDAP hiba: BelépésBelépési azonosítóHibás belépési azonosító vagy jelszó.Kilépés (%s)Automatikus válaszüzenetPostaládaLevél kézbesítőMax kvótaMax álnevek (alias) számaMax postafiókok számaMobilPostafiók módosításaDomain módosításaNEMKeresztnévHibás keresztnévMás továbbító (transport)SzemélyhívóJelszóA jelszó speciális karaktereket is tartalmazA jelszó túl rövid!A beírt jelszavak nem egyeznek!Postfix továbbító (transport)Proxy kiszolgálóKvótaSMTP azonosításSPAM szűrésSPAM jelölési szint nem helyes!BeállítSpam eldobási szint (Kill)Spam jelölési szint (Tag)Spam megjelölési szint (Tag2)Speciális karakterek nem szerepelhetnek az e-mail címbenVezetéknévHibás vezetéknévHibás vagy nem megengedett karaktereket tartalmazó domain névTelefonUIDUID számTávollétTávollét végeTávollét alatti továbbításTávolléti üzenetTávollét kezdeteVáltozat: %sPostafiókok könyvtáraVírus ellenőrzésFigyelem: Web hozzáférésIGENPár másodperc múlva átirányítunk egy új oldalra
Ha ez nem történik meg, akkor %s postafiók nincs frissítve!kattints idene engedélyezd egyszerre a Továbbítás és a Távollét Alatti Továbbítás funkciót%s domain nincs hozzáadva!kérlek, állíts be továbbítási címet vagy kapcsold ki a Továbbítást!phamm-0.5.18/locales/vi_VN/0000755000175300017530000000000011354605736014360 5ustar phammphammphamm-0.5.18/locales/vi_VN/LC_MESSAGES/0000755000175300017530000000000011354605736016145 5ustar phammphammphamm-0.5.18/locales/vi_VN/LC_MESSAGES/messages.mo0000644000175300017530000001476111123414373020307 0ustar phammphammd<\   % , B R a e q v y        ! 8 F M Y ` }          ) 6 < %G m w            . B Y k v |   &     0 6/ f p t      ~ | >8, #>"Ps#  !36U%> 5AFMT r~  += R _m7  . GR ery * ' 9GX[p&M;F   $7FUoY- n s\TZ%C24IbJ=_( N8OLaF7+X)E H]A?"[>;@B*6D<\c, .1:W /#G9d SK'Q`5U&Y03RMV$-^P!%s modified%s not added!...execute a command...select an actionAccountAccount %s successfully addedAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!CNCN is not validCan edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeChanges have not performedCode Confirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Given NameHome DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNOOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSNSN is not validSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm 0.5.13 POT-Creation-Date: 2008-09-13 08:46+0300 PO-Revision-Date: 2008-06-26 23:45+0930 Last-Translator: Clytie Siddall Language-Team: Vietnamese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: LocFactoryEditor 1.7b3 %s bị sửa đổiChưa thêm %s !...thực thi một câu lệnh...chọn một hành viTài khoảnTài khoản %s đã được thêmTài khoản (%d)Tài khoản hay Bí danh đã cóHoạt độngThêm địa chỉ bắt tất cảThêm tài khoản mớiThêm miền mớiTất cảMọi miềnTạm biệt nhéTCTC không hợp lệCó quyền sửa tài khoảnCó quyền sửa Chống Vi-rútKhông thể liên lạc với trình phục vụ LDAPBắt tất cảBắt mọi cái vẫn hoạt độngChưa thay đổi gìMãXác nhận mật khẩuKhông thành công kết nối đến máy phục vụ LDAP !Ngày tạoXoáĐíchMiềnMiền %s đã được thêmMiền (%d)Thuộc tính miềnLỗi: Thực thi câu lệnhĐiện thưMB hạn ngạch FTPTrạng thái FTPChuyển tiếp hoạt độngSố GIDLỗi chung: Tên hay gọiThư mục chínhĐiện thoại nhàLỗi LDAP: Đăng nhậpTên đăng nhậpSai đăng nhập tên người dùng hay mật khẩu.Đăng xuất %sThư tự động trả lờiHộp thưThả thưHạn ngạch trênSố tối đa các Bí danhSố tối đa các thưDi độngSửa tài khoảnSửa miềnKHÔNGCơ chế truyền khácMáy nhắn tinMật khẩuMật khẩu chứa ký tự đặc biệtMật khẩu quá ngắn !Hai mật khẩu không trùng !Truyền PostfixMáy ủy nhiệmHạn ngạchXác thực SMTPSNSN không hợp lệKiểm tra thư rácSai đặt mức các thẻ thư rác.ĐặtCấp giết thư rácMức thẻ thư rácMức thẻ thư rác 2Không cho phép địa chỉ thư điện tử chứa ký tự đặc biệtSai cú pháp hay tên miền chứa ký tự đặc biệtĐiện thoạiUIDSố UIDNghỉ phépCuối nghỉ phépChuyển tiếp do nghỉ phépThông tin nghỉ phépĐầu nghỉ phépPhạm vi. %sNhà ảoKiểm tra vi-rútCảnh báo : Truy cập WebCÓMột trang mới sẽ tự động nạp trong vòng vài giây.
Không thì nhấn vào liên kết này:tài khoản %s chưa được cập nhật !nhấn đâykhông nên kích hoạt đồng thời hai chức năng Chuyển tiếp và Chuyển tiếp do nghỉ phép !miền %s chưa được thêm !hãy nhập một đích đến chuyển tiếp, hoặc tắt chức năng Chuyển tiếp !phamm-0.5.18/locales/fr_FR/0000755000175300017530000000000011354605735014334 5ustar phammphammphamm-0.5.18/locales/fr_FR/LC_MESSAGES/0000755000175300017530000000000011354605735016121 5ustar phammphammphamm-0.5.18/locales/fr_FR/LC_MESSAGES/messages.mo0000644000175300017530000001415511252124463020262 0ustar phammphammeDl   ! ( > N ] a 0m       # ) 5 !F h v }          $ 4 C N [ a %l            + ; A J j ~   &     0' X ` 6u         * 4?~C >$89#r "+1EVhm9 %.,7d ju)  "9ARV f q    * & /=Pcl| /%6HN T^&q F-5HH     ) 4?C  ?%0<=[%3D1Hc>`( MU7NKbG69Y)F^B@"\I?:AC*5EP;] -0X .#8e TJ'<RaZ4V&Q/2S LWdO$,_+!%s modified%s not added!...execute a commandAccountAccount %s successfully addedAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsAn Unexpected Error Occurred during %s Addition!Bye!Can edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeCatch-allChanges have not performedCode Common NameConfirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Home DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNONameName is not validOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSurnameSurname is not validSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm 0.5.14 Report-Msgid-Bugs-To: POT-Creation-Date: 2009-03-19 18:47+0100 PO-Revision-Date: 2009-07-11 19:30+0100 Last-Translator: Aldo Reset Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %s modifié%s non ajouté...execute une commandeCompteCompte %s ajouté avec succèsCompte (%d)Comptes (%d)Le compte ou l'alias existe déjàActifAjouter un CatchAllCréer un CompteCréer un domaineTousTous les domainesUne erreur inattendue est survenue lors de l'ajout de %s!Au Revoir !Peut Editer ComptesPeut Editer Anti-VirusImpossible de joindre le serveur LdapCatchAllCatchAll ActifCatchAllLes modifications n'ont pu être effectuéesCode Nom CommunConfirmer le mot de PasseLa Connection au serveur Ldap a échoué!Date de CréationSupprimerDestinationDomaineDomaine %s crée avec succèsDomaine (%d)Domaines (%d)Propriété du DomaineErreur:Execute commandeFAXQuota FTP en MoFTP StatusForward ActifNuméro GIDErreur Général: Répertoire RacineTéléphoneErreur LDAPLoginNom LoginNom utilisateur ou mot de passe non valideLogout %sMail RépondeurMailboxMaildropQuota MaximumNombre Max d'AliasNombre Max de MailPortableModifier compteModifier domaineNONNomNom pas valideAutre TransportPagerMot de PasseMot de passe contient des caractères spéciauxMot de passe trop court!Les Mot de passe ne correspondent pasTransport PostfixProxyQuotaSMTP AuthVérification SPAMLes Tags du SPAM ne sont pas corrects!InitialiserNiveau suprimer SPAMNiveau du TAG de SPAMNiveau de TAG2 du SPAMLes Caractères spéciaux ne sont pas autorisés dans une adresse mailPrénomPrénom non valideSyntax invalide ou caractères spéciaux trouvés dans le nom du domaineTéléphoneUIDNombre UIDRépondeurFin RépondeurRenvoi RépondeurInfo RépondeurDébut RépondeurVersion %sRépertoire virtuelVérifier VirusAttention:Accès WebOUIVous allez être rédirigé automatiquement vers une nouvelle page dans quelques secondes.
si cela n'arrivait pas, suivez ce lien:compte %s nonCliquez IciN'ctivez pas le Dorward en le Renvoi Répondeur en même temps!domain %s non ajouté!Inserer une destination ou desactiver le renvoi!phamm-0.5.18/locales/vi/0000755000175300017530000000000011354605735013754 5ustar phammphammphamm-0.5.18/locales/vi/LC_MESSAGES/0000755000175300017530000000000011354605736015542 5ustar phammphammphamm-0.5.18/locales/vi/LC_MESSAGES/messages.mo0000644000175300017530000001476111075564220017707 0ustar phammphammd<\   % , B R a e q v y        ! 8 F M Y ` }          ) 6 < %G m w            . B Y k v |   &     0 6/ f p t      ~ | >8, #>"Ps#  !36U%> 5AFMT r~  += R _m7  . GR ery * ' 9GX[p&M;F   $7FUoY- n s\TZ%C24IbJ=_( N8OLaF7+X)E H]A?"[>;@B*6D<\c, .1:W /#G9d SK'Q`5U&Y03RMV$-^P!%s modified%s not added!...execute a command...select an actionAccountAccount %s successfully addedAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!CNCN is not validCan edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeChanges have not performedCode Confirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Given NameHome DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNOOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSNSN is not validSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm 0.5.13 POT-Creation-Date: 2008-09-13 08:46+0300 PO-Revision-Date: 2008-06-26 23:45+0930 Last-Translator: Clytie Siddall Language-Team: Vietnamese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: LocFactoryEditor 1.7b3 %s bị sửa đổiChưa thêm %s !...thực thi một câu lệnh...chọn một hành viTài khoảnTài khoản %s đã được thêmTài khoản (%d)Tài khoản hay Bí danh đã cóHoạt độngThêm địa chỉ bắt tất cảThêm tài khoản mớiThêm miền mớiTất cảMọi miềnTạm biệt nhéTCTC không hợp lệCó quyền sửa tài khoảnCó quyền sửa Chống Vi-rútKhông thể liên lạc với trình phục vụ LDAPBắt tất cảBắt mọi cái vẫn hoạt độngChưa thay đổi gìMãXác nhận mật khẩuKhông thành công kết nối đến máy phục vụ LDAP !Ngày tạoXoáĐíchMiềnMiền %s đã được thêmMiền (%d)Thuộc tính miềnLỗi: Thực thi câu lệnhĐiện thưMB hạn ngạch FTPTrạng thái FTPChuyển tiếp hoạt độngSố GIDLỗi chung: Tên hay gọiThư mục chínhĐiện thoại nhàLỗi LDAP: Đăng nhậpTên đăng nhậpSai đăng nhập tên người dùng hay mật khẩu.Đăng xuất %sThư tự động trả lờiHộp thưThả thưHạn ngạch trênSố tối đa các Bí danhSố tối đa các thưDi độngSửa tài khoảnSửa miềnKHÔNGCơ chế truyền khácMáy nhắn tinMật khẩuMật khẩu chứa ký tự đặc biệtMật khẩu quá ngắn !Hai mật khẩu không trùng !Truyền PostfixMáy ủy nhiệmHạn ngạchXác thực SMTPSNSN không hợp lệKiểm tra thư rácSai đặt mức các thẻ thư rác.ĐặtCấp giết thư rácMức thẻ thư rácMức thẻ thư rác 2Không cho phép địa chỉ thư điện tử chứa ký tự đặc biệtSai cú pháp hay tên miền chứa ký tự đặc biệtĐiện thoạiUIDSố UIDNghỉ phépCuối nghỉ phépChuyển tiếp do nghỉ phépThông tin nghỉ phépĐầu nghỉ phépPhạm vi. %sNhà ảoKiểm tra vi-rútCảnh báo : Truy cập WebCÓMột trang mới sẽ tự động nạp trong vòng vài giây.
Không thì nhấn vào liên kết này:tài khoản %s chưa được cập nhật !nhấn đâykhông nên kích hoạt đồng thời hai chức năng Chuyển tiếp và Chuyển tiếp do nghỉ phép !miền %s chưa được thêm !hãy nhập một đích đến chuyển tiếp, hoặc tắt chức năng Chuyển tiếp !phamm-0.5.18/locales/de_DE/0000755000175300017530000000000011354605735014276 5ustar phammphammphamm-0.5.18/locales/de_DE/LC_MESSAGES/0000755000175300017530000000000011354605735016063 5ustar phammphammphamm-0.5.18/locales/de_DE/LC_MESSAGES/messages.mo0000644000175300017530000001413211123414372020215 0ustar phammphammb,<H I Ucx   - A [ e v   !     4 D L \ ` m x    %   ! * 4 H [ b q             & 0 &; b f v  0   6  $ ( 3 < I Z h w   ~ 0 H>S8 (-,V! (. Wa(q(  +0I\ev~   ()R[w"& #(>PV"_% '@DZs3J-5 9 DPa{  $z EJ$V ]PKNY:^!EQT)\15R- % C `6D<#87'AHX.9+LS(UGMZIO 4*;"2[B0@_JW>=Fa ?,b/3&%s modified%s not added!...execute a command...select an actionAccount %s successfully addedAccount or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!Can edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeChanges have not performedCode Common NameConfirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Home DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNONameName is not validOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSurnameSurname is not validSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm 0.5.13 POT-Creation-Date: 2008-09-22 15:50+0300 PO-Revision-Date: 2008-09-22 15:50+0300 Last-Translator: Jan Dankert MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Plural-Forms: nplurals=2; plural=n != 1; %s gendert%s nicht hinzugefgt...einen Befehl ausfhren...eine Aktion auswhlenAccount %s wurde erfolgreich hinzugefgtDer Account oder der Alias existiert bereitsAktivNeue Catch-All-Adresse einrichtenNeuen Account einrichtenNeue Domain hinzufgenAlleAlle DomainsAuf Wiedersehen!Accounts bearbeitenBearbeite AntivirenprogrammKeine Verbindung zum LDAP-Server mglichCatch allCatch all aktivDie nderungen wurden nicht durchgefhrtCodeNameKennwort besttigenKeine Verbindung zum LDAP-Server mglichAnlage-DatumEntfernenZielDomainDie Domain %s wurde erfolgreich hinzugefgtDomain (%d)Domains (%d)Domain-EigenschaftFehler: Befehl ausfhrenTelefaxFTP Speichergrenze (in MB)FTP-StatusWeiterleitung aktivGIDAllgemeiner Programmfehler: HeimatverzeichnisTelefon privatFehler bei LDAP-ZugriffAnmeldungBenutzernameBenutzername oder Kennwort nicht gltig.AbmeldenE-Mail automatische AntwortAnrufbeantworterMaildropMaximale Gre der Mailbox (Quota)Maximale Anzahl von AliasesMaximale Anzahl von E-Mail-NachrichtenMobilAccount bearbeitenDomain ndernNEINNameDer Name ist ungltigAnderer TransportPagerKennwortDas Kennwort enthlt SonderzeichenDas Kennwort ist zu kurz!Die Kennwrter stimmen nicht berein!Postfix TransportProxy HostnameSpeicher (Quota)SMTP AuthentifizierungSPAM-PrfungDie Spam Tags level sind nicht korrekt!SetSpam Ablehnungs-LevelSpam Markierungs-Level 1Spam Markierungslevel 2In E-Mail-Adressen sind keine Sonderzeichen erlaubtNachnameDer Nachname ist ungltigDie Syntax ist ungltig oder es befinden sich Sonderzeichen im DomainnamenTelefonUIDUID-NummerAbwesenheitAbwesenheit-EndeAbwesenheit-WeiterleitungAbwesenheits-InformationAbwesenheit-BeginnVer. %sVirtuelles HeimatverzeichnisVirus-PrfungWarnungWeb-AdresseJASie werden in wenigen Sekunden automatisch auf die nchste Seite weiterleitet. Falls dies nicht geschieht, folgen Sie bitte diesem Link:Account %s wurde nicht aktualisiert!Hier klickenSie drfen Weiterleitung und Abwesenheitsnachricht nicht kombinieren!Domain %s nicht hinzugefgt!Bitte ein Weiterleitungsziel einfgen oder die Weiterleitung deaktivieren!phamm-0.5.18/locales/pl_PL/0000755000175300017530000000000011354605735014344 5ustar phammphammphamm-0.5.18/locales/pl_PL/LC_MESSAGES/0000755000175300017530000000000011354605735016131 5ustar phammphammphamm-0.5.18/locales/pl_PL/LC_MESSAGES/messages.mo0000644000175300017530000001410611121721372020263 0ustar phammphammd<\    . > M Q ] b t      ! ' 5 < H O l          %+ Q [ j r {            ) = T f q w &     0   64 k u y      ~ >8.1`q#!5>OXn+   $D T^b%i   $3 BPX1k  (1ASW]u %'MSdt2># '19H_t  s O: <Z$2C0GbH=_' LT6MJaF58X(E]A?![>9@B)4DO:\ ,/W-"7d SI&;Q`Y3U%P.1R KVcN#+^* %s modified%s not added!...execute a commandAccountAccount %s successfully addedAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!Can edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeCatch-allChanges have not performedCode Common NameConfirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Home DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNONameName is not validOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSurnameSurname is not validSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm 0.5.13 POT-Creation-Date: 2008-12-12 11:46+0100 PO-Revision-Date: 2008-12-12 11:46+0100 Last-Translator: Sławomir Paszkiewicz Language-Team: POLISH MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: utf-8%s zmodyfikowany%s nie dodano!...wykonaj komendęKontoKonto %s zostało pomyślnie dodaneKonto (%d)Konta (%d)Konto lub Alias już istniejeAktywneDodaj adres catch-allDodaj nowe kontoDodaj nową domenęWszystkoWszystkie domenyŻegnaj!Może edytować KontaMoże edytować AntywirusaNie można połączyć się z serwerem LDAPCatch allCatch all aktywneCatch-allZmiany nie zostały wykonaneKodNazwa zwyczajowaPotwierdź hasłoŁączenie do serwera LDAP nieudane!Data utworzeniaUsunięteCelDomenaDomenta %s została pomyślnie dodanaDomena (%d)Domeny (%d)Właściwości domenyBłąd: Wykonaj komendęFAXFTP Quota MbStatus FTPPrzekierowanie aktywneNumer GIDTypowy Błąd: Katalog DomowyTelefon DomowyBłąd LDAP: ZalogujNazwa użytkownikaNazwa użytkownika lub Hasło jest nieprawidłoweWyloguj %sAutomatyczna odpowiedź na mailaSkrzynka pocztowaMaildropQuota maksymalnaMaksymalna liczba AliasówMaksymalna liczba MailiKomórkaModyfikuj kontoModyfikuj domenęNIEImięNazwa nie jest poprawnaInny TransportPagerHasłoHasło zawiera znaki specjalneHasło jest za krótkie!Hasło się nie zgadza!Transport PostfixHost ProxyQuotaAutoryzacja SMTPSprawdzanie SPAMuPoziom tagów SPAM nie jest poprawny!UstawPoziom Spam KillPoziom Spam TagPoziom Spam Tag2Znaki specjalne nie są dozwolone w adresie E-mailNazwiskoNazwisko nie jest poprawneSkładnia nie jest poprawna lub domena zawiera znaki specjalneTelefonUIDNumer UIDWakacjeKoniec WakacjiPrzekierowanie WakacjiInformacja WakacyjnaPoczątek WakacjiWersja %sVirtualny Katalog DomowySprawdzanie WirusówOstrzeżenie: Dostęp WWWTAKZostaniesz automatycznie przekierowany na nową strone w przeciągu kilku sekund.
Jeśli tak się nie stanie, kliknij proszę na poniższy link:konto %s nie uaktualnione!kliknij tutajnie włączaj Przekierowania ani Przekierowania wakacyjnego w tym samym czasie!domena %s nie została dodana!proszę, podaj adres docelowy lub wyłącz Przekierowanie!phamm-0.5.18/locales/it_IT/0000755000175300017530000000000011354605735014346 5ustar phammphammphamm-0.5.18/locales/it_IT/LC_MESSAGES/0000755000175300017530000000000011354605735016133 5ustar phammphammphamm-0.5.18/locales/it_IT/LC_MESSAGES/messages.mo0000644000175300017530000001354611252124463020277 0ustar phammphammc4Lp q } $ 3 7 C H Z n      !  * 1 = D a z         %+ Q [ j r {           & = O Z ` j &u     0   6 T ^ b m v     ~ j >8 *8I[s{ ">%Y " ,!4Vo       'FN] e r| '5Q cn t~3;5=HP    " /:i= < C"SY$B13FaG<^' K7LI`E6*W(D\@>!Z=:?A)5CN;[ c-09V."8X RH&P_4T%O/2Q JUbM#,]+ %s modified%s not added!...execute a command...select an actionAccountAccount (%d)Accounts (%d)Account or Alias already existsActiveAdd catch-all addressAdd new accountAdd new domainAllAll domainsBye!Can edit AccountsCan edit Anti-VirusCan't contact LDAP serverCatch allCatch all activeChanges have not performedCode Common NameCommon Name is not validConfirm PasswordConnection to LDAP Server Failed!Creation DateDeleteDestinationDomainDomain %s successfully addedDomain (%d)Domains (%d)Domain propertyError: Execute commandFAXFTP Quota MbFTP StatusForward ActiveGID numberGeneric Error: Given NameHome DirectoryHome PhoneLDAP Error: LoginLogin NameLogin Username or Password not valid.Logout %sMail AutoreplyMailboxMaildropMax QuotaMax number of AliasMax number of MailMobileModify accountModify domainNOOther TransportPagerPasswordPassword contains special charsPassword too short!Passwords don't match!Postfix TransportProxy HostQuotaSMTP AuthSPAM CheckSPAM Tags level are not set correctly!SetSpam Kill LevelSpam Tag LevelSpam Tag2 LevelSpecial Characters not Allowed in E-mail addressSurnameSurname is not validSyntax not valid or special chars found in domain nameTelephoneUIDUID NumberVacationVacation EndVacation ForwardVacation InfoVacation StartVer. %sVirtual HomeVirus CheckWarning: Web AccessYESYou will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:account %s not updated!click heredo not activate Forward and Vacation Forward in the same time!domain %s not added!please, insert a forward destination or disable Forward!Project-Id-Version: phamm 0.5.13 POT-Creation-Date: 2008-09-16 18:57+0300 PO-Revision-Date: 2008-09-07 18:38+0300 Last-Translator: Alessandro De Zorzi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Plural-Forms: nplurals=2; plural=n != 1; %s modificato%n non aggiunto!...esegui comando...seleziona una azioneAccountAccount (%d)Account (%d)Account o alias esistenteAttivoAggiungi indirizzo catch-allAggiungi un nuovo accountAggiungi un nuovo dominioTuttiTutti i dominiCiao!Può modificare gli accountPuò modificare Anti-VirusImpossibile contattare il server LDAPCatch allCatch all attivoModifiche non effettuateCodice NomeNome non validoConferma PasswordConnession al server LDAP fallita!Data di creazioneEliminaDestinazioneDominioDominio %s aggiunto correttamenteDominio (%d)Domini (%d)Proprietà dominioErrore: Esegui comandoFAXFTP quota MbStato FTPForward attivoNumero GIDErrore generico: Given NameHome DirectoryHome PhoneErrore LDAP: AccediNome utenteNome utente o password errata.Esci %sMail AutoreplyMailboxDestinazioneMax QuotaNumero massimo aliasNumero massimo e-mailTelefoninoModifica accountModifica dominioNOOther TransportPagerPasswordLa Password contiene caratteri specialiPassword troppo corta!Le Password non coincidono!Postfix TransportProxy HostQuotaSMTP AuthProtezione SPAMI livelli di SPAM non sono impostati correttamente!ImpostaSpam Kill LevelSpam Tag LevelSpam Tag2 LevelI caratteri speciali non sono ammessi nell'indirizzo e-mailCognomeCognome non validoSintassi non valida oppure trovati caratteri speciali nel nome a dominioTelefonoUIDNumero UIDVacationFine VacationVacation ForwardMessaggio VacationInizio VacationVer. %sVirtual HomeProtezione VirusAttenzione: Web AccessSISarai automaticamente indirizzato a una nuova pagina in alcuni secondi.
Se non accade, segui il link:account %s non aggiornato!clicca quinon attiavare Forward e Vacation Forward contemporaneamente!domain %s non aggiunto!inserire una destinazione per il forward o disabilitare il Forward!phamm-0.5.18/LICENSE0000644000175300017530000004313310321745032012711 0ustar phammphamm GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. phamm-0.5.18/TODO0000644000175300017530000000274411253376674012420 0ustar phammphamm/************************ * Phamm 0.6 * ************************/ * CSS2 and XHTML Strict * AJAX search functions * PHP5 and OOP /************************ * Phamm 0.5 * ************************/ - enable deault filter view (high number of domain...) - immediate delete for account and domain (see recursive fix) - header mail "Phamm" - fix error with multi windows open/different domain in session - attribute hidden in cration only (es. postmaster can write but not modify uid) - attribute hidden does not work with field 1 - Meta attribute (SPAM protetion level for user interface) - Manager/Postmaster attribute direct input (no select...) - Log http://it.php.net/manual/en/function.syslog.php http://it.php.net/manual/en/function.openlog.php - php5-mcrypt - multi-select option template engine - error form if Domain Property update missing data - alias require 1 destination - mail plugin not required - remind lost password - rename attribute "delete" when phamm.schema change - random password - VirtualBackupMail dn: vd=example.com,o=hosting,dc=x4w,dc=it objectClass: top objectClass: VirtualDomain vd: example.com accountActive: TRUE lastChange: 1098956723 delete: FALSE postfixTransport: smtp:[192.168.10.10]:25 dn: mail=@example.com,vd=example.com,o=hosting,dc=x4w,dc=it objectClass: top objectClass: VirtualBackupMail mail: @example.com accountActive: TRUE lastChange: 1132572757 description: MX secondario dominio phamm-0.5.18/DTD/0000755000175300017530000000000011354605735012327 5ustar phammphammphamm-0.5.18/DTD/phamm-plugins.dtd0000644000175300017530000000542011060755126015600 0ustar phammphamm phamm-0.5.18/index.php0000644000175300017530000000013110431400705013510 0ustar phammphamm phamm-0.5.18/lib/0000755000175300017530000000000011354605735012462 5ustar phammphammphamm-0.5.18/lib/common.php0000644000175300017530000003076611127172532014467 0ustar phammphamm * Copyright (C) 2004,2008 Alessandro De Zorzi and Mirko Grava * * This file is part of Phamm. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * Refresh the page * * Initial code Copyright (C) 2004, Bruno Pelaia (PFLAdmin) * Redirect a client to the specified url. * The 'url' should be HTTP/1.1 compliant: it should start with the * protocol specification. * The 'force_meta' and 'seconds' parameter are optional. * The 'force_meta' behaviour is assumed if headers have been already sent. * * * @param string $url The page to redirect to * @param bool $force_meta Whenever you need an HTML-meta tag or not * @param int $seconds The amount of seconds to wait before **/ function refresh ($url, $force_meta = false, $seconds = 0) { // Check the protocol if (isset($_SERVER['HTTPS'])) $PROTOCOL = 'https'; else $PROTOCOL = 'http'; // HTTP/1.1 requires an absolute URI $uri = ereg ( '^http', $url ) ? $url : "$PROTOCOL://". $_SERVER['HTTP_HOST']; // Server Root Check if(dirname ($_SERVER['PHP_SELF']) != '' && dirname ($_SERVER['PHP_SELF']) != '/') $uri .= dirname($_SERVER['PHP_SELF']); $uri .= '/'.$url; if ( $force_meta || headers_sent () ) { ob_start(); ob_clean (); echo "

"; echo _("You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:")." ".''._("click here").''; echo "

"; ob_end_flush (); } else { ob_end_clean (); header ( "Location: ${uri}" ); } exit; } /** * Return PHP array from XML file * * original code from * mmustafa at vsnl dot com http://php.net/xml_parser_create * * @param mixed $file * @return array $params **/ function xml2array ($file) { $xml_parser = xml_parser_create(); if (!($fp = fopen($file, "r"))) { die("could not open XML input"); } $data = fread($fp, filesize($file)); fclose($fp); xml_parse_into_struct($xml_parser, $data, $vals, $index); xml_parser_free($xml_parser); $params = array(); $xml_elem = array(); $level = array(); foreach ($vals as $xml_elem) { if ($xml_elem['type'] == 'open') { if (array_key_exists('attributes',$xml_elem)) { $extra = array_values($xml_elem['attributes']); $level[$xml_elem['level']] = $extra[0]; } else { $level[$xml_elem['level']] = $xml_elem['tag']; } } if ($xml_elem['type'] == 'complete') { $start_level = 1; $php_stmt = '$params'; while($start_level < $xml_elem['level']) { $php_stmt .= '[$level['.$start_level.']]'; $start_level++; } $php_stmt .= '[$xml_elem[\'tag\']] = isset($xml_elem[\'value\']) ? $xml_elem[\'value\'] : "";'; eval($php_stmt); } } return $params; } /** * Generic LDAP Single-level search * * @author Alessandro De Zorzi * * @todo add attrsonly, sizelimit, timelimit * * @param string $base_dn * @param string $filter * @param array $attributes * @param array $attributes * @param array $short Sort Attributes **/ function phamm_list ($base_dn,$filter,$attributes=null,$sort=null) { global $connect; // Do a LDAP search if ($attributes) $search = ldap_list($connect,$base_dn,$filter,$attributes); else $search = ldap_list($connect,$base_dn,$filter); // Order the results if possible if (version_compare(phpversion(), "4.2.0", ">=")) ldap_sort($connect,$search,$sort); // Get entries $entries = ldap_get_entries($connect, $search); // Free the memory ldap_free_result($search); // Return the entry return $entries; } /** * Generic LDAP search * * @author Alessandro De Zorzi * * @todo add attrsonly, sizelimit, timelimit * * @param string $base_dn * @param string $filter * @param array $attributes * @return array $entries **/ function phamm_search ($base_dn,$filter,$attributes=null,$sort=null) { global $connect; // Do a LDAP search if (isset($attributes)) $search = ldap_search($connect,$base_dn,$filter,$attributes); else $search = ldap_search($connect,$base_dn,$filter); // Order the results if possible if (version_compare(phpversion(), "4.2.0", ">=")) ldap_sort($connect, $search,$sort); // Get entries $entries = ldap_get_entries($connect, $search); // Free the memory ldap_free_result($search); // Return the entry return $entries; } /** * Create new LDAP entry * * @author Alessandro De Zorzi * * @param string $dn * @param array $entry The attributes info * @return bool $r **/ function phamm_add ($dn,$entry) { global $connect; $r = ldap_add ($connect, $dn, $entry); return $r; } /** * Modify a LDAP entry * * @author Alessandro De Zorzi * * @param string $dn * @param array $entry The attributes info * @return bool $r **/ function phamm_modify ($dn,$entry) { global $connect; $r = ldap_modify ($connect, $dn, $entry ); return $r; } /** * Check if password do not match and... * * @param $password1 * @param $password2 * @return bool **/ function wrong_pw ($password1,$password2,$length=PASSWORD_MIN_LENGHT) { if ( $password1 != $password2 ) $error_msg = _("Passwords don't match!"); elseif ( strlen($password1) < $length ) $error_msg = _("Password too short!"); elseif ( !check_syntax ('password',$password1) && $length > 0) $error_msg = _("Password contains special chars"); if (isset($error_msg)) return $error_msg; return false; } /** * Hashes a password and returns the hash based on the specified enc_type. * * Original function from phpLDAPadmin project. * * @author The phpLDAPadmin development team * * @param string $password_clear The password to hash in clear text. * @constant string $enc_type Standard LDAP encryption type which must be one of * crypt, md5 or clear. * @return string The hashed password. */ function password_hash($password_clear) { $enc_type = strtolower(ENC_TYPE); switch($enc_type) { case 'crypt': $password_hash = '{CRYPT}'.crypt($password_clear); break; case 'md5': $password_hash = ''; $md5_hash = md5($password_clear); for ( $i = 0; $i < 32; $i += 2 ) $password_hash .= chr( hexdec( $md5_hash{ $i + 1 } ) + hexdec( $md5_hash{ $i } ) * 16 ); $password_hash = '{MD5}'.base64_encode($password_hash); break; case 'clear': $password_hash = $password_clear; break; default: $password_hash = '{CRYPT}'.crypt($password_clear); break; } return $password_hash; } /** * Get the values of a DN * * @author Alessandro De Zorzi * * @param string $dn * @param string $filter * @return array $results **/ function self_values ($dn, $filter="(cn=*)") { global $connect; $search = ldap_search($connect,$dn,$filter); $results = ldap_get_entries($connect, $search); return $results; } /** * Purge empty values * * @param array $data * @param array $attribute * @return array $res **/ function purge_empty_values ($data,$attribute=null) { // Empty array $res = array(); if (is_array($data)) { foreach ($data as $key => $val) if ($val) { if (isset($attribute)) { // multiplies if (isset($attribute[$key]["MULTIPLIER"])) $val = ( $val * $attribute[$key]["MULTIPLIER"] ); // Append suffix if (isset($attribute[$key]["SUFFIX"])) $val = $val.$attribute[$key]["SUFFIX"]; } if (is_array($val)) $res[$key] = $val; else $res[$key] = strip_tags($val); } } return $res; } /** * Add new attribute (multiple) * * @author Alessandro De Zorzi * * @param string $dn * @param array $entry The attributes info * @return bool $r **/ function phamm_mod_add ($dn,$entry) { global $connect; $r = ldap_mod_add ($connect, $dn, $entry); return $r; } /** * Delete attribute (multiple) * * @author Alessandro De Zorzi * * @param string $dn * @param array $entry The attributes info * @return bool $r **/ function phamm_mod_del ($dn,$entry) { global $connect; $r = ldap_mod_del ($connect, $dn, $entry); return $r; } /** * Delete LDAP entry recursive * * @author gabriel at hrz dot uni-marburg dot de * http://it2.php.net/manual/it/function.ldap-delete.php * * @param $ds * @param string $dn The DN * @param bool $recursive * @return bool **/ function phamm_ldap_delete($dn,$recursive=false) { global $connect; if($recursive == false) { return(ldap_delete($connect,$dn)); } else { //searching for sub entries $sr=ldap_list($connect,$dn,"ObjectClass=*",array("")); $info = ldap_get_entries($connect, $sr); for($i=0;$i<$info['count'];$i++) { //deleting recursively sub entries $result=myldap_delete($connect,$info[$i]['dn'],$recursive); if(!$result) { //return result code, if delete fails return($result); } } return(ldap_delete($connect,$dn)); } } /** * Simple LDAP error **/ function phamm_error () { global $connect; return _("LDAP Error: ").ldap_error($connect).' ('._("Code ").ldap_errno($connect).')'; } /** * Various syntax check (IP address, domain, email address...) * * @author Alessandro De Zorzi * @todo Check if IP 0 < number <255 * * @param string $type The kind of data * @param string $arg The value * @param int $length The min length of string * @todo name * @return bool **/ function check_syntax ($type,$arg,$length="0") { if (strlen($arg) < $length) { return false; } // IP Address if ($type == 'ip') { if (!ereg ("^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$", $arg)) { return FALSE; } /*$numbers = explode('.',$arg); foreach ($numbers as $number) { if ($number > 255) return FALSE; } */ else { return TRUE; } } // DOMAIN elseif ($type == 'domain') { if (!eregi("^([0-9a-z][0-9a-z-]+\.)+[a-z]{2,7}$", $arg)) { return FALSE; } else { return TRUE; } } // ALIAS and ACCOUNT elseif ($type == 'account') { if (!eregi("^[\._a-z0-9-]+$", $arg)) { return FALSE; } else { return TRUE; } } // Password elseif ($type == 'password') { if (!eregi("^[\._a-z0-9-]+$", $arg)) return false; return true; } // Email elseif ($type == 'email') { if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$", $arg)) return false; return true; } // Name elseif ($type == 'name') { return true; } } /** * Open the LDAP connection * * @author Alessandro De Zorzi **/ function phamm_ldap_connect () { // Open LDAP connection to server $connect = @ldap_connect(LDAP_HOST_NAME,LDAP_PORT) or die ("LDAP connection Failed!"); ldap_set_option($connect,LDAP_OPT_PROTOCOL_VERSION,LDAP_PROTOCOL_VERSION); // Start TLS session if (LDAP_TLS == 1) { @ldap_start_tls($connect) or die ("Could not start TLS. Please check your LDAP server configuration."); } return $connect; } ?> phamm-0.5.18/lib/phamm.php0000644000175300017530000001336711142556417014304 0ustar phammphamm * Copyright (C) 2004,2008 Alessandro De Zorzi and Mirko Grava * * This file is part of Phamm. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * @author Alessandro De Zorzi * * @param string $date_format * @return string **/ function phamm_date($date_format) { switch ($date_format) { case "test" : // YYYY-MM-DD return date(Ymd); break; default : // YYYY-MM-DD return date(Ymd); break; } } /** * Set the PHP ERROR_LEVEL * * @package Phamm * @author Alessandro De Zorzi * * @constant int ERROR_LEVEL * @return mixed **/ function phamm_php_error_level () { // Set PHP error level one of 0,1,2,10 if (ERROR_LEVEL == 0) { error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR); } elseif (ERROR_LEVEL == 1) { error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR); } elseif (ERROR_LEVEL == 2) { error_reporting(E_ALL & ~E_NOTICE); } if (ERROR_LEVEL == 10) { error_reporting(E_ALL); } } /** * Write a log in to file * * TODO see: * Log the operations in to file * http://www.w3.org/Daemon/User/Config/Logging.html#common-logfile-format * * @package Phamm * @author Alessandro De Zorzi * * @param string $pn * @param string $user * @param string $operation * @param bool $result **/ function phamm_log ($pn,$user,$operation,$result) { if (PHAMM_LOG == 1) { if (!$pn) $pn = 'phamm'; if ($result) $resultLabel = 'OK'; else $resultLabel = 'FAILED'; // Set the file in Append mode $logFile = fopen (LOG_FILE,'a'); // Get time and date $day = date('Y'.'-'.'m'.'-'.'d'); $hour = date ('H'.':'.'i'.':'.'s'); $IP = $_SERVER["REMOTE_ADDR"]; // Prepare the log string $log= "$IP - $user [$day $hour] \"$pn : $operation\" $resultLabel\n"; // Write the log in to file fwrite ($logFile,"$log"); // Close the file fclose ($logFile); } return true; } /** * Set Phamm var * * @param string $name The variable name * @param array $values Possible values * @param string $methods @todo * @param int $level * @return mixed **/ function phamm_set_var($name, $values=null, $methods=null, $level=0) { if (isset($_GET[$name])) { if ($_GET[$name] == 'NONE') $_SESSION["phamm"][$name] = null; else $_SESSION["phamm"][$name] = $_GET[$name]; } elseif (isset($_POST[$name])) $_SESSION["phamm"][$name] = $_POST[$name]; // Prevent non wanted values if (is_array($values) && !in_array($_SESSION["phamm"]["$name"],$values)) return null; if (isset($_SESSION["phamm"][$name])) return $_SESSION["phamm"][$name]; return null; } function phamm_print_message ($class,$message,$newline=false) { switch ($class) : case "error" : $msg = _('Error: ').$message; break; case "warning" : $msg = _('Warning: ').$message; break; default : $msg = $message; break; endswitch; echo '
'.$msg.'
'; if ($newline) echo '
'; } function phamm_print_xhtml ($tag) { echo $tag; } /* * Execute a command to multiple accounts/domains * * @param string $command The command * @param array $values Lists of accounts/domains */ function group_actions ($command,$values) { // Set initial return value $r = false; $ga = explode(';',$command); $mode = $ga[0]; switch ($mode) : case "account" : foreach ($values as $key => $value) { // key contains mail $key1 = explode ('@',$key); // Create right DN $dn = 'mail='.$key.',vd='.$key1[1].','.LDAP_BASE; // Pre-load values $self_values = self_values ($dn, $filter="(objectClass=*)"); // (string) needed for TRUE and FALSE not real boolean... $entry[$ga[1]] = (string)$ga[2]; $is_alias = (in_array('VirtualMailAlias',($self_values[0]["objectclass"])) ? true : false); // Delete immediate if VirtualMailAlias if (isset($entry["delete"]) && $is_alias) $r = phamm_ldap_delete($dn,$recursive=false); // Change single value else $r = phamm_modify ($dn,$entry); } break; case "domain" : foreach ($values as $key => $value) { // Create right DN // $dn = 'cn=postmaster,vd='.$key.','.LDAP_BASE; $dn = 'vd='.$key.','.LDAP_BASE; // (string) needed for TRUE and FALSE not real boolean... $entry[$ga[1]] = (string)$ga[2]; // Change single value $r = phamm_modify ($dn,$entry); } break; case "postmaster" : foreach ($values as $key => $value) { // Create right DN // $dn = 'cn=postmaster,vd='.$key.','.LDAP_BASE; $dn = 'cn=postmaster,vd='.$key.','.LDAP_BASE; // (string) needed for TRUE and FALSE not real boolean... $entry[$ga[1]] = (string)$ga[2]; // Change single value $r = phamm_modify ($dn,$entry); } break; endswitch; return $r; } ?> phamm-0.5.18/lib/xhtml.php0000644000175300017530000010057111206455051014321 0ustar phammphamm * Copyright (C) 2004,2008 Alessandro De Zorzi and Mirko Grava * * This file is part of Phamm. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ function page_start() { global $action; $tag = ''; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= "\t".''.ORG_TITLE; if (isset($action)) $tag .= ' - '.str_replace('_',' ',$action); $tag .= ''."\n"; $tag .= "\t".''."\n"; $tag .= "\t".''."\n"; $tag .= ''."\n"; $tag .= ""."\n"; return $tag; } function page_end() { $tag = '
'; $tag .= ''; $tag .= ''; if (HIDE_VERSION != 1) { $tag .="Phamm"; $tag .= sprintf(_("Ver. %s"),VERSION); $tag .= ""; } $tag .= ''."\n"; $tag .= ''."\n"; return $tag; } function page_exit() { $tag = ''."\n"; $tag .= ''."\n"; return $tag; } /** * Simple login form **/ function login_form() { if (isset($_POST["login_username"])) $login_username = $_POST["login_username"]; else $login_username = null; $tag = ''."\n"; $tag .= "\"Phamm"."\n"; if (HIDE_VERSION != 1) { $tag .= ""; $tag .= sprintf(_("Ver. %s"),VERSION); $tag .= ""."\n"; } $tag .= "
"."\n"; $tag .= "
"."\n"; $tag .= ""."\n"; $tag .= ""."\n"; $tag .= ""."\n"; $tag .= ""."\n"; $tag .= ""."\n"; $tag .= ""."\n"; $tag .= "
"._("Login Name")."
"._("Password")."
"."\n"; $tag .= ""."\n"; $tag .= "
"."\n"; return $tag; } /** * Set the style name **/ function style_set() { $style = 'phamm'; return $style; } /** * Prepare XHTML tag CSS style **/ function style_load($style) { return true; } /** * Prepare a XHTML domains list (attributes are plugin related) * * @param array $vds The domains * @param array $values The attributes * @return mixed **/ function domains_list($vds,$values) { $tag = '
'; $tag .= ''; $tag .= ''; $tag .= ''; $tag .= ''; $tag .= ''."\n"; if (isset($values["ATTRIBUTES"])) { foreach ($values["ATTRIBUTES"] as $key=>$value) { // Show only attributes with
'; $tag .= sprintf(ngettext("Domain (%d)", "Domains (%d)", $vds["count"]), $vds["count"]); $tag .= '
value if (isset($values["ATTRIBUTES"][$key]["TABLE"])) { $label = (isset($values["ATTRIBUTES"][$key]["PRETTYNAME"]) ? $values["ATTRIBUTES"][$key]["PRETTYNAME"] : $key); $tag .= ''."\n"; } } } $tag .= ''; $tag .= ''; $tag .= ''; foreach ($vds as $vd) { $domain = $vd["vd"][0]; if ($domain) // @todo primo valore null? { $postmaster = phamm_search ('vd='.$domain.','.LDAP_BASE,'cn=postmaster'); $domain_values = phamm_search ('vd='.$domain.','.LDAP_BASE,'vd='.$domain); $tag .= ''; // Group action checkbox $tag .= ''; // Domain name and link $tag .= ''; // Other attributes (current plugin) if (isset($values["ATTRIBUTES"])) { foreach ($values["ATTRIBUTES"] as $key => $value) { $reverse = (isset($values["ATTRIBUTES"][$key]["REVERSE"]) ? 1 : null); $cron = (isset($values["ATTRIBUTES"][$key]["CRON"]) ? 1 : null); if (isset($values["ATTRIBUTES"][$key]["TABLE"])) { $key_lower = strtolower($key); $tag .= '
'.gettext($label).'
'; $tag .= $domain; $tag .= ''; // Show only attributes with value if (isset($domain_values[0][$key_lower][0])) { // The value $val = $domain_values[0][$key_lower][0]; // The reverse values $rev = ($val == 'TRUE' ? 'FALSE' : 'TRUE'); if (isset($values["ATTRIBUTES"][$key]["TABLENOEDIT"])) $tag .= $val; elseif (isset($values["ATTRIBUTES"][$key]["BOOL"])) $tag .= tof_icon('domains['.$domain.']',$val,'group_actions&command=domain;'.$key.';'.$rev,$reverse,$cron); else $tag .= $val; } elseif (isset($postmaster[0][$key_lower][0])) { // The value $val = $postmaster[0][$key_lower][0]; // The reverse values $rev = ($val == 'TRUE' ? 'FALSE' : 'TRUE'); if ($val == 'TRUE' || $val == 'FALSE') $tag .= tof_icon('domains['.$domain.']',$val,'group_actions&command=postmaster;'.$key.';'.$rev,$reverse,$cron); else $tag .= $val; } $tag .= ''; } } } $tag .= ''; } } $tag .= ''; $tag .= '
'; // End tag inside action_select() function return $tag; } /** * **/ function accounts_list($domain,$values,$initial) { global $pn; global $pv; global $action; // Rapresentative ObjectClass $myObjectClass = (isset($pv[$pn]["ACCOUNT"]["OBJECTCLASSES"]) ? key($pv[$pn]["ACCOUNT"]["OBJECTCLASSES"]) : 'virtualMailAccount'); if (isset($initial)) $account_array = phamm_search ('vd='.$domain.','.LDAP_BASE,'(&(objectClass='.$myObjectClass.')(!(cn=postmaster))(!(mail=abuse@*))(mail='.$initial.'*))'); else $account_array = phamm_search ('vd='.$domain.','.LDAP_BASE,'(&(objectClass='.$myObjectClass.')(!(cn=postmaster))(!(mail=abuse@*)))'); $tag = '
'; $tag .= ''; $tag .= ''; $tag .= ''; $tag .= ''; $tag .= ''."\n"; $tag .= ''."\n"; if (count($values) > 0) { foreach ($values["ATTRIBUTES"] as $key=>$value) { if (isset($values["ATTRIBUTES"][$key]["TABLE"])) { $label = (isset($values["ATTRIBUTES"][$key]["PRETTYNAME"]) ? $values["ATTRIBUTES"][$key]["PRETTYNAME"] : $key); $tag .= ''."\n"; } } } $tag .= ''; $tag .= ''; $tag .= ''; foreach ($account_array as $account) { $mail = $account["mail"][0]; if (isset($mail)) // @todo empty row { $tag .= ''; // Group action checkbox $tag .= ''; // Account name and link $tag .= ''; $tag .= ''; // Other attributes (current plugin) if (isset($values["ATTRIBUTES"])) { foreach ($values["ATTRIBUTES"] as $key=>$value) { $reverse = (isset($values["ATTRIBUTES"][$key]["REVERSE"]) ? 1 : null); $cron = (isset($values["ATTRIBUTES"][$key]["CRON"]) ? 1 : null); if (isset($values["ATTRIBUTES"][$key]["TABLE"])) { $key_lower = strtolower($key); $tag .= ''."\n"; } } } $tag .= ''."\n"; } } $tag .= ''; $tag .= '
'; $tag .= sprintf(ngettext("Account (%d)", "Accounts (%d)", $account_array["count"]), $account_array["count"]); $tag .= ''._("Common Name").''.gettext($label).'
'; $tag .= $mail; $tag .= ''.stripslashes($account["cn"][0]).''; if (isset($account[$key_lower][0])) { $val = $account[$key_lower][0]; $rev = ($val == 'TRUE' ? 'FALSE' : 'TRUE'); if (isset($values["ATTRIBUTES"][$key]["TABLENOEDIT"])) $tag .= $val; elseif (isset($values["ATTRIBUTES"][$key]["BOOL"])) $tag .= tof_icon('accounts['.$mail.']',$val,'group_actions&command=account;'.$key.';'.$rev,$reverse,$cron); // Print Standard Value else { if (isset($value["MULTIPLIER"]) && in_array($action,array('modify_account','domain_property','domain_view'))) $tag .= $account[$key_lower][0] / $value["MULTIPLIER"]; else $tag .= $val; } } $tag .= '
'; return $tag; } /** * **/ function form_add_domain () { $tag = ''; $tag .= ''; $tag .= ''; $tag .= '
'; return $tag; } /** * Create a XHTML form for plugin attribute * * @author Alessandro De Zorzi * * @param string $p_name The plugin name * @param array $attributes The attributes * @return mixed **/ function form_template($p_name,$attributes,$myvalues,$skip_table=null) { global $action; global $minAuthLevel; $tag = ''; if (!isset($skip_table)) $tag .= ''; if (is_array($attributes)) foreach ($attributes as $key => $attr) { if (!isset($hidden)) $tag .= '"; } // Exception, if last array attribute is hidden // XHTML Syntax required to close a TR if (isset($hidden)) $tag .= ""; if (!isset($skip_table)) $tag .= "
'; // Set attributes $name = strtolower($key); $hidden = (isset($attr["HIDDEN"]) ? 'type="hidden"' : null); $minAuthLevel = (isset($attr["MINAUTHLEVEL"]) ? $attr["MINAUTHLEVEL"] : 0); $size = (isset($attr["SIZE"]) ? 'size="'.$attr["SIZE"].'"' : null); $maxlength = (isset($attr["MAXLENGHT"]) ? strtolower($attr["MAXLENGTH"]) : null); $subordinated = (isset($attr["SUBORDINATED"]) ? strtoupper($attr["SUBORDINATED"]) : null); $subordinatedreverse = (isset($attr["SUBORDINATEDREVERSE"]) ? strtoupper($attr["SUBORDINATEDREVERSE"]) : null); // Set XHTML Tags $required = (isset($attr["REQUIRED"]) ? ' *' : null); // Set Default value $value = ''; // Set standard value if (isset($myvalues[$p_name][$name])) $value = $myvalues[$p_name][$name]; // Existing value elseif (isset($myvalues[0][$name][0])) { // If attr is multiple if (isset($attr["MULTIPLE"])) $value = $myvalues[0][$name]; else $value = $myvalues[0][$name][0]; } // Multiplier (Ex. Quota x 1024) if (isset($attr["MULTIPLIER"]) && in_array($action,array('modify_account','domain_property'))) { $value = ( $value / $attr["MULTIPLIER"]); } // Action add_account elseif (isset($attr["DEFAULT"]) && ($action == 'add_account' || $action == 'add_domain')) { if (preg_match('/^=php\.(\w+)\((.*)\)$/',$attr["DEFAULT"],$matches)) { $args = preg_split('/,/',$matches[2]); $function_name = $matches[1]; switch ($function_name) : case "Value" : foreach ($args as $arg) { // Global vars if (preg_match('/^%(\w+)(\|.+)?(\/[lU])?%/U',$arg,$matches)) { $var_name = $matches[1]; global $$var_name; $value .= $$var_name; } // POST vars elseif (preg_match('/^\+(\w+)(\|.+)?(\/[lU])?\+/U',$arg,$matches)) { $var_name = $matches[1]; $value .= $_POST[$var_name]; } else $value .= $arg; } break; // Call PHP Function default : if (function_exists($function_name)) { // Escape a string to be used as a shell argument foreach ($args as $arg) $args_escaped = escapeshellarg($arg); $value = call_user_func_array($function_name,$args_escaped); } break; endswitch; } else { $value = $attr["DEFAULT"]; } } // Hide values if SUBORDINATED to another if (isset($attr["SUBORDINATED"])) { if (isset($myvalues[0][strtolower($subordinated)][0])) $hidden = ($myvalues[0][strtolower($subordinated)][0] == "TRUE" ? null : 1); elseif (isset($myvalues[$p_name][strtolower($subordinated)])) $hidden = ($myvalues[$p_name][strtolower($subordinated)] == "TRUE" ? null : 1); else $hidden = 1; } if (isset($attr["SUBORDINATEDREVERSE"])) { if (isset($myvalues[0][strtolower($subordinatedreverse)][0])) $hidden = ($myvalues[0][strtolower($subordinatedreverse)][0] == "FALSE" ? null : 1); elseif (isset($myvalues[$p_name][strtolower($subordinatedreverse)])) $hidden = ($myvalues[$p_name][strtolower($subordinatedreverse)] == "FALSE" ? null : 1); else $hidden = 1; } if (!isset($hidden)) { $label = (isset($attr["PRETTYNAME"]) ? $attr["PRETTYNAME"] : $key); $tag .= gettext($label); $tag .= $required; $tag .= ""; } if (isset($attr["BOOL"]) && !isset($hidden)) { $reverse = (isset($attr["REVERSE"]) ? 1 : null); $tag .= trueorfalse("values[".$p_name."]",$value,$name,$reverse); } // Options (select) elseif (isset($attr["OPTIONS"]) && !isset($hidden)) { if ($_SESSION["login"]["level"] < $minAuthLevel) $tag .= $value; else { $tag .= ''."\n\n"; } } elseif (isset($attr["DATE"]) && !isset($hidden)) { $current_date = ($value ? $value : date('Y'.'-'.'m'.'-'.'d')); if ($_SESSION["login"]["level"] < $minAuthLevel) $tag .= $value; else $tag .= date_input('values_date['.$p_name.']['.$name.']',$current_date,$format='ymd'); } elseif (isset($attr["TEXTAREA"]) && !isset($hidden)) { if ($_SESSION["login"]["level"] < $minAuthLevel) $tag .= nl2br($value); else { // Show box to add multiple values $tag .= '
"; } } elseif (isset($attr["MULTIPLE"]) && !isset($hidden)) { // Show box to add multiple values $tag .= '
"; // Show the values if (is_array($value)) { for ($i=0; $i < $value["count"]; $i++) { $tag .= ''; $tag .= $value[$i]."
"; } } } elseif (isset($attr["SUBORDINATEDDELETE"]) && $value) { $tag .= ''; $tag .= $value."
"; } else { if (isset($hidden)) $input_type = 'hidden'; else $input_type = 'text'; // Show Value Only if auth level > level required if ($_SESSION["login"]["level"] >= $minAuthLevel) $tag .= ''; elseif (!isset($hidden)) $tag .= $value; } if (!isset($hidden)) $tag .= "
"; return $tag; } /** * Print a form to add or modify a domain * * @package Phamm * @author Alessandro De Zorzi * * @param string $domain_new * @param string $action * @param array $values * @return mixed **/ function form_add_domain_2 ($domain_new, $action, $values, $values_postmaster) { global $plugins; global $pv; global $domain; if (in_array($action,array('update_account','modify_account'))) $submit_label = _("Modify domain"); else $submit_label = _("Add new domain"); $tag = '
'."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; foreach ($pv as $name => $p_value) { if ($p_value["ISDOMAINRELATED"]) { $class = 'pluginActive'; $tag .= ''."\n"; } } $tag .= '
'._("Domain").''.$domain_new.'
'._("Password").'
'._("Confirm Password").'
'."\n"; $tag .= ''."\n"; $tag .= ''.$p_value["LABEL"].''."\n"; $tag .= ''."\n"; // Load domain values if (isset($p_value["DOMAIN"]["ATTRIBUTES"])) { $tag .= form_template('domain',$p_value["DOMAIN"]["ATTRIBUTES"],$values)."\n"; } if (isset($p_value["POSTMASTER"]["ATTRIBUTES"])) { $tag .= form_template($name,$p_value["POSTMASTER"]["ATTRIBUTES"], $values_postmaster)."\n"; } $tag .= '
'."\n"; $tag .= ''."\n"; $tag .= '
'."\n"; return $tag; } /** * **/ function form_add_account () { global $domain; $tag = '
'."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= '
'."\n\n"; return $tag; } /** * **/ function form_add_account_2 ($account_new,$action,$values) { global $plugins; global $pv; global $pn; global $domain; global $givenName; global $sn; #global $values; global $plugins_exclusion; if (in_array($action,array('modify_account','update_account'))) $submit_label = _("Modify account"); else $submit_label = _("Add new account"); $tag = '
'."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $i = 0; foreach ($pv as $name => $p_value) { // Skip form if plugin is defined in $plugins_exclusion (mail||alias) if (in_array($name,$plugins_exclusion)) { // Search if the firsh OBJECTCLASSES defined in XML is present if (in_array($action,array('modify_account','update_account'))) { if (isset($values[0]["objectclass"])) $show_form = (in_array(key($p_value["ACCOUNT"]["OBJECTCLASSES"]),$values[0]["objectclass"]) ? true : false); else $show_form = isset($values[$name]); } else $show_form = ($name == $pn || !in_array($pn,$plugins_exclusion) ? true : false); } else $show_form = true; if ($show_form) if ($p_value["ISACCOUNTRELATED"]) { $tag .= ''."\n"; } } $tag .= '
'._("Account").''.$account_new.'
'._("Password").'
'._("Confirm Password").'
'._("Name").'
'._("Surname").'
'."\n"; if (in_array($name,$plugins_exclusion)) $tag .= ''."\n"; else $tag .= ''."\n"; $tag .= ''.$p_value["LABEL"].''."\n"; $tag .= ''."\n"; $tag .= form_template($name,$p_value["ACCOUNT"]["ATTRIBUTES"],$values)."\n"; $tag .= '
'."\n"; $tag .= ''."\n"; $tag .= '
'."\n"; return $tag; } /** * Print a navigation bar with letters capital * * @package Phamm * @author Alessandro De Zorzi **/ function navigation ($initial) { global $domain; global $account; global $mail; global $action; $tag = ''."\n\n"; return $tag; } /** * @author Alessandro De Zorzi * * @return mixed **/ function trueorfalse($table,$value,$field,$reverse) { global $minAuthLevel; $tag = ''; if (isset($reverse)) { $false = 'TRUE'; $true = 'FALSE'; $img = ($value == 'TRUE' ? 'FALSE' : 'TRUE'); } else { $false = 'FALSE'; $true = 'TRUE'; $img = $value; } $false_label = ($false == 'FALSE' ? _("NO") : _("YES")); $true_label = ($true == 'TRUE' ? _("YES") : _("NO")); $tag .= ' '; if ($_SESSION["login"]["level"] >= $minAuthLevel) { $js_string = ($field == 'vacationactive' ? 'onchange="subordinatedelete.checked=true;"' : ''); $tag .= '"."\n\n"; } else { $tag .= ($value=='TRUE' ? $true_label : $false_label); } return $tag; } /* * */ function action_select($dispaly) { global $pv; $group_actions = array(); // Alias require immediate cancellation if ($_SESSION["phamm"]["pn"] == 'alias') $group_actions[] = "account;delete;TRUE;Delete;0"; $attribute_array = array(); $p_active = $_SESSION["phamm"]["pn"]; $values = ($pv[$p_active]); if ($dispaly == 'domain') { if (isset($values["DOMAIN"]["ATTRIBUTES"])) $attribute_array = array_merge($attribute_array,$values["DOMAIN"]["ATTRIBUTES"]); if (isset($values["POSTMASTER"]["ATTRIBUTES"])) $attribute_array = array_merge($attribute_array,$values["POSTMASTER"]["ATTRIBUTES"]); } elseif ($dispaly == 'account') { if (isset($values["ACCOUNT"]["ATTRIBUTES"])) $attribute_array = array_merge($attribute_array,$values["ACCOUNT"]["ATTRIBUTES"]); } foreach ($attribute_array as $attribute_name => $attribute_values) { $is_bool = (isset($attribute_values["BOOL"]) ? $attribute_values["BOOL"] : null); $is_table = (isset($attribute_values["TABLE"]) ? $attribute_values["TABLE"] : null); $prettyname = (isset($attribute_values["PRETTYNAME"]) ? $attribute_values["PRETTYNAME"] : null); $is_reverse = (isset($attribute_values["REVERSE"]) ? 1 : 0); if ($is_bool && $is_table) { $group_actions[] = $dispaly.';'.$attribute_name.';TRUE;'.$prettyname.';'.$is_reverse; $group_actions[] = $dispaly.';'.$attribute_name.';FALSE;'.$prettyname.';'.$is_reverse; } } // Open
tag inside domains_list() function $tag = ''; $tag .= ''."\n"; $tag .= '"; $tag .= ''."\n"; $tag .= "
"."\n\n"; return $tag; } /* * */ function tof_icon($table,$value,$tof_action,$reverse=null,$cron=null) { if (isset($reverse)) $value = ($value == 'TRUE' ? 'FALSE' : 'TRUE'); if (isset($cron) && $value == 'TRUE') $value = 'waiting'; $tag = ''; return $tag; } /** * Format date input with select YYYY-MM-DD **/ function date_input($name,$current_date,$format='ymd') { $tag = ''; if(preg_match("/-/", $current_date)) { list($year,$month,$day) = split("-", $current_date); } else { $year = substr($current_date,0,4); $month = substr($current_date,4,2); $day = substr($current_date,6,2); } // Days $tag .= '"; // Months $tag .= '"; // Years $this_year = date('Y'); $min_year = ( $this_year - 1 ); $max_year = ( $this_year + 4 ); $tag .= '"; return $tag; } /** * Create a select with languages **/ function locale_select() { global $supported_languages; $tag = '
'; $tag .= '\n"; $tag .= "
\n\n"; return $tag; } function form_catch_all($domain) { $tag = '
'._("Catch-all").'
'; $tag .= '
'."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= ''."\n"; $tag .= '
'; $tag .= ''."\n"; $tag .= '
'."\n"; return $tag; } ?> phamm-0.5.18/lib/plugin.php0000644000175300017530000000430411061015210014444 0ustar phammphamm * Copyright (C) 2004,2008 Alessandro De Zorzi and Mirko Grava * * This file is part of Phamm. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* * Generate the plugin menu * * @author Alessandro De Zorzi * @return mixed */ function plugins_menu () { global $plugins; global $pv; global $action; $tag = ""."\n"; foreach ($plugins as $plugin) { if ($_SESSION["login"]["level"] >= $pv[$plugin]["MINAUTHLEVEL"]) { if ($_SESSION["phamm"]["pn"] == $plugin) $tag .= ''."\n"; } } $tag .= '
'; else $tag .= ''; $tag .= ''; # @todo $tag .= strtoupper($plugin); $tag .= ''; $tag .= '
'."\n\n"; return $tag; } /** * Load plugins info from XML files into array * * @package Phamm * @author Alessandro De Zorzi * * @return array $p_values **/ function plugins_load() { global $plugins; $pv = array(); foreach ($plugins as $plugin) { $file = '../plugins/'.$plugin.'.xml'; if (file_exists($file)) { $xml2array = xml2array($file); $pv = array_merge($pv, $xml2array); } } return $pv; } ?> phamm-0.5.18/lib/locale.php0000644000175300017530000000231711055456634014435 0ustar phammphamm * Copyright (C) 2004,2008 Alessandro De Zorzi and Mirko Grava * * This file is part of Phamm. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * Set right locales from config, user input, auto... * * @todo * @author Alessandro De Zorzi * * @return string **/ function locale_set($language) { global $supported_languages; if (array_key_exists($language,$supported_languages)) return $language; else return 'en_GB'; } ?> phamm-0.5.18/lib/login.php0000644000175300017530000001006211055456634014302 0ustar phammphamm * Copyright (C) 2004,2008 Alessandro De Zorzi and Mirko Grava * * This file is part of Phamm. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * Try to generate DN from $login_username * * @author Alessandro De Zorzi * * @param string $login_username * @return string $dn **/ function login_dn_costructor($login_username) { // @todo $proposed will be real DN and level if (strpos($login_username, '=') && strpos($login_username, ',')) { $proposed["dn"] = $login_username; $proposed["login_username"] = $login_username; } elseif (strpos($login_username, '@')) { $login = explode ('@',$login_username); // Postmaster if ( $login[0] == PHAMM_DOMAIN_ADMIN_NAME ) { $proposed["dn"] = 'cn='.$login[0].',vd='.$login[1].','.LDAP_BASE; $proposed["level"] = 4; $proposed["domain"] = $login[1]; $proposed["login_username"] = $login_username; } // User else { $proposed["dn"] = 'mail='.$login_username.',vd='.$login[1].','.LDAP_BASE; $proposed["level"] = 2; $proposed["domain"] = $login[1]; $proposed["login_username"] = $login_username; } } // Manager elseif ('cn='.$login_username.','.SUFFIX == BINDDN) { $proposed["dn"] = 'cn='.$login_username.','.SUFFIX; $proposed["level"] = 10; $proposed["domain"] = ''; $proposed["login_username"] = $login_username; } // Login user without @DOMAIN elseif (defined('DEFAULT_DOMAIN')) { $proposed["dn"] = 'mail='.$login_username.'@'.DEFAULT_DOMAIN.',vd='.DEFAULT_DOMAIN.','.LDAP_BASE; $proposed["level"] = 2; $proposed["domain"] = DEFAULT_DOMAIN; $proposed["login_username"] = $login_username.'@'.DEFAULT_DOMAIN; } // Postmaster without postmaster@ else { $proposed["dn"] = 'cn=postmaster,vd='.$login_username.','.LDAP_BASE; $proposed["level"] = 4; $proposed["domain"] = $login_username; $proposed["login_username"] = 'postmaster@'.$login_username; } return $proposed; } /** * Try login * * @todo Clean values with special functions * * @param string $dn * @param string $login_password * @return mixed **/ function login_try($connect, $proposed, $login_password,$login_username) { $r = ldap_bind($connect, $proposed["dn"], $login_password); if ($r) { $_SESSION["login"]["dn"] = strtolower($proposed["dn"]); $_SESSION["phamm"]["domain"] = strtolower($proposed["domain"]); $_SESSION["login"]["username"] = strtolower($proposed["login_username"]); $_SESSION["login"]["level"] = $proposed["level"]; $_SESSION["login"]["password"] = $login_password; // @todo crypt it return true; } return false; } /** * Try bind * * @todo Clean values with special functions * * @param string $dn * @param string $password * @return bool $r **/ function bind_try($connect, $dn, $password) { //$r = @ldap_bind($connect, $proposed["dn"], $login_password); $r = ldap_bind($connect, $dn, $password); return $r; } /** * Check if user are logged * * @return mixed **/ function login_check() { if (isset($_SESSION["login"]["dn"])) return true; else return false; } /** * Destroy user session * * @return mixed **/ function logout() { session_destroy(); } ?> phamm-0.5.18/po/0000755000175300017530000000000011354605736012333 5ustar phammphammphamm-0.5.18/po/da_DK.po0000644000175300017530000002547611252123025013632 0ustar phammphammmsgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: 2009-03-19 18:47+0100\n" "PO-Revision-Date: 2009-09-09 16:34+0100\n" "Last-Translator: Alice Kærast \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Danish\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" #: ../www-data/main.php:201 #, php-format msgid "%s modified" msgstr "" #: ../www-data/main.php:614 #, php-format msgid "%s not added!" msgstr "" #: ../lib/xhtml.php:997 msgid "...execute a command" msgstr "" #: ../lib/xhtml.php:759 msgid "Account" msgstr "Konto" #: ../www-data/main.php:608 #, php-format msgid "Account %s successfully added" msgstr "" #: ../lib/xhtml.php:282 #, php-format msgid "Account (%d)" msgid_plural "Brugerkonti (%d)" msgstr[0] "Brugerkonti (%d)" msgstr[1] "Brugerkonti (%d)" #: ../www-data/main.php:374 msgid "Account or Alias already exists" msgstr "" # type: Content of: #: ../plugins/alias.xml:44 #: ../plugins/mail.xml:52 #: ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Aktiv" #: ../lib/xhtml.php:1131 msgid "Add catch-all address" msgstr "" #: ../lib/xhtml.php:727 #: ../lib/xhtml.php:751 msgid "Add new account" msgstr "" #: ../lib/xhtml.php:381 #: ../lib/xhtml.php:662 msgid "Add new domain" msgstr "" #: ../lib/xhtml.php:851 msgid "All" msgstr "Alle" #: ../lib/xhtml.php:835 msgid "All domains" msgstr "Alle domæner" #: ../www-data/main.php:349 #, php-format msgid "An Unexpected Error Occurred during %s Addition!" msgstr "" #: ../www-data/main.php:107 msgid "Bye!" msgstr "Farvel!" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "" #: ../www-data/main.php:94 msgid "Can't contact LDAP server" msgstr "" #: ../www-data/main.php:429 msgid "Catch all" msgstr "" #: ../www-data/main.php:427 msgid "Catch all active" msgstr "" #: ../lib/xhtml.php:1118 msgid "Catch-all" msgstr "" #: ../www-data/main.php:218 msgid "Changes have not performed" msgstr "" #: ../lib/common.php:485 msgid "Code " msgstr "" #: ../lib/xhtml.php:284 msgid "Common Name" msgstr "" #: ../lib/xhtml.php:676 #: ../lib/xhtml.php:765 msgid "Confirm Password" msgstr "Bekræft Adgangskode" #: ../www-data/main.php:69 msgid "Connection to LDAP Server Failed!" msgstr "" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "Oprettelsesdag" # type: Content of: #: ../plugins/mail.xml:65 #: ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "Slet" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Destination" #: ../lib/xhtml.php:670 msgid "Domain" msgstr "Domæne" #: ../www-data/main.php:339 #, php-format msgid "Domain %s successfully added" msgstr "" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domæner (%d)" msgstr[0] "Domæner (%d)" msgstr[1] "Domæner (%d)" #: ../www-data/main.php:417 msgid "Domain property" msgstr "" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Fejl:" #: ../lib/xhtml.php:1015 msgid "Execute command" msgstr "" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "FAX" msgstr "" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "FTP Kvote Mb" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "FTP Status" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "GID nummer" #: ../www-data/main.php:96 msgid "Generic Error: " msgstr "Generel Fejl:" # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Home Phone" msgstr "" #: ../lib/common.php:485 msgid "LDAP Error: " msgstr "" #: ../lib/xhtml.php:113 msgid "Login" msgstr "Log ind" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "" #: ../www-data/main.php:92 msgid "Login Username or Password not valid." msgstr "" #: ../www-data/main.php:165 #, php-format msgid "Logout %s" msgstr "Log ud %s" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Postkasse" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Maksimal Kvote" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Mobile" msgstr "" #: ../lib/xhtml.php:749 msgid "Modify account" msgstr "Rediger konto" #: ../lib/xhtml.php:660 msgid "Modify domain" msgstr "Rediger domæne" #: ../lib/xhtml.php:919 #: ../lib/xhtml.php:920 msgid "NO" msgstr "NEJ" #: ../lib/xhtml.php:768 msgid "Name" msgstr "Navn" #: ../www-data/main.php:481 msgid "Name is not valid" msgstr "" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "Pager" msgstr "" #: ../lib/xhtml.php:109 #: ../lib/xhtml.php:673 #: ../lib/xhtml.php:762 msgid "Password" msgstr "Adgangskode" #: ../lib/common.php:285 msgid "Password contains special chars" msgstr "" #: ../lib/common.php:282 msgid "Password too short!" msgstr "" #: ../lib/common.php:279 msgid "Passwords don't match!" msgstr "" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Kvote" # type: Content of: #: ../plugins/alias.xml:51 #: ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "" # type: Content of: #: ../plugins/alias.xml:65 #: ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "" #: ../www-data/main.php:398 msgid "SPAM Tags level are not set correctly!" msgstr "" #: ../lib/xhtml.php:1003 msgid "Set" msgstr "Indstil" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "" #: ../www-data/main.php:376 msgid "Special Characters not Allowed in E-mail address" msgstr "" #: ../lib/xhtml.php:771 msgid "Surname" msgstr "Efternavn" #: ../www-data/main.php:483 msgid "Surname is not valid" msgstr "" #: ../www-data/main.php:235 msgid "Syntax not valid or special chars found in domain name" msgstr "" # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Telephone" msgstr "Telefon" # type: Content of: #: ../plugins/ftp.xml:52 #: ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "UID" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "UID Nummer" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "" #: ../lib/xhtml.php:63 #: ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "Ver. %s" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "" # type: Content of: #: ../plugins/alias.xml:58 #: ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Advarsel:" # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "" #: ../lib/xhtml.php:919 #: ../lib/xhtml.php:920 msgid "YES" msgstr "JA" #: ../lib/common.php:73 msgid "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "" #: ../www-data/main.php:771 #, php-format msgid "account %s not updated!" msgstr "" #: ../lib/common.php:73 msgid "click here" msgstr "klik her" #: ../www-data/main.php:400 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "" #: ../www-data/main.php:344 #, php-format msgid "domain %s not added!" msgstr "" #: ../www-data/main.php:402 msgid "please, insert a forward destination or disable Forward!" msgstr "" phamm-0.5.18/po/Makefile0000644000175300017530000000112111165155376013766 0ustar phammphamm#!/bin/bash # Makefile to generate POT # LOCALDIR = ../../locale all: @echo Please, specify a target [pot,all-mo] all-mo: @for dir in $(LOCALDIR) ; \ do \ echo Doubled word check in... ; \ done pot: # Generate updated phamm.pot file # cp messages_header phamm.pot po4a-gettextize -o tags="" -o tagsonly=1 -f xml \ -m ../plugins/alias.xml \ -m ../plugins/ftp.xml \ -m ../plugins/mail.xml \ -m ../plugins/person.xml \ -m ../plugins/proxy.xml \ -p phamm.pot find ../ -name *.php -exec xgettext --keyword=_ -L PHP -j -o phamm.pot --omit-header -s {} \; phamm-0.5.18/po/it_IT.po0000644000175300017530000003073511142022542013672 0ustar phammphamm# Italian Phamm Translation # Copyright (c) 2004,2008 Alessandro De Zorzi, Mirko Grava # This file is distributed under the same license as the Phamm package. # # Alessandro De Zorzi , 2008. # msgid "" msgstr "" "Project-Id-Version: phamm 0.5.13\n" "POT-Creation-Date: 2008-09-16 18:57+0300\n" "PO-Revision-Date: 2008-09-07 18:38+0300\n" "Last-Translator: Alessandro De Zorzi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../www-data/main.php:200 #, php-format msgid "%s modified" msgstr "%s modificato" #: ../www-data/main.php:596 #, php-format msgid "%s not added!" msgstr "%n non aggiunto!" #: ../lib/xhtml.php:961 msgid "...execute a command" msgstr "...esegui comando" #: ../lib/xhtml.php:987 msgid "...select an action" msgstr "...seleziona una azione" #: ../lib/xhtml.php:738 msgid "Account" msgstr "Account" #: ../www-data/main.php:590 #, php-format msgid "Account %s successfully added" msgstr "" #: ../lib/xhtml.php:281 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "Account (%d)" msgstr[1] "Account (%d)" #: ../www-data/main.php:365 msgid "Account or Alias already exists" msgstr "Account o alias esistente" # type: Content of: #: ../plugins/alias.xml:44 ../plugins/mail.xml:52 ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Attivo" #: ../lib/xhtml.php:1112 msgid "Add catch-all address" msgstr "Aggiungi indirizzo catch-all" #: ../lib/xhtml.php:706 ../lib/xhtml.php:730 msgid "Add new account" msgstr "Aggiungi un nuovo account" #: ../lib/xhtml.php:380 ../lib/xhtml.php:634 msgid "Add new domain" msgstr "Aggiungi un nuovo dominio" #: ../lib/xhtml.php:834 msgid "All" msgstr "Tutti" #: ../lib/xhtml.php:818 msgid "All domains" msgstr "Tutti i domini" #: ../www-data/main.php:110 msgid "Bye!" msgstr "Ciao!" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "Può modificare gli account" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "Può modificare Anti-Virus" #: ../www-data/main.php:97 msgid "Can't contact LDAP server" msgstr "Impossibile contattare il server LDAP" #: ../www-data/main.php:417 msgid "Catch all" msgstr "Catch all" #: ../www-data/main.php:415 msgid "Catch all active" msgstr "Catch all attivo" #: ../www-data/main.php:217 msgid "Changes have not performed" msgstr "Modifiche non effettuate" #: ../lib/common.php:482 msgid "Code " msgstr "Codice " # type: Content of: #: ../lib/xhtml.php:283 ../lib/xhtml.php:747 msgid "Common Name" msgstr "Nome" #: ../www-data/main.php:468 msgid "Common Name is not valid" msgstr "Nome non valido" #: ../lib/xhtml.php:648 ../lib/xhtml.php:744 msgid "Confirm Password" msgstr "Conferma Password" #: ../www-data/main.php:72 msgid "Connection to LDAP Server Failed!" msgstr "Connession al server LDAP fallita!" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "Data di creazione" # type: Content of: #: ../plugins/mail.xml:65 ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "Elimina" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Destinazione" #: ../lib/xhtml.php:642 msgid "Domain" msgstr "Dominio" #: ../www-data/main.php:335 #, php-format msgid "Domain %s successfully added" msgstr "Dominio %s aggiunto correttamente" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "Dominio (%d)" msgstr[1] "Domini (%d)" #: ../www-data/main.php:405 msgid "Domain property" msgstr "Proprietà dominio" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Errore: " #: ../lib/xhtml.php:971 ../lib/xhtml.php:997 msgid "Execute command" msgstr "Esegui comando" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "FAX" msgstr "FAX" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "FTP quota Mb" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "Stato FTP" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "Forward attivo" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "Numero GID" #: ../www-data/main.php:99 msgid "Generic Error: " msgstr "Errore generico: " # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Given Name" msgstr "Given Name" # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "Home Directory" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Home Phone" msgstr "Home Phone" #: ../lib/common.php:482 msgid "LDAP Error: " msgstr "Errore LDAP: " #: ../lib/xhtml.php:113 msgid "Login" msgstr "Accedi" # type: Content of: #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "Nome utente" #: ../www-data/main.php:95 msgid "Login Username or Password not valid." msgstr "Nome utente o password errata." #: ../www-data/main.php:168 #, php-format msgid "Logout %s" msgstr "Esci %s" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "Mail Autoreply" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Mailbox" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "Destinazione" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Max Quota" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "Numero massimo alias" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "Numero massimo e-mail" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "Mobile" msgstr "Telefonino" #: ../lib/xhtml.php:728 msgid "Modify account" msgstr "Modifica account" #: ../lib/xhtml.php:632 msgid "Modify domain" msgstr "Modifica dominio" #: ../lib/xhtml.php:901 ../lib/xhtml.php:902 msgid "NO" msgstr "NO" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "Other Transport" # type: Content of: #: ../plugins/person.xml:56 #, no-wrap msgid "Pager" msgstr "Pager" #: ../lib/xhtml.php:109 ../lib/xhtml.php:645 ../lib/xhtml.php:741 msgid "Password" msgstr "Password" #: ../lib/common.php:282 msgid "Password contains special chars" msgstr "La Password contiene caratteri speciali" #: ../lib/common.php:279 msgid "Password too short!" msgstr "Password troppo corta!" #: ../lib/common.php:276 msgid "Passwords don't match!" msgstr "Le Password non coincidono!" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "Postfix Transport" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "Proxy Host" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Quota" # type: Content of: #: ../plugins/alias.xml:51 ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "SMTP Auth" # type: Content of: #: ../plugins/alias.xml:65 ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "Protezione SPAM" #: ../www-data/main.php:386 msgid "SPAM Tags level are not set correctly!" msgstr "I livelli di SPAM non sono impostati correttamente!" #: ../lib/xhtml.php:967 msgid "Set" msgstr "Imposta" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "Spam Kill Level" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "Spam Tag Level" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "Spam Tag2 Level" #: ../www-data/main.php:367 msgid "Special Characters not Allowed in E-mail address" msgstr "I caratteri speciali non sono ammessi nell'indirizzo e-mail" #: ../lib/xhtml.php:750 msgid "Surname" msgstr "Cognome" #: ../www-data/main.php:470 msgid "Surname is not valid" msgstr "Cognome non valido" #: ../www-data/main.php:235 msgid "Syntax not valid or special chars found in domain name" msgstr "" "Sintassi non valida oppure trovati caratteri speciali nel nome a dominio" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Telephone" msgstr "Telefono" # type: Content of: #: ../plugins/ftp.xml:52 ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "UID" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "Numero UID" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "Vacation" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "Fine Vacation" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "Vacation Forward" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "Messaggio Vacation" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "Inizio Vacation" #: ../lib/xhtml.php:63 ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "Ver. %s" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "Virtual Home" # type: Content of: #: ../plugins/alias.xml:58 ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "Protezione Virus" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Attenzione: " # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "Web Access" #: ../lib/xhtml.php:901 ../lib/xhtml.php:902 msgid "YES" msgstr "SI" #: ../lib/common.php:73 msgid "" "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "" "Sarai automaticamente indirizzato a una nuova pagina in alcuni secondi.
Se non accade, segui il link:" #: ../www-data/main.php:743 #, php-format msgid "account %s not updated!" msgstr "account %s non aggiornato!" #: ../lib/common.php:73 msgid "click here" msgstr "clicca qui" #: ../www-data/main.php:388 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "non attiavare Forward e Vacation Forward contemporaneamente!" #: ../www-data/main.php:340 #, php-format msgid "domain %s not added!" msgstr "domain %s non aggiunto!" #: ../www-data/main.php:390 msgid "please, insert a forward destination or disable Forward!" msgstr "inserire una destinazione per il forward o disabilitare il Forward!" phamm-0.5.18/po/pl_PL.po0000644000175300017530000003057311121721464013676 0ustar phammphamm# Polish Phamm Translation # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the Phamm package. # Sławomir Paszkiewicz , 2008. # msgid "" msgstr "" "Project-Id-Version: phamm 0.5.13\n" "POT-Creation-Date: 2008-12-12 11:46+0100\n" "PO-Revision-Date: 2008-12-12 11:46+0100\n" "Last-Translator: Sławomir Paszkiewicz \n" "Language-Team: POLISH \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: utf-8" #: ../www-data/main.php:204 #, php-format msgid "%s modified" msgstr "%s zmodyfikowany" #: ../www-data/main.php:605 #, php-format msgid "%s not added!" msgstr "%s nie dodano!" #: ../lib/xhtml.php:984 msgid "...execute a command" msgstr "...wykonaj komendę" #: ../lib/xhtml.php:750 msgid "Account" msgstr "Konto" #: ../www-data/main.php:599 #, php-format msgid "Account %s successfully added" msgstr "Konto %s zostało pomyślnie dodane" #: ../lib/xhtml.php:281 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "Konto (%d)" msgstr[1] "Konta (%d)" #: ../www-data/main.php:369 msgid "Account or Alias already exists" msgstr "Konto lub Alias już istnieje" # type: Content of: #: ../plugins/alias.xml:44 ../plugins/mail.xml:52 ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Aktywne" #: ../lib/xhtml.php:1110 msgid "Add catch-all address" msgstr "Dodaj adres catch-all" #: ../lib/xhtml.php:718 ../lib/xhtml.php:742 msgid "Add new account" msgstr "Dodaj nowe konto" #: ../lib/xhtml.php:380 ../lib/xhtml.php:649 msgid "Add new domain" msgstr "Dodaj nową domenę" #: ../lib/xhtml.php:842 msgid "All" msgstr "Wszystko" #: ../lib/xhtml.php:826 msgid "All domains" msgstr "Wszystkie domeny" #: ../www-data/main.php:110 msgid "Bye!" msgstr "Żegnaj!" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "Może edytować Konta" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "Może edytować Antywirusa" #: ../www-data/main.php:97 msgid "Can't contact LDAP server" msgstr "Nie można połączyć się z serwerem LDAP" #: ../www-data/main.php:424 msgid "Catch all" msgstr "Catch all" #: ../www-data/main.php:422 msgid "Catch all active" msgstr "Catch all aktywne" #: ../lib/xhtml.php:1097 msgid "Catch-all" msgstr "Catch-all" #: ../www-data/main.php:221 msgid "Changes have not performed" msgstr "Zmiany nie zostały wykonane" #: ../lib/common.php:485 msgid "Code " msgstr "Kod" #: ../lib/xhtml.php:283 msgid "Common Name" msgstr "Nazwa zwyczajowa" #: ../lib/xhtml.php:663 ../lib/xhtml.php:756 msgid "Confirm Password" msgstr "Potwierdź hasło" #: ../www-data/main.php:72 msgid "Connection to LDAP Server Failed!" msgstr "Łączenie do serwera LDAP nieudane!" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "Data utworzenia" # type: Content of: #: ../plugins/mail.xml:65 ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "Usunięte" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Cel" #: ../lib/xhtml.php:657 msgid "Domain" msgstr "Domena" #: ../www-data/main.php:339 #, php-format msgid "Domain %s successfully added" msgstr "Domenta %s została pomyślnie dodana" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "Domena (%d)" msgstr[1] "Domeny (%d)" #: ../www-data/main.php:412 msgid "Domain property" msgstr "Właściwości domeny" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Błąd: " #: ../lib/xhtml.php:994 msgid "Execute command" msgstr "Wykonaj komendę" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "FAX" msgstr "FAX" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "FTP Quota Mb" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "Status FTP" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "Przekierowanie aktywne" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "Numer GID" #: ../www-data/main.php:99 msgid "Generic Error: " msgstr "Typowy Błąd: " # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "Katalog Domowy" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Home Phone" msgstr "Telefon Domowy" #: ../lib/common.php:485 msgid "LDAP Error: " msgstr "Błąd LDAP: " #: ../lib/xhtml.php:113 msgid "Login" msgstr "Zaloguj" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "Nazwa użytkownika" #: ../www-data/main.php:95 msgid "Login Username or Password not valid." msgstr "Nazwa użytkownika lub Hasło jest nieprawidłowe" #: ../www-data/main.php:168 #, php-format msgid "Logout %s" msgstr "Wyloguj %s" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "Automatyczna odpowiedź na maila" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Skrzynka pocztowa" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "Maildrop" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Quota maksymalna" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "Maksymalna liczba Aliasów" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "Maksymalna liczba Maili" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Mobile" msgstr "Komórka" #: ../lib/xhtml.php:740 msgid "Modify account" msgstr "Modyfikuj konto" #: ../lib/xhtml.php:647 msgid "Modify domain" msgstr "Modyfikuj domenę" #: ../lib/xhtml.php:910 ../lib/xhtml.php:911 msgid "NO" msgstr "NIE" #: ../lib/xhtml.php:759 msgid "Name" msgstr "Imię" #: ../www-data/main.php:476 msgid "Name is not valid" msgstr "Nazwa nie jest poprawna" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "Inny Transport" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "Pager" msgstr "Pager" #: ../lib/xhtml.php:109 ../lib/xhtml.php:660 ../lib/xhtml.php:753 msgid "Password" msgstr "Hasło" #: ../lib/common.php:285 msgid "Password contains special chars" msgstr "Hasło zawiera znaki specjalne" #: ../lib/common.php:282 msgid "Password too short!" msgstr "Hasło jest za krótkie!" #: ../lib/common.php:279 msgid "Passwords don't match!" msgstr "Hasło się nie zgadza!" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "Transport Postfix" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "Host Proxy" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Quota" # type: Content of: #: ../plugins/alias.xml:51 ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "Autoryzacja SMTP" # type: Content of: #: ../plugins/alias.xml:65 ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "Sprawdzanie SPAMu" #: ../www-data/main.php:393 msgid "SPAM Tags level are not set correctly!" msgstr "Poziom tagów SPAM nie jest poprawny!" #: ../lib/xhtml.php:990 msgid "Set" msgstr "Ustaw" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "Poziom Spam Kill" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "Poziom Spam Tag" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "Poziom Spam Tag2" #: ../www-data/main.php:371 msgid "Special Characters not Allowed in E-mail address" msgstr "Znaki specjalne nie są dozwolone w adresie E-mail" #: ../lib/xhtml.php:762 msgid "Surname" msgstr "Nazwisko" #: ../www-data/main.php:478 msgid "Surname is not valid" msgstr "Nazwisko nie jest poprawne" #: ../www-data/main.php:239 msgid "Syntax not valid or special chars found in domain name" msgstr "Składnia nie jest poprawna lub domena zawiera znaki specjalne" # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Telephone" msgstr "Telefon" # type: Content of: #: ../plugins/ftp.xml:52 ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "UID" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "Numer UID" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "Wakacje" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "Koniec Wakacji" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "Przekierowanie Wakacji" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "Informacja Wakacyjna" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "Początek Wakacji" #: ../lib/xhtml.php:63 ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "Wersja %s" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "Virtualny Katalog Domowy" # type: Content of: #: ../plugins/alias.xml:58 ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "Sprawdzanie Wirusów" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Ostrzeżenie: " # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "Dostęp WWW" #: ../lib/xhtml.php:910 ../lib/xhtml.php:911 msgid "YES" msgstr "TAK" #: ../lib/common.php:73 msgid "" "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "Zostaniesz automatycznie przekierowany na nową strone w przeciągu kilku sekund.
Jeśli tak się nie stanie, kliknij proszę na poniższy link:" #: ../www-data/main.php:763 #, php-format msgid "account %s not updated!" msgstr "konto %s nie uaktualnione!" #: ../lib/common.php:73 msgid "click here" msgstr "kliknij tutaj" #: ../www-data/main.php:395 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "nie włączaj Przekierowania ani Przekierowania wakacyjnego w tym samym czasie!" #: ../www-data/main.php:344 #, php-format msgid "domain %s not added!" msgstr "domena %s nie została dodana!" #: ../www-data/main.php:397 msgid "please, insert a forward destination or disable Forward!" msgstr "proszę, podaj adres docelowy lub wyłącz Przekierowanie!" phamm-0.5.18/po/vi_VN.po0000644000175300017530000002402711066442120013703 0ustar phammphamm# Vietnamese translation for Phamm. # Copyright (c) 2004,2008 Alessandro De Zorzi, Mirko Grava # This file is distributed under the same license as the Phamm package. # # Clytie Siddall , 2008. # msgid "" msgstr "" "Project-Id-Version: phamm 0.5.13\n" "POT-Creation-Date: 2008-09-13 08:46+0300\n" "PO-Revision-Date: 2008-06-26 23:45+0930\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: LocFactoryEditor 1.7b3\n" #: ../www-data/main.php:200 #, php-format msgid "%s modified" msgstr "%s bị sửa đổi" #: ../www-data/main.php:596 #, php-format msgid "%s not added!" msgstr "Chưa thêm %s !" #: ../lib/xhtml.php:961 msgid "...execute a command" msgstr "...thực thi một câu lệnh" #: ../lib/xhtml.php:987 msgid "...select an action" msgstr "...chọn một hành vi" #: ../lib/xhtml.php:738 msgid "Account" msgstr "Tài khoản" #: ../www-data/main.php:590 #, php-format msgid "Account %s successfully added" msgstr "" "Tài khoản %s đã được thêm" #: ../lib/xhtml.php:281 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "Tài khoản (%d)" #: ../www-data/main.php:365 msgid "Account or Alias already exists" msgstr "Tài khoản hay Bí danh đã có" #: ../plugins/alias.xml:44 #: ../plugins/mail.xml:52 #: ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Hoạt động" #: ../lib/xhtml.php:1112 msgid "Add catch-all address" msgstr "Thêm địa chỉ bắt tất cả" #: ../lib/xhtml.php:706 #: ../lib/xhtml.php:730 msgid "Add new account" msgstr "Thêm tài khoản mới" #: ../lib/xhtml.php:380 #: ../lib/xhtml.php:634 msgid "Add new domain" msgstr "Thêm miền mới" #: ../lib/xhtml.php:834 msgid "All" msgstr "Tất cả" #: ../lib/xhtml.php:818 msgid "All domains" msgstr "Mọi miền" #: ../www-data/main.php:110 msgid "Bye!" msgstr "Tạm biệt nhé" #: ../lib/xhtml.php:283 #: ../lib/xhtml.php:747 msgid "CN" msgstr "TC" #: ../www-data/main.php:468 msgid "CN is not valid" msgstr "TC không hợp lệ" #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "Có quyền sửa tài khoản" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "Có quyền sửa Chống Vi-rút" #: ../www-data/main.php:97 msgid "Can't contact LDAP server" msgstr "Không thể liên lạc với trình phục vụ LDAP" #: ../www-data/main.php:417 msgid "Catch all" msgstr "Bắt tất cả" #: ../www-data/main.php:415 msgid "Catch all active" msgstr "Bắt mọi cái vẫn hoạt động" #: ../www-data/main.php:217 msgid "Changes have not performed" msgstr "Chưa thay đổi gì" #: ../lib/common.php:482 msgid "Code " msgstr "Mã" #: ../lib/xhtml.php:648 #: ../lib/xhtml.php:744 msgid "Confirm Password" msgstr "Xác nhận mật khẩu" #: ../www-data/main.php:72 msgid "Connection to LDAP Server Failed!" msgstr "Không thành công kết nối đến máy phục vụ LDAP !" #: ../plugins/mail.xml:288 #, no-wrap msgid "Creation Date" msgstr "Ngày tạo" #: ../plugins/mail.xml:65 #: ../plugins/mail.xml:159 #, no-wrap msgid "Delete" msgstr "Xoá" #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Đích" #: ../lib/xhtml.php:642 msgid "Domain" msgstr "Miền" #: ../www-data/main.php:335 #, php-format msgid "Domain %s successfully added" msgstr "Miền %s đã được thêm" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "Miền (%d)" #: ../www-data/main.php:405 msgid "Domain property" msgstr "Thuộc tính miền" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Lỗi: " #: ../lib/xhtml.php:971 #: ../lib/xhtml.php:997 msgid "Execute command" msgstr "Thực thi câu lệnh" #: ../plugins/person.xml:52 #, no-wrap msgid "FAX" msgstr "Điện thư" #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "MB hạn ngạch FTP" #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "Trạng thái FTP" #: ../plugins/mail.xml:200 #, no-wrap msgid "Forward Active" msgstr "Chuyển tiếp hoạt động" #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "Số GID" #: ../www-data/main.php:99 msgid "Generic Error: " msgstr "Lỗi chung: " #: ../plugins/person.xml:36 #, no-wrap msgid "Given Name" msgstr "Tên hay gọi" #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "Thư mục chính" #: ../plugins/person.xml:44 #, no-wrap msgid "Home Phone" msgstr "Điện thoại nhà" #: ../lib/common.php:482 msgid "LDAP Error: " msgstr "" "Lỗi LDAP: " #: ../lib/xhtml.php:113 msgid "Login" msgstr "Đăng nhập" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "Tên đăng nhập" #: ../www-data/main.php:95 msgid "Login Username or Password not valid." msgstr "Sai đăng nhập tên người dùng hay mật khẩu." #: ../www-data/main.php:168 #, php-format msgid "Logout %s" msgstr "Đăng xuất %s" #: ../plugins/mail.xml:153 #, no-wrap msgid "Mail Autoreply" msgstr "Thư tự động trả lời" #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Hộp thư" #: ../plugins/mail.xml:208 #, no-wrap msgid "Maildrop" msgstr "Thả thư" #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Hạn ngạch trên" #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "Số tối đa các Bí danh" #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "Số tối đa các thư" #: ../plugins/person.xml:48 #, no-wrap msgid "Mobile" msgstr "Di động" #: ../lib/xhtml.php:728 msgid "Modify account" msgstr "Sửa tài khoản" #: ../lib/xhtml.php:632 msgid "Modify domain" msgstr "Sửa miền" #: ../lib/xhtml.php:901 #: ../lib/xhtml.php:902 msgid "NO" msgstr "KHÔNG" #: ../plugins/mail.xml:168 #, no-wrap msgid "Other Transport" msgstr "Cơ chế truyền khác" #: ../plugins/person.xml:56 #, no-wrap msgid "Pager" msgstr "Máy nhắn tin" #: ../lib/xhtml.php:109 #: ../lib/xhtml.php:645 #: ../lib/xhtml.php:741 msgid "Password" msgstr "Mật khẩu" #: ../lib/common.php:282 msgid "Password contains special chars" msgstr "Mật khẩu chứa ký tự đặc biệt" #: ../lib/common.php:279 msgid "Password too short!" msgstr "Mật khẩu quá ngắn !" #: ../lib/common.php:276 msgid "Passwords don't match!" msgstr "" "Hai mật khẩu không trùng !" #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "Truyền Postfix" #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "Máy ủy nhiệm" #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Hạn ngạch" #: ../plugins/alias.xml:51 #: ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "Xác thực SMTP" #: ../lib/xhtml.php:750 msgid "SN" msgstr "SN" #: ../www-data/main.php:470 msgid "SN is not valid" msgstr "SN không hợp lệ" #: ../plugins/alias.xml:65 #: ../plugins/mail.xml:220 #, no-wrap msgid "SPAM Check" msgstr "Kiểm tra thư rác" #: ../www-data/main.php:386 msgid "SPAM Tags level are not set correctly!" msgstr "Sai đặt mức các thẻ thư rác." #: ../lib/xhtml.php:967 msgid "Set" msgstr "Đặt" #: ../plugins/mail.xml:228 #, no-wrap msgid "Spam Kill Level" msgstr "Cấp giết thư rác" #: ../plugins/mail.xml:268 #, no-wrap msgid "Spam Tag Level" msgstr "Mức thẻ thư rác" #: ../plugins/mail.xml:248 #, no-wrap msgid "Spam Tag2 Level" msgstr "Mức thẻ thư rác 2" #: ../www-data/main.php:367 msgid "Special Characters not Allowed in E-mail address" msgstr "Không cho phép địa chỉ thư điện tử chứa ký tự đặc biệt" #: ../www-data/main.php:235 msgid "Syntax not valid or special chars found in domain name" msgstr "Sai cú pháp hay tên miền chứa ký tự đặc biệt" #: ../plugins/person.xml:40 #, no-wrap msgid "Telephone" msgstr "Điện thoại" #: ../plugins/ftp.xml:52 #: ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "UID" #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "Số UID" #: ../plugins/mail.xml:174 #, no-wrap msgid "Vacation" msgstr "Nghỉ phép" #: ../plugins/mail.xml:195 #, no-wrap msgid "Vacation End" msgstr "Cuối nghỉ phép" #: ../plugins/mail.xml:185 #, no-wrap msgid "Vacation Forward" msgstr "Chuyển tiếp do nghỉ phép" #: ../plugins/mail.xml:180 #, no-wrap msgid "Vacation Info" msgstr "Thông tin nghỉ phép" #: ../plugins/mail.xml:190 #, no-wrap msgid "Vacation Start" msgstr "Đầu nghỉ phép" #: ../lib/xhtml.php:63 #: ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "Phạm vi. %s" #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "Nhà ảo" #: ../plugins/alias.xml:58 #: ../plugins/mail.xml:212 #, no-wrap msgid "Virus Check" msgstr "Kiểm tra vi-rút" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Cảnh báo : " #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "Truy cập Web" #: ../lib/xhtml.php:901 #: ../lib/xhtml.php:902 msgid "YES" msgstr "CÓ" #: ../lib/common.php:73 msgid "" "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "Một trang mới sẽ tự động nạp trong vòng vài giây.
Không thì nhấn vào liên kết này:" #: ../www-data/main.php:743 #, php-format msgid "account %s not updated!" msgstr "tài khoản %s chưa được cập nhật !" #: ../lib/common.php:73 msgid "click here" msgstr "nhấn đây" #: ../www-data/main.php:388 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "không nên kích hoạt đồng thời hai chức năng Chuyển tiếp và Chuyển tiếp do nghỉ phép !" #: ../www-data/main.php:340 #, php-format msgid "domain %s not added!" msgstr "miền %s chưa được thêm !" #: ../www-data/main.php:390 msgid "please, insert a forward destination or disable Forward!" msgstr "hãy nhập một đích đến chuyển tiếp, hoặc tắt chức năng Chuyển tiếp !" phamm-0.5.18/po/hu_HU.po0000644000175300017530000003115611142022461013670 0ustar phammphamm# Hungarian Phamm Translation # Copyright (c) 2004,2009 Alessandro De Zorzi, Mirko Grava # This file is distributed under the same license as the Phamm package. # Zsolt Jonas # msgid "" msgstr "" "Project-Id-Version: phamm 0.5.14\n" "POT-Creation-Date: 2008-10-15 12:50+0300\n" "PO-Revision-Date: 2009-02-01 19:03+0100\n" "Last-Translator: Zsolt Jonas \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 7bit\n" #: ../www-data/main.php:204 #, php-format msgid "%s modified" msgstr "%s módosítva" #: ../www-data/main.php:605 #, php-format msgid "%s not added!" msgstr "%s nincs hozzáadva!" #: ../lib/xhtml.php:984 msgid "...execute a command" msgstr "...parancs futtatása" #: ../lib/xhtml.php:750 msgid "Account" msgstr "Postafiók" #: ../www-data/main.php:599 #, php-format msgid "Account %s successfully added" msgstr "%s postafiók sikeresen hozzáadva" #: ../lib/xhtml.php:281 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "Postafiók (%d)" msgstr[1] "Postafiókok (%d)" #: ../www-data/main.php:369 msgid "Account or Alias already exists" msgstr "Postafiók vagy álnév (alias) már létezik" # type: Content of: #: ../plugins/alias.xml:44 ../plugins/mail.xml:52 ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Aktív" #: ../lib/xhtml.php:1110 msgid "Add catch-all address" msgstr "Gyűjtő (catch-all) postafiók hozzáadása" #: ../lib/xhtml.php:718 ../lib/xhtml.php:742 msgid "Add new account" msgstr "Új postafiók hozzáadása" #: ../lib/xhtml.php:380 ../lib/xhtml.php:649 msgid "Add new domain" msgstr "Új domain hozzáadása" #: ../lib/xhtml.php:842 msgid "All" msgstr "Mind" #: ../lib/xhtml.php:826 msgid "All domains" msgstr "Összes domain" #: ../www-data/main.php:110 msgid "Bye!" msgstr "Viszlát!" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "Szerkeszthető postafiókok" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "Módosítható az Anti-Vírus állapota" #: ../www-data/main.php:97 msgid "Can't contact LDAP server" msgstr "Nem lehet kapcsolódni az LDAP kiszolgálóhoz" #: ../www-data/main.php:424 msgid "Catch all" msgstr "Gyűjtő postafiók" #: ../www-data/main.php:422 msgid "Catch all active" msgstr "Gyűjtó postafiók aktív" #: ../lib/xhtml.php:1097 msgid "Catch-all" msgstr "Gyűjtő postafiók címe" #: ../www-data/main.php:221 msgid "Changes have not performed" msgstr "A változások végrehajtása meghiusúlt" #: ../lib/common.php:485 msgid "Code " msgstr "Kód " #: ../lib/xhtml.php:283 msgid "Common Name" msgstr "Megjelenített név" #: ../lib/xhtml.php:663 ../lib/xhtml.php:756 msgid "Confirm Password" msgstr "Jelszó megerősítése" #: ../www-data/main.php:72 msgid "Connection to LDAP Server Failed!" msgstr "Hiba az LDAP kiszolgálóhoz történő kapcsolódása közben!" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "Létrehozva" # type: Content of: #: ../plugins/mail.xml:65 ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "Törlés" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Cél" #: ../lib/xhtml.php:657 msgid "Domain" msgstr "Domain" #: ../www-data/main.php:339 #, php-format msgid "Domain %s successfully added" msgstr "%s domain sikeresen hozzáadva" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "Domain (%d)" msgstr[1] "Domain-ek (%d)" #: ../www-data/main.php:412 msgid "Domain property" msgstr "Domain beállítás" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Hiba: " #: ../lib/xhtml.php:994 msgid "Execute command" msgstr "Parancs futtatása" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "FAX" msgstr "FAX" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "FTP Kvóta (MB)" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "FTP állapot" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "Továbbítás aktív" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "GID szám" #: ../www-data/main.php:99 msgid "Generic Error: " msgstr "Általános hiba: " # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "Home könyvtár" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Home Phone" msgstr "Otthoni telefonszám" #: ../lib/common.php:485 msgid "LDAP Error: " msgstr "LDAP hiba: " #: ../lib/xhtml.php:113 msgid "Login" msgstr "Belépés" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "Belépési azonosító" #: ../www-data/main.php:95 msgid "Login Username or Password not valid." msgstr "Hibás belépési azonosító vagy jelszó." #: ../www-data/main.php:168 #, php-format msgid "Logout %s" msgstr "Kilépés (%s)" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "Automatikus válaszüzenet" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Postaláda" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "Levél kézbesítő" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Max kvóta" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "Max álnevek (alias) száma" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "Max postafiókok száma" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Mobile" msgstr "Mobil" #: ../lib/xhtml.php:740 msgid "Modify account" msgstr "Postafiók módosítása" #: ../lib/xhtml.php:647 msgid "Modify domain" msgstr "Domain módosítása" #: ../lib/xhtml.php:910 ../lib/xhtml.php:911 msgid "NO" msgstr "NEM" #: ../lib/xhtml.php:759 msgid "Name" msgstr "Keresztnév" #: ../www-data/main.php:476 msgid "Name is not valid" msgstr "Hibás keresztnév" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "Más továbbító (transport)" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "Pager" msgstr "Személyhívó" #: ../lib/xhtml.php:109 ../lib/xhtml.php:660 ../lib/xhtml.php:753 msgid "Password" msgstr "Jelszó" #: ../lib/common.php:285 msgid "Password contains special chars" msgstr "A jelszó speciális karaktereket is tartalmaz" #: ../lib/common.php:282 msgid "Password too short!" msgstr "A jelszó túl rövid!" #: ../lib/common.php:279 msgid "Passwords don't match!" msgstr "A beírt jelszavak nem egyeznek!" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "Postfix továbbító (transport)" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "Proxy kiszolgáló" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Kvóta" # type: Content of: #: ../plugins/alias.xml:51 ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "SMTP azonosítás" # type: Content of: #: ../plugins/alias.xml:65 ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "SPAM szűrés" #: ../www-data/main.php:393 msgid "SPAM Tags level are not set correctly!" msgstr "SPAM jelölési szint nem helyes!" #: ../lib/xhtml.php:990 msgid "Set" msgstr "Beállít" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "Spam eldobási szint (Kill)" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "Spam jelölési szint (Tag)" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "Spam megjelölési szint (Tag2)" #: ../www-data/main.php:371 msgid "Special Characters not Allowed in E-mail address" msgstr "Speciális karakterek nem szerepelhetnek az e-mail címben" #: ../lib/xhtml.php:762 msgid "Surname" msgstr "Vezetéknév" #: ../www-data/main.php:478 msgid "Surname is not valid" msgstr "Hibás vezetéknév" #: ../www-data/main.php:239 msgid "Syntax not valid or special chars found in domain name" msgstr "Hibás vagy nem megengedett karaktereket tartalmazó domain név" # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Telephone" msgstr "Telefon" # type: Content of: #: ../plugins/ftp.xml:52 ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "UID" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "UID szám" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "Távollét" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "Távollét vége" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "Távollét alatti továbbítás" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "Távolléti üzenet" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "Távollét kezdete" #: ../lib/xhtml.php:63 ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "Változat: %s" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "Postafiókok könyvtára" # type: Content of: #: ../plugins/alias.xml:58 ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "Vírus ellenőrzés" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Figyelem: " # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "Web hozzáférés" #: ../lib/xhtml.php:910 ../lib/xhtml.php:911 msgid "YES" msgstr "IGEN" #: ../lib/common.php:73 msgid "" "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "" "Pár másodperc múlva átirányítunk egy új oldalra
Ha ez nem történik meg, akkor " #: ../www-data/main.php:763 #, php-format msgid "account %s not updated!" msgstr "%s postafiók nincs frissítve!" #: ../lib/common.php:73 msgid "click here" msgstr "kattints ide" #: ../www-data/main.php:395 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "ne engedélyezd egyszerre a Továbbítás és a Távollét Alatti Továbbítás funkciót" #: ../www-data/main.php:344 #, php-format msgid "domain %s not added!" msgstr "%s domain nincs hozzáadva!" #: ../www-data/main.php:397 msgid "please, insert a forward destination or disable Forward!" msgstr "kérlek, állíts be továbbítási címet vagy kapcsold ki a Továbbítást!" phamm-0.5.18/po/de_DE.po0000644000175300017530000003077411066442120013630 0ustar phammphamm# German Phamm Translation # Copyright (c) 2004,2008 Alessandro De Zorzi, Mirko Grava # This file is distributed under the same license as the Phamm package. # # Jan Dankert , 2008. # msgid "" msgstr "" "Project-Id-Version: phamm 0.5.13\n" "POT-Creation-Date: 2008-09-22 15:50+0300\n" "PO-Revision-Date: 2008-09-22 15:50+0300\n" "Last-Translator: Jan Dankert\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../www-data/main.php:204 #, php-format msgid "%s modified" msgstr "%s gendert" #: ../www-data/main.php:605 #, php-format msgid "%s not added!" msgstr "%s nicht hinzugefgt" #: ../lib/xhtml.php:979 msgid "...execute a command" msgstr "...einen Befehl ausfhren" #: ../lib/xhtml.php:1005 msgid "...select an action" msgstr "...eine Aktion auswhlen" #: ../lib/xhtml.php:747 msgid "Account" msgstr "" #: ../www-data/main.php:599 #, php-format msgid "Account %s successfully added" msgstr "Account %s wurde erfolgreich hinzugefgt" #: ../lib/xhtml.php:281 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "" msgstr[1] "" #: ../www-data/main.php:369 msgid "Account or Alias already exists" msgstr "Der Account oder der Alias existiert bereits" # type: Content of: #: ../plugins/alias.xml:44 ../plugins/mail.xml:52 ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Aktiv" #: ../lib/xhtml.php:1130 msgid "Add catch-all address" msgstr "Neue Catch-All-Adresse einrichten" #: ../lib/xhtml.php:715 ../lib/xhtml.php:739 msgid "Add new account" msgstr "Neuen Account einrichten" #: ../lib/xhtml.php:380 ../lib/xhtml.php:648 msgid "Add new domain" msgstr "Neue Domain hinzufgen" #: ../lib/xhtml.php:838 msgid "All" msgstr "Alle" #: ../lib/xhtml.php:822 msgid "All domains" msgstr "Alle Domains" #: ../www-data/main.php:110 msgid "Bye!" msgstr "Auf Wiedersehen!" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "Accounts bearbeiten" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "Bearbeite Antivirenprogramm" #: ../www-data/main.php:97 msgid "Can't contact LDAP server" msgstr "Keine Verbindung zum LDAP-Server mglich" #: ../www-data/main.php:424 msgid "Catch all" msgstr "Catch all" #: ../www-data/main.php:422 msgid "Catch all active" msgstr "Catch all aktiv" #: ../www-data/main.php:221 msgid "Changes have not performed" msgstr "Die nderungen wurden nicht durchgefhrt" #: ../lib/common.php:482 msgid "Code " msgstr "Code" #: ../lib/xhtml.php:283 msgid "Common Name" msgstr "Name" #: ../lib/xhtml.php:662 ../lib/xhtml.php:753 msgid "Confirm Password" msgstr "Kennwort besttigen" #: ../www-data/main.php:72 msgid "Connection to LDAP Server Failed!" msgstr "Keine Verbindung zum LDAP-Server mglich" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "Anlage-Datum" # type: Content of: #: ../plugins/mail.xml:65 ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "Entfernen" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Ziel" #: ../lib/xhtml.php:656 msgid "Domain" msgstr "Domain" #: ../www-data/main.php:339 #, php-format msgid "Domain %s successfully added" msgstr "Die Domain %s wurde erfolgreich hinzugefgt" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "Domain (%d)" msgstr[1] "Domains (%d)" #: ../www-data/main.php:412 msgid "Domain property" msgstr "Domain-Eigenschaft" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Fehler: " #: ../lib/xhtml.php:989 ../lib/xhtml.php:1015 msgid "Execute command" msgstr "Befehl ausfhren" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "FAX" msgstr "Telefax" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "FTP Speichergrenze (in MB)" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "FTP-Status" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "Weiterleitung aktiv" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "GID" #: ../www-data/main.php:99 msgid "Generic Error: " msgstr "Allgemeiner Programmfehler: " # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "Heimatverzeichnis" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Home Phone" msgstr "Telefon privat" #: ../lib/common.php:482 msgid "LDAP Error: " msgstr "Fehler bei LDAP-Zugriff" #: ../lib/xhtml.php:113 msgid "Login" msgstr "Anmeldung" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "Benutzername" #: ../www-data/main.php:95 msgid "Login Username or Password not valid." msgstr "Benutzername oder Kennwort nicht gltig." #: ../www-data/main.php:168 #, php-format msgid "Logout %s" msgstr "Abmelden" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "E-Mail automatische Antwort" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Anrufbeantworter" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "Maildrop" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Maximale Gre der Mailbox (Quota)" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "Maximale Anzahl von Aliases" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "Maximale Anzahl von E-Mail-Nachrichten" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Mobile" msgstr "Mobil" #: ../lib/xhtml.php:737 msgid "Modify account" msgstr "Account bearbeiten" #: ../lib/xhtml.php:646 msgid "Modify domain" msgstr "Domain ndern" #: ../lib/xhtml.php:905 ../lib/xhtml.php:906 msgid "NO" msgstr "NEIN" #: ../lib/xhtml.php:756 msgid "Name" msgstr "Name" #: ../www-data/main.php:476 msgid "Name is not valid" msgstr "Der Name ist ungltig" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "Anderer Transport" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "Pager" msgstr "Pager" #: ../lib/xhtml.php:109 ../lib/xhtml.php:659 ../lib/xhtml.php:750 msgid "Password" msgstr "Kennwort" #: ../lib/common.php:282 msgid "Password contains special chars" msgstr "Das Kennwort enthlt Sonderzeichen" #: ../lib/common.php:279 msgid "Password too short!" msgstr "Das Kennwort ist zu kurz!" #: ../lib/common.php:276 msgid "Passwords don't match!" msgstr "Die Kennwrter stimmen nicht berein!" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "Postfix Transport" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "Proxy Hostname" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Speicher (Quota)" # type: Content of: #: ../plugins/alias.xml:51 ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "SMTP Authentifizierung" # type: Content of: #: ../plugins/alias.xml:65 ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "SPAM-Prfung" #: ../www-data/main.php:393 msgid "SPAM Tags level are not set correctly!" msgstr "Die Spam Tags level sind nicht korrekt!" #: ../lib/xhtml.php:985 msgid "Set" msgstr "Set" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "Spam Ablehnungs-Level" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "Spam Markierungs-Level 1" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "Spam Markierungslevel 2" #: ../www-data/main.php:371 msgid "Special Characters not Allowed in E-mail address" msgstr "In E-Mail-Adressen sind keine Sonderzeichen erlaubt" #: ../lib/xhtml.php:759 msgid "Surname" msgstr "Nachname" #: ../www-data/main.php:478 msgid "Surname is not valid" msgstr "Der Nachname ist ungltig" #: ../www-data/main.php:239 msgid "Syntax not valid or special chars found in domain name" msgstr "Die Syntax ist ungltig oder es befinden sich Sonderzeichen im Domainnamen" # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Telephone" msgstr "Telefon" # type: Content of: #: ../plugins/ftp.xml:52 ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "UID" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "UID-Nummer" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "Abwesenheit" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "Abwesenheit-Ende" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "Abwesenheit-Weiterleitung" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "Abwesenheits-Information" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "Abwesenheit-Beginn" #: ../lib/xhtml.php:63 ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "Ver. %s" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "Virtuelles Heimatverzeichnis" # type: Content of: #: ../plugins/alias.xml:58 ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "Virus-Prfung" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Warnung" # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "Web-Adresse" #: ../lib/xhtml.php:905 ../lib/xhtml.php:906 msgid "YES" msgstr "JA" #: ../lib/common.php:73 msgid "" "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "Sie werden in wenigen Sekunden automatisch auf die nchste Seite weiterleitet. Falls dies nicht geschieht, folgen Sie bitte diesem Link:" #: ../www-data/main.php:757 #, php-format msgid "account %s not updated!" msgstr "Account %s wurde nicht aktualisiert!" #: ../lib/common.php:73 msgid "click here" msgstr "Hier klicken" #: ../www-data/main.php:395 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "Sie drfen Weiterleitung und Abwesenheitsnachricht nicht kombinieren!" #: ../www-data/main.php:344 #, php-format msgid "domain %s not added!" msgstr "Domain %s nicht hinzugefgt!" #: ../www-data/main.php:397 msgid "please, insert a forward destination or disable Forward!" msgstr "Bitte ein Weiterleitungsziel einfgen oder die Weiterleitung deaktivieren!" phamm-0.5.18/po/ru.po0000644000175300017530000003430111123407561013310 0ustar phammphamm# translation of ru.po to Russian # Copyright (c) 2004,2008 Alessandro De Zorzi, Mirko Grava # This file is distributed under the same license as the Phamm package. # # Igor V. Gots , 2005. # Yuri Kozlov , 2008. msgid "" msgstr "" "Project-Id-Version: phamm NEW\n" "POT-Creation-Date: 2008-10-15 09:56+0300\n" "PO-Revision-Date: 2008-10-15 22:21+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../www-data/main.php:204 #, php-format msgid "%s modified" msgstr "Значение %s изменено" #: ../www-data/main.php:605 #, php-format msgid "%s not added!" msgstr "%s не добавлено!" #: ../lib/xhtml.php:981 msgid "...execute a command" msgstr "...выполнение команды" #: ../lib/xhtml.php:747 msgid "Account" msgstr "Аккаунт" #: ../www-data/main.php:599 #, php-format msgid "Account %s successfully added" msgstr "Аккаунт %s добавлен" #: ../lib/xhtml.php:281 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "%d аккаунт" msgstr[1] "%d аккаунта" msgstr[2] "%d аккаунтов" #: ../www-data/main.php:369 msgid "Account or Alias already exists" msgstr "Аккаунт или псевдоним уже существуют" # type: Content of: #: ../plugins/alias.xml:44 ../plugins/mail.xml:52 ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Активен" #: ../lib/xhtml.php:1107 msgid "Add catch-all address" msgstr "Добавить адрес для всей почты" #: ../lib/xhtml.php:715 ../lib/xhtml.php:739 msgid "Add new account" msgstr "Добавить новый аккаунт" #: ../lib/xhtml.php:380 ../lib/xhtml.php:648 msgid "Add new domain" msgstr "Добавить новый домен" #: ../lib/xhtml.php:839 msgid "All" msgstr "Все" #: ../lib/xhtml.php:823 msgid "All domains" msgstr "Все домены" #: ../www-data/main.php:110 msgid "Bye!" msgstr "Пока!" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "Может редактировать аккаунты" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "Может управлять антивирусом" #: ../www-data/main.php:97 msgid "Can't contact LDAP server" msgstr "Не удалось связаться с сервером LDAP" #: ../www-data/main.php:424 msgid "Catch all" msgstr "Принимать всё" #: ../www-data/main.php:422 msgid "Catch all active" msgstr "Приём всей почты включён" #: ../lib/xhtml.php:1094 msgid "Catch-all" msgstr "Вся почта" #: ../www-data/main.php:221 msgid "Changes have not performed" msgstr "Изменения не внесены" #: ../lib/common.php:482 msgid "Code " msgstr "Код " #: ../lib/xhtml.php:283 msgid "Common Name" msgstr "Общее имя" #: ../lib/xhtml.php:662 ../lib/xhtml.php:753 msgid "Confirm Password" msgstr "Подтверждение пароля" #: ../www-data/main.php:72 msgid "Connection to LDAP Server Failed!" msgstr "Не удалось подключиться к серверу LDAP!" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "Дата создания" # type: Content of: #: ../plugins/mail.xml:65 ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "Удалить" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Назначение" #: ../lib/xhtml.php:656 msgid "Domain" msgstr "Домен" #: ../www-data/main.php:339 #, php-format msgid "Domain %s successfully added" msgstr "Домен %s добавлен" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "%d домен" msgstr[1] "%d домена" msgstr[2] "%d доменов" #: ../www-data/main.php:412 msgid "Domain property" msgstr "Свойства домена" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Ошибка: " #: ../lib/xhtml.php:991 msgid "Execute command" msgstr "Выполнить команду" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "FAX" msgstr "ФАКС" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "FTP-квота (Mб)" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "FTP-состояние" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "Пересылка включена" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "GID-номер" #: ../www-data/main.php:99 msgid "Generic Error: " msgstr "Общая ошибка: " # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "Домашний каталог" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Home Phone" msgstr "Домашний телефон" #: ../lib/common.php:482 msgid "LDAP Error: " msgstr "Ошибка LDAP: " #: ../lib/xhtml.php:113 msgid "Login" msgstr "Логин" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "Регистрационное имя" #: ../www-data/main.php:95 msgid "Login Username or Password not valid." msgstr "Неправильный логин или пароль." #: ../www-data/main.php:168 #, php-format msgid "Logout %s" msgstr "Завершение работы %s" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "Почтовый автоответчик" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Почтовый ящик" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "Maildrop" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Максимальная квота" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "Максимальное кол-во псевдонимов" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "Максимальное кол-во почты" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Mobile" msgstr "Мобильный" #: ../lib/xhtml.php:737 msgid "Modify account" msgstr "Изменить аккаунт" #: ../lib/xhtml.php:646 msgid "Modify domain" msgstr "Изменить домен" #: ../lib/xhtml.php:907 ../lib/xhtml.php:908 msgid "NO" msgstr "НЕТ" #: ../lib/xhtml.php:756 msgid "Name" msgstr "Имя" #: ../www-data/main.php:476 msgid "Name is not valid" msgstr "Неверное имя" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "Другой транспорт" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "Pager" msgstr "Пейджер" #: ../lib/xhtml.php:109 ../lib/xhtml.php:659 ../lib/xhtml.php:750 msgid "Password" msgstr "Пароль" #: ../lib/common.php:282 msgid "Password contains special chars" msgstr "Пароль содержит спецсимволы" #: ../lib/common.php:279 msgid "Password too short!" msgstr "Пароль слишком короткий!" #: ../lib/common.php:276 msgid "Passwords don't match!" msgstr "Пароли не совпадают!" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "Транспорт Postfix" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "Прокси-хост" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Квота" # type: Content of: #: ../plugins/alias.xml:51 ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "SMTP Auth" # type: Content of: #: ../plugins/alias.xml:65 ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "Проверка на спам" #: ../www-data/main.php:393 msgid "SPAM Tags level are not set correctly!" msgstr "Неправильно задан уровень меток спама!" #: ../lib/xhtml.php:987 msgid "Set" msgstr "Задан" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "Уровень для удаления спама" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "Уровень для пометки спама" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "Уровень для 2-й пометки спама" #: ../www-data/main.php:371 msgid "Special Characters not Allowed in E-mail address" msgstr "В почтовых адресах спецсимволы запрещены" #: ../lib/xhtml.php:759 msgid "Surname" msgstr "Фамилия" #: ../www-data/main.php:478 msgid "Surname is not valid" msgstr "Неверная фамилия" #: ../www-data/main.php:239 msgid "Syntax not valid or special chars found in domain name" msgstr "Неверный синтаксис или в доменном имени есть спецсимволы" # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Telephone" msgstr "Телефон" # type: Content of: #: ../plugins/ftp.xml:52 ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "UID" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "UID-номер" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "Временное отсутствие" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "Конец периода временного отсутствия" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "Пересылать во время отсутствия" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "Информация о временном отсутствии" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "Начало периода временного отсутствия" #: ../lib/xhtml.php:63 ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "Вер. %s" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "Виртуальный домашний каталог" # type: Content of: #: ../plugins/alias.xml:58 ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "Антивирусная проверка" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Предупреждение: " # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "Доступ через веб" #: ../lib/xhtml.php:907 ../lib/xhtml.php:908 msgid "YES" msgstr "ДА" #: ../lib/common.php:73 msgid "" "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "" "Через несколько секунд вы будете автоматически перенаправлены на новую страницу.
Если это не происходит, пройдите по ссылке:" #: ../www-data/main.php:757 #, php-format msgid "account %s not updated!" msgstr "аккаунт %s не обновлён!" #: ../lib/common.php:73 msgid "click here" msgstr "нажмите сюда" #: ../www-data/main.php:395 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "не включайте Пересылку и Пересылку во время отсутствия одновременно" #: ../www-data/main.php:344 #, php-format msgid "domain %s not added!" msgstr "домен %s не добавлен!" #: ../www-data/main.php:397 msgid "please, insert a forward destination or disable Forward!" msgstr "укажите адрес пересылки или выключите Пересылку!" phamm-0.5.18/po/phamm.pot0000644000175300017530000002511211165155376014162 0ustar phammphamm# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2009-03-19 18:47+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: ENCODING" #: ../www-data/main.php:201 #, php-format msgid "%s modified" msgstr "" #: ../www-data/main.php:614 #, php-format msgid "%s not added!" msgstr "" #: ../lib/xhtml.php:997 msgid "...execute a command" msgstr "" #: ../lib/xhtml.php:759 msgid "Account" msgstr "" #: ../www-data/main.php:608 #, php-format msgid "Account %s successfully added" msgstr "" #: ../lib/xhtml.php:282 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "" msgstr[1] "" #: ../www-data/main.php:374 msgid "Account or Alias already exists" msgstr "" # type: Content of: #: ../plugins/alias.xml:44 ../plugins/mail.xml:52 ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "" #: ../lib/xhtml.php:1131 msgid "Add catch-all address" msgstr "" #: ../lib/xhtml.php:727 ../lib/xhtml.php:751 msgid "Add new account" msgstr "" #: ../lib/xhtml.php:381 ../lib/xhtml.php:662 msgid "Add new domain" msgstr "" #: ../lib/xhtml.php:851 msgid "All" msgstr "" #: ../lib/xhtml.php:835 msgid "All domains" msgstr "" #: ../www-data/main.php:349 #, php-format msgid "An Unexpected Error Occurred during %s Addition!" msgstr "" #: ../www-data/main.php:107 msgid "Bye!" msgstr "" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "" #: ../www-data/main.php:94 msgid "Can't contact LDAP server" msgstr "" #: ../www-data/main.php:429 msgid "Catch all" msgstr "" #: ../www-data/main.php:427 msgid "Catch all active" msgstr "" #: ../lib/xhtml.php:1118 msgid "Catch-all" msgstr "" #: ../www-data/main.php:218 msgid "Changes have not performed" msgstr "" #: ../lib/common.php:485 msgid "Code " msgstr "" #: ../lib/xhtml.php:284 msgid "Common Name" msgstr "" #: ../lib/xhtml.php:676 ../lib/xhtml.php:765 msgid "Confirm Password" msgstr "" #: ../www-data/main.php:69 msgid "Connection to LDAP Server Failed!" msgstr "" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "" # type: Content of: #: ../plugins/mail.xml:65 ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "" #: ../lib/xhtml.php:670 msgid "Domain" msgstr "" #: ../www-data/main.php:339 #, php-format msgid "Domain %s successfully added" msgstr "" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "" msgstr[1] "" #: ../www-data/main.php:417 msgid "Domain property" msgstr "" #: ../lib/phamm.php:172 msgid "Error: " msgstr "" #: ../lib/xhtml.php:1015 msgid "Execute command" msgstr "" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "FAX" msgstr "" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "" #: ../www-data/main.php:96 msgid "Generic Error: " msgstr "" # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Home Phone" msgstr "" #: ../lib/common.php:485 msgid "LDAP Error: " msgstr "" #: ../lib/xhtml.php:113 msgid "Login" msgstr "" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "" #: ../www-data/main.php:92 msgid "Login Username or Password not valid." msgstr "" #: ../www-data/main.php:165 #, php-format msgid "Logout %s" msgstr "" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Mobile" msgstr "" #: ../lib/xhtml.php:749 msgid "Modify account" msgstr "" #: ../lib/xhtml.php:660 msgid "Modify domain" msgstr "" #: ../lib/xhtml.php:919 ../lib/xhtml.php:920 msgid "NO" msgstr "" #: ../lib/xhtml.php:768 msgid "Name" msgstr "" #: ../www-data/main.php:481 msgid "Name is not valid" msgstr "" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "Pager" msgstr "" #: ../lib/xhtml.php:109 ../lib/xhtml.php:673 ../lib/xhtml.php:762 msgid "Password" msgstr "" #: ../lib/common.php:285 msgid "Password contains special chars" msgstr "" #: ../lib/common.php:282 msgid "Password too short!" msgstr "" #: ../lib/common.php:279 msgid "Passwords don't match!" msgstr "" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "" # type: Content of: #: ../plugins/alias.xml:51 ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "" # type: Content of: #: ../plugins/alias.xml:65 ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "" #: ../www-data/main.php:398 msgid "SPAM Tags level are not set correctly!" msgstr "" #: ../lib/xhtml.php:1003 msgid "Set" msgstr "" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "" #: ../www-data/main.php:376 msgid "Special Characters not Allowed in E-mail address" msgstr "" #: ../lib/xhtml.php:771 msgid "Surname" msgstr "" #: ../www-data/main.php:483 msgid "Surname is not valid" msgstr "" #: ../www-data/main.php:235 msgid "Syntax not valid or special chars found in domain name" msgstr "" # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Telephone" msgstr "" # type: Content of: #: ../plugins/ftp.xml:52 ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "" #: ../lib/xhtml.php:63 ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "" # type: Content of: #: ../plugins/alias.xml:58 ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "" # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "" #: ../lib/xhtml.php:919 ../lib/xhtml.php:920 msgid "YES" msgstr "" #: ../lib/common.php:73 msgid "" "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "" #: ../www-data/main.php:771 #, php-format msgid "account %s not updated!" msgstr "" #: ../lib/common.php:73 msgid "click here" msgstr "" #: ../www-data/main.php:400 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "" #: ../www-data/main.php:344 #, php-format msgid "domain %s not added!" msgstr "" #: ../www-data/main.php:402 msgid "please, insert a forward destination or disable Forward!" msgstr "" phamm-0.5.18/po/fr_FR.po0000644000175300017530000003072211227356352013671 0ustar phammphamm# French Phamm Translation # Copyright (C) 2008 Aldo Reset. # This file is distributed under the same license as the phamm package. # Aldo Reset , 2008. # # msgid "" msgstr "" "Project-Id-Version: phamm 0.5.14\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-03-19 18:47+0100\n" "PO-Revision-Date: 2009-07-11 19:30+0100\n" "Last-Translator: Aldo Reset \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../www-data/main.php:201 #, php-format msgid "%s modified" msgstr "%s modifié" #: ../www-data/main.php:614 #, php-format msgid "%s not added!" msgstr "%s non ajouté" #: ../lib/xhtml.php:997 msgid "...execute a command" msgstr "...execute une commande" #: ../lib/xhtml.php:759 msgid "Account" msgstr "Compte" #: ../www-data/main.php:608 #, php-format msgid "Account %s successfully added" msgstr "Compte %s ajouté avec succès" #: ../lib/xhtml.php:282 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "Compte (%d)" msgstr[1] "Comptes (%d)" #: ../www-data/main.php:374 msgid "Account or Alias already exists" msgstr "Le compte ou l'alias existe déjà" # type: Content of: #: ../plugins/alias.xml:44 #: ../plugins/mail.xml:52 #: ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Actif" #: ../lib/xhtml.php:1131 msgid "Add catch-all address" msgstr "Ajouter un CatchAll" #: ../lib/xhtml.php:727 #: ../lib/xhtml.php:751 msgid "Add new account" msgstr "Créer un Compte" #: ../lib/xhtml.php:381 #: ../lib/xhtml.php:662 msgid "Add new domain" msgstr "Créer un domaine" #: ../lib/xhtml.php:851 msgid "All" msgstr "Tous" #: ../lib/xhtml.php:835 msgid "All domains" msgstr "Tous les domaines" #: ../www-data/main.php:349 #, php-format msgid "An Unexpected Error Occurred during %s Addition!" msgstr "Une erreur inattendue est survenue lors de l'ajout de %s!" #: ../www-data/main.php:107 msgid "Bye!" msgstr "Au Revoir !" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "Peut Editer Comptes" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "Peut Editer Anti-Virus" #: ../www-data/main.php:94 msgid "Can't contact LDAP server" msgstr "Impossible de joindre le serveur Ldap" #: ../www-data/main.php:429 msgid "Catch all" msgstr "CatchAll" #: ../www-data/main.php:427 msgid "Catch all active" msgstr "CatchAll Actif" #: ../lib/xhtml.php:1118 msgid "Catch-all" msgstr "CatchAll" #: ../www-data/main.php:218 msgid "Changes have not performed" msgstr "Les modifications n'ont pu être effectuées" #: ../lib/common.php:485 msgid "Code " msgstr "Code " #: ../lib/xhtml.php:284 msgid "Common Name" msgstr "Nom Commun" #: ../lib/xhtml.php:676 #: ../lib/xhtml.php:765 msgid "Confirm Password" msgstr "Confirmer le mot de Passe" #: ../www-data/main.php:69 msgid "Connection to LDAP Server Failed!" msgstr "La Connection au serveur Ldap a échoué!" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "Date de Création" # type: Content of: #: ../plugins/mail.xml:65 #: ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "Supprimer" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Destination" #: ../lib/xhtml.php:670 msgid "Domain" msgstr "Domaine" #: ../www-data/main.php:339 #, php-format msgid "Domain %s successfully added" msgstr "Domaine %s crée avec succès" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "Domaine (%d)" msgstr[1] "Domaines (%d)" #: ../www-data/main.php:417 msgid "Domain property" msgstr "Propriété du Domaine" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Erreur:" #: ../lib/xhtml.php:1015 msgid "Execute command" msgstr "Execute commande" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "FAX" msgstr "FAX" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "Quota FTP en Mo" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "FTP Status" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "Forward Actif" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "Numéro GID" #: ../www-data/main.php:96 msgid "Generic Error: " msgstr "Erreur Général: " # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "Répertoire Racine" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Home Phone" msgstr "Téléphone" #: ../lib/common.php:485 msgid "LDAP Error: " msgstr "Erreur LDAP" #: ../lib/xhtml.php:113 msgid "Login" msgstr "Login" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "Nom Login" #: ../www-data/main.php:92 msgid "Login Username or Password not valid." msgstr "Nom utilisateur ou mot de passe non valide" #: ../www-data/main.php:165 #, php-format msgid "Logout %s" msgstr "Logout %s" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "Mail Répondeur" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Mailbox" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "Maildrop" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Quota Maximum" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "Nombre Max d'Alias" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "Nombre Max de Mail" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Mobile" msgstr "Portable" #: ../lib/xhtml.php:749 msgid "Modify account" msgstr "Modifier compte" #: ../lib/xhtml.php:660 msgid "Modify domain" msgstr "Modifier domaine" #: ../lib/xhtml.php:919 #: ../lib/xhtml.php:920 msgid "NO" msgstr "NON" #: ../lib/xhtml.php:768 msgid "Name" msgstr "Nom" #: ../www-data/main.php:481 msgid "Name is not valid" msgstr "Nom pas valide" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "Autre Transport" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "Pager" msgstr "Pager" #: ../lib/xhtml.php:109 #: ../lib/xhtml.php:673 #: ../lib/xhtml.php:762 msgid "Password" msgstr "Mot de Passe" #: ../lib/common.php:285 msgid "Password contains special chars" msgstr "Mot de passe contient des caractères spéciaux" #: ../lib/common.php:282 msgid "Password too short!" msgstr "Mot de passe trop court!" #: ../lib/common.php:279 msgid "Passwords don't match!" msgstr "Les Mot de passe ne correspondent pas" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "Transport Postfix" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "Proxy" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Quota" # type: Content of: #: ../plugins/alias.xml:51 #: ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "SMTP Auth" # type: Content of: #: ../plugins/alias.xml:65 #: ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "Vérification SPAM" #: ../www-data/main.php:398 msgid "SPAM Tags level are not set correctly!" msgstr "Les Tags du SPAM ne sont pas corrects!" #: ../lib/xhtml.php:1003 msgid "Set" msgstr "Initialiser" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "Niveau suprimer SPAM" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "Niveau du TAG de SPAM" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "Niveau de TAG2 du SPAM" #: ../www-data/main.php:376 msgid "Special Characters not Allowed in E-mail address" msgstr "Les Caractères spéciaux ne sont pas autorisés dans une adresse mail" #: ../lib/xhtml.php:771 msgid "Surname" msgstr "Prénom" #: ../www-data/main.php:483 msgid "Surname is not valid" msgstr "Prénom non valide" #: ../www-data/main.php:235 msgid "Syntax not valid or special chars found in domain name" msgstr "Syntax invalide ou caractères spéciaux trouvés dans le nom du domaine" # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Telephone" msgstr "Téléphone" # type: Content of: #: ../plugins/ftp.xml:52 #: ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "UID" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "Nombre UID" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "Répondeur" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "Fin Répondeur" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "Renvoi Répondeur" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "Info Répondeur" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "Début Répondeur" #: ../lib/xhtml.php:63 #: ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "Version %s" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "Répertoire virtuel" # type: Content of: #: ../plugins/alias.xml:58 #: ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "Vérifier Virus" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Attention:" # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "Accès Web" #: ../lib/xhtml.php:919 #: ../lib/xhtml.php:920 msgid "YES" msgstr "OUI" #: ../lib/common.php:73 msgid "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "Vous allez être rédirigé automatiquement vers une nouvelle page dans quelques secondes.
si cela n'arrivait pas, suivez ce lien:" #: ../www-data/main.php:771 #, php-format msgid "account %s not updated!" msgstr "compte %s non" #: ../lib/common.php:73 msgid "click here" msgstr "Cliquez Ici" #: ../www-data/main.php:400 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "N'ctivez pas le Dorward en le Renvoi Répondeur en même temps!" #: ../www-data/main.php:344 #, php-format msgid "domain %s not added!" msgstr "domain %s non ajouté!" #: ../www-data/main.php:402 msgid "please, insert a forward destination or disable Forward!" msgstr "Inserer une destination ou desactiver le renvoi!" phamm-0.5.18/po/update-all-mo.sh0000755000175300017530000000056311145513161015323 0ustar phammphamm#!/bin/bash # for i in `ls -1 *po`; do DIR=`echo $i| cut -d "." -f 1` DIR1=`echo $DIR| cut -d "_" -f 1` if test -d ../locales/$DIR/LC_MESSAGES; then echo $i msgfmt -v $i -o ../locales/$DIR/LC_MESSAGES/messages.mo fi if test -d ../locales/$DIR1/LC_MESSAGES/; then echo $i msgfmt -v $i -o ../locales/$DIR1/LC_MESSAGES/messages.mo fi done exit 0 phamm-0.5.18/po/es_ES.po0000644000175300017530000003053211066442120013656 0ustar phammphamm# Spanish Phamm Translation # Copyright (c) 2004,2008 Alessandro De Zorzi, Mirko Grava # This file is distributed under the same license as the Phamm package. # # FIRST jonhattan , 2008. # msgid "" msgstr "" "Project-Id-Version: phamm 0.5.13\n" "POT-Creation-Date: 2008-09-22 15:50+0300\n" "PO-Revision-Date: 2008-09-22 17:57+0000\n" "Last-Translator: jonhattan \n" "Language-Team: SPANISH \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: UTF-8" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../www-data/main.php:204 #, php-format msgid "%s modified" msgstr "%s modificado" #: ../www-data/main.php:605 #, php-format msgid "%s not added!" msgstr "¡%s no añadido!" #: ../lib/xhtml.php:979 msgid "...execute a command" msgstr "...ejecuta un comando" #: ../lib/xhtml.php:1005 msgid "...select an action" msgstr "...selecciona una acción" #: ../lib/xhtml.php:747 msgid "Account" msgstr "Cuenta" #: ../www-data/main.php:599 #, php-format msgid "Account %s successfully added" msgstr "Cuenta %s añadida satisfactoriamente" #: ../lib/xhtml.php:281 #, php-format msgid "Account (%d)" msgid_plural "Accounts (%d)" msgstr[0] "Cuenta (%d)" msgstr[1] "Cuentas (%d)" #: ../www-data/main.php:369 msgid "Account or Alias already exists" msgstr "Cuenta o Alias ya existente" # type: Content of: #: ../plugins/alias.xml:44 ../plugins/mail.xml:52 ../plugins/mail.xml:125 #, no-wrap msgid "Active" msgstr "Activo" #: ../lib/xhtml.php:1130 msgid "Add catch-all address" msgstr "Añadir una dirección cógelo-todo" #: ../lib/xhtml.php:715 ../lib/xhtml.php:739 msgid "Add new account" msgstr "Añadir nueva cuenta" #: ../lib/xhtml.php:380 ../lib/xhtml.php:648 msgid "Add new domain" msgstr "Añadir nuevo dominio" #: ../lib/xhtml.php:838 msgid "All" msgstr "Todo" #: ../lib/xhtml.php:822 msgid "All domains" msgstr "Todos los dominios" #: ../www-data/main.php:110 msgid "Bye!" msgstr "¡Adiós!" # type: Content of: #: ../plugins/mail.xml:84 #, no-wrap msgid "Can edit Accounts" msgstr "Puede editar Cuentas" # type: Content of: #: ../plugins/mail.xml:59 #, no-wrap msgid "Can edit Anti-Virus" msgstr "Puede editar Anti-Virus" #: ../www-data/main.php:97 msgid "Can't contact LDAP server" msgstr "No puedo contactar con el servidor LDAP" #: ../www-data/main.php:424 msgid "Catch all" msgstr "Cógelo-todo" #: ../www-data/main.php:422 msgid "Catch all active" msgstr "Cógelo-todo activo" #: ../www-data/main.php:221 msgid "Changes have not performed" msgstr "Los cambios no se han efectuado" #: ../lib/common.php:482 msgid "Code " msgstr "Código " #: ../lib/xhtml.php:283 msgid "Common Name" msgstr "Nombre Común" #: ../lib/xhtml.php:662 ../lib/xhtml.php:753 msgid "Confirm Password" msgstr "Confirma Contraseña" #: ../www-data/main.php:72 msgid "Connection to LDAP Server Failed!" msgstr "¡Ha Fallado la Conexión al Servidor LDAP!" # type: Content of: #: ../plugins/mail.xml:290 #, no-wrap msgid "Creation Date" msgstr "Fecha de Creación" # type: Content of: #: ../plugins/mail.xml:65 ../plugins/mail.xml:161 #, no-wrap msgid "Delete" msgstr "Borrar" # type: Content of: #: ../plugins/alias.xml:39 #, no-wrap msgid "Destination" msgstr "Destino" #: ../lib/xhtml.php:656 msgid "Domain" msgstr "Dominio" #: ../www-data/main.php:339 #, php-format msgid "Domain %s successfully added" msgstr "Dominio %s añadido satisfactoriamente" #: ../lib/xhtml.php:155 #, php-format msgid "Domain (%d)" msgid_plural "Domains (%d)" msgstr[0] "Dominio (%d)" msgstr[1] "Dominios (%d)" #: ../www-data/main.php:412 msgid "Domain property" msgstr "Propiedades del dominio" #: ../lib/phamm.php:172 msgid "Error: " msgstr "Error: " #: ../lib/xhtml.php:989 ../lib/xhtml.php:1015 msgid "Execute command" msgstr "Ejecuta el comando" # type: Content of: #: ../plugins/person.xml:48 #, no-wrap msgid "FAX" msgstr "FAX" # type: Content of: #: ../plugins/ftp.xml:71 #, no-wrap msgid "FTP Quota Mb" msgstr "FTP Cuota Mb" # type: Content of: #: ../plugins/ftp.xml:65 #, no-wrap msgid "FTP Status" msgstr "" # type: Content of: #: ../plugins/mail.xml:202 #, no-wrap msgid "Forward Active" msgstr "Reenvío Activo" # type: Content of: #: ../plugins/ftp.xml:39 #, no-wrap msgid "GID number" msgstr "" #: ../www-data/main.php:99 msgid "Generic Error: " msgstr "Error Genérico: " # type: Content of: #: ../plugins/ftp.xml:45 #, no-wrap msgid "Home Directory" msgstr "Directorio Personal" # type: Content of: #: ../plugins/person.xml:40 #, no-wrap msgid "Home Phone" msgstr "Teléfono de Casa" #: ../lib/common.php:482 msgid "LDAP Error: " msgstr "Error LDAP: " #: ../lib/xhtml.php:113 msgid "Login" msgstr "" #: ../lib/xhtml.php:107 msgid "Login Name" msgstr "" #: ../www-data/main.php:95 msgid "Login Username or Password not valid." msgstr "Usuario o Contraseña no válido." #: ../www-data/main.php:168 #, php-format msgid "Logout %s" msgstr "" # type: Content of: #: ../plugins/mail.xml:155 #, no-wrap msgid "Mail Autoreply" msgstr "Autorespuesta de Correo" # type: Content of: #: ../plugins/mail.xml:140 #, no-wrap msgid "Mailbox" msgstr "Buzón" # type: Content of: #: ../plugins/mail.xml:210 #, no-wrap msgid "Maildrop" msgstr "" # type: Content of: #: ../plugins/mail.xml:45 #, no-wrap msgid "Max Quota" msgstr "Max Cuota" # type: Content of: #: ../plugins/mail.xml:38 #, no-wrap msgid "Max number of Alias" msgstr "Número máximo de Alias" # type: Content of: #: ../plugins/mail.xml:31 #, no-wrap msgid "Max number of Mail" msgstr "Número máximo de Mail" # type: Content of: #: ../plugins/person.xml:44 #, no-wrap msgid "Mobile" msgstr "Móvil" #: ../lib/xhtml.php:737 msgid "Modify account" msgstr "Modificar cuenta" #: ../lib/xhtml.php:646 msgid "Modify domain" msgstr "Modificar dominio" #: ../lib/xhtml.php:905 ../lib/xhtml.php:906 msgid "NO" msgstr "" #: ../lib/xhtml.php:756 msgid "Name" msgstr "Nombre" #: ../www-data/main.php:476 msgid "Name is not valid" msgstr "Nombre no válido" # type: Content of: #: ../plugins/mail.xml:170 #, no-wrap msgid "Other Transport" msgstr "Otro Transporte" # type: Content of: #: ../plugins/person.xml:52 #, no-wrap msgid "Pager" msgstr "Paginador" #: ../lib/xhtml.php:109 ../lib/xhtml.php:659 ../lib/xhtml.php:750 msgid "Password" msgstr "Contraseña" #: ../lib/common.php:282 msgid "Password contains special chars" msgstr "La contraseña contiene caracteres especiales" #: ../lib/common.php:279 msgid "Password too short!" msgstr "¡Contraseña demasiado corta!" #: ../lib/common.php:276 msgid "Passwords don't match!" msgstr "¡Las contraseñas no coinciden!" # type: Content of: #: ../plugins/mail.xml:74 #, no-wrap msgid "Postfix Transport" msgstr "" # type: Content of: #: ../plugins/proxy.xml:42 #, no-wrap msgid "Proxy Host" msgstr "" # type: Content of: #: ../plugins/mail.xml:117 #, no-wrap msgid "Quota" msgstr "Cuota" # type: Content of: #: ../plugins/alias.xml:51 ../plugins/mail.xml:110 #, no-wrap msgid "SMTP Auth" msgstr "" # type: Content of: #: ../plugins/alias.xml:65 ../plugins/mail.xml:222 #, no-wrap msgid "SPAM Check" msgstr "Chequear SPAM" #: ../www-data/main.php:393 msgid "SPAM Tags level are not set correctly!" msgstr "¡el nivel de las etiquetas SPAM no se ha establecido correctamente!" #: ../lib/xhtml.php:985 msgid "Set" msgstr "Establecer" # type: Content of: #: ../plugins/mail.xml:230 #, no-wrap msgid "Spam Kill Level" msgstr "" # type: Content of: #: ../plugins/mail.xml:270 #, no-wrap msgid "Spam Tag Level" msgstr "" # type: Content of: #: ../plugins/mail.xml:250 #, no-wrap msgid "Spam Tag2 Level" msgstr "" #: ../www-data/main.php:371 msgid "Special Characters not Allowed in E-mail address" msgstr "No se permiten caracteres especiales en la dirección de correo" #: ../lib/xhtml.php:759 msgid "Surname" msgstr "Apellidos" #: ../www-data/main.php:478 msgid "Surname is not valid" msgstr "Apellidos no válidos" #: ../www-data/main.php:239 msgid "Syntax not valid or special chars found in domain name" msgstr "La sintaxis no es válida, o se han encontrado caracteres especiales en el nombre del dominio" # type: Content of: #: ../plugins/person.xml:36 #, no-wrap msgid "Telephone" msgstr "Teléfono" # type: Content of: #: ../plugins/ftp.xml:52 ../plugins/mail.xml:147 #, no-wrap msgid "UID" msgstr "" # type: Content of: #: ../plugins/ftp.xml:59 #, no-wrap msgid "UID Number" msgstr "" # type: Content of: #: ../plugins/mail.xml:176 #, no-wrap msgid "Vacation" msgstr "Vacaciones" # type: Content of: #: ../plugins/mail.xml:197 #, no-wrap msgid "Vacation End" msgstr "Fin de Vacaciones" # type: Content of: #: ../plugins/mail.xml:187 #, no-wrap msgid "Vacation Forward" msgstr "Reenvío de Vacaciones" # type: Content of: #: ../plugins/mail.xml:182 #, no-wrap msgid "Vacation Info" msgstr "Información de Vacaciones" # type: Content of: #: ../plugins/mail.xml:192 #, no-wrap msgid "Vacation Start" msgstr "Inicio de Vacaciones" #: ../lib/xhtml.php:63 ../lib/xhtml.php:99 #, php-format msgid "Ver. %s" msgstr "" # type: Content of: #: ../plugins/mail.xml:133 #, no-wrap msgid "Virtual Home" msgstr "Home Virtual" # type: Content of: #: ../plugins/alias.xml:58 ../plugins/mail.xml:214 #, no-wrap msgid "Virus Check" msgstr "Chequeo de Virus" #: ../lib/phamm.php:176 msgid "Warning: " msgstr "Alerta: " # type: Content of: #: ../plugins/proxy.xml:36 #, no-wrap msgid "Web Access" msgstr "Acceso Web" #: ../lib/xhtml.php:905 ../lib/xhtml.php:906 msgid "YES" msgstr "SÍ" #: ../lib/common.php:73 msgid "" "You will be automatically redirected to a new page within a few seconds.
If this does not happen, please follow the link:" msgstr "" "Serás redirigido a una nueva página en los próximos segundos.
Si esto no ocurre por favor sigue el enlace:" #: ../www-data/main.php:757 #, php-format msgid "account %s not updated!" msgstr "¡cuenta %s no actualizada!" #: ../lib/common.php:73 msgid "click here" msgstr "haz click aquí" #: ../www-data/main.php:395 msgid "do not activate Forward and Vacation Forward in the same time!" msgstr "¡no actives Reenvío y Reenvío de Vacaciones al mismo tiempo!" #: ../www-data/main.php:344 #, php-format msgid "domain %s not added!" msgstr "¡dominio %s no añadido!" #: ../www-data/main.php:397 msgid "please, insert a forward destination or disable Forward!" msgstr "¡por favor, inserta un destino para el reenvío o desactiva el Reenvío!" phamm-0.5.18/tools/0000755000175300017530000000000011354605736013055 5ustar phammphammphamm-0.5.18/tools/handle_vacation.sh0000755000175300017530000000321010760603702016516 0ustar phammphammWARNING THIS IS NOT TESTED YET THANKS to Pavol Luptak #!/bin/bash LDAPPASS="rhx" BASE="o=hosting,dc=example,dc=tld" BINDDN="cn=admin,dc=example,dc=tld" VACATION_USERS=`ldapsearch -L -x -w $LDAPPASS -b $BASE -D $BINDDN mail | grep ^mail | awk ' {print $2}'` for USER in $VACATION_USERS; do TMPFILE=`tempfile` ldapsearch -L -x -w $LDAPPASS -b $BASE -D $BINDDN "(mail=$USER)" vacationStart vacationEnd >$TMPFILE VACATION_START=`grep ^vacationStart: $TMPFILE | awk '{print $2}'` VACATION_END=`grep ^vacationEnd: $TMPFILE | awk '{print $2}'` DN=`grep ^dn: $TMPFILE` # we consider only users who use vacation if [ "x$VACATION_START" != "x" ] && [ "x$VACATION_END" != "x" ]; then VACATION_START_SECONDS=`date --date="$VACATION_START" +%s` VACATION_END_SECONDS=`date --date="$VACATION_END" +%s` NOW_SECONDS=`date +%s` # check for vacation dates if (( $VACATION_START_SECONDS > $VACATION_END_SECONDS )); then echo "Vacation End should not be earlier than Vacation Start" >&2 else LDAPMODIFY=`tempfile -p "ldap"` # if an user is on vacation if (( $VACATION_START_SECONDS <= $NOW_SECONDS && $NOW_SECONDS <= $VACATION_END_SECONDS+86400 )); then echo "$USER is on vacation ($VACATION_START-$VACATION_END)"; echo $DN > $LDAPMODIFY echo "changetype: modify" >>$LDAPMODIFY echo "replace: vacationActive" >>$LDAPMODIFY echo "vacationActive: TRUE" >>$LDAPMODIFY else echo "$USER is not on vacation ($VACATION_START-$VACATION_END)"; echo $DN > $LDAPMODIFY echo "changetype: modify" >>$LDAPMODIFY echo "replace: vacationActive" >>$LDAPMODIFY echo "vacationActive: FALSE" >>$LDAPMODIFY fi ldapmodify -x -w $LDAPPASS -D $BINDDN -f $LDAPMODIFY rm $LDAPMODIFY fi rm $TMPFILE fi done phamm-0.5.18/tools/check_expiration.pl0000755000175300017530000000570610760603702016733 0ustar phammphammWARNING THIS IS NOT TESTED YET THANKS to Trieste Team #!/usr/bin/perl # # check_expiration.pl # # Expiration check for virtual mailboxes. # The activeAccount flag of the expired accounts is set to false. # use Time::Local; # for timelocal() # $lastlog_file="/mail/sysmgr/check_expiration/expire.lastlog"; $log_file="/mail/sysmgr/check_expiration/expire.log"; $message_file="/mail/sysmgr/check_expiration/message.txt"; $tmp_file="/mail/sysmgr/check_expiration/tmp.tmp"; $ldif_file="/mail/sysmgr/check_expiration/expire.ldif"; # $manager_dn="cn=admin,dc=example,dc=tld"; $manager_pass="rhx"; # chomp($today_readable=qx{date +"%Y%m%d"}); # open(LASTLOG,">".$lastlog_file); close(LASTLOG); # # Scan list of expiration dates # $buffer=qx { /usr/bin/ldapsearch -x -b "vd=example.com,o=hosting,dc=example,dc=tld" -D "$manager_dn" -ZZ -w $manager_pass -LLL mailboxExpiration }; $n=0; $today=int(time()/(24*60*60)); open(ENTRIES,"/usr/bin/ldapsearch -x -b \"vd=example.com,o=hosting,dc=example,dc=tld\" -D \"$manager_dn\" -ZZ -w $manager_pass -LLL mailboxExpiration |"); while () { chomp(); if (/^dn:/) { ($g1,$g2)=split(/=/,$_,2); ($user,$g3)=split(/\@/,$g2,2); next; } if (/^mailboxExpiration:/) { ($g1,$date)=split(/: /,$_,2); $expires_in=$date-$today; if ($expires_in < 0) { # Check that the account is still active chomp($is_active=qx { ldapsearch -x -b "vd=example.com,o=hosting,dc=example,dc=tld" -D "$manager_dn" -ZZ -w $manager_pass "(mail=$user\@example.com)" | grep "accountActive: TRUE" | wc -l }); if ($is_active != 0) { open(LDIF,">$ldif_file") || die "Can't open $ldif_file"; print LDIF sprintf "dn: mail=%s\@example.com,vd=example.com,o=hosting,dc=example,dc=tld\n",$user; printf LDIF "changetype: modify\n"; printf LDIF "replace: accountActive\n"; printf LDIF "accountActive: FALSE\n"; close (LDIF); # perform changes qx { /usr/bin/ldapmodify -x -v -D "$manager_dn" -w $manager_pass -ZZ -f $ldif_file >> $lastlog_file 2>&1 }; open (LOG,">>$log_file") || die "Can't open $log_file"; print LOG sprintf("%s: \"%s\" expired\n",$today_readable, $user); close(LOG); next; } } # Notify people whose expiration is approaching if (($expires_in == 30) || ($expires_in == 7) || ($expires_in == 2)) { open (MSG,$message_file); open (TMP,">$tmp_file"); while() { chomp(); $_=~s/DAYS/$expires_in/; $_=~s/USER/$user/; print TMP sprintf ("%s\n",$_); } close (TMP); close (MSG); $cmd=sprintf("/bin/mail -s \"Account %s expiring (-%s)\" %s < %s", $user,$expires_in,$user,$tmp_file); qx { $cmd }; open (LOG,">>$log_file") || die "Can't open $log_file"; print LOG sprintf("%s: \"%s\" expiring in %s days. Notified.\n",$today_readable, $user,$expires_in); close(LOG); unlink $tmp_file; } } } close (ENTRIES); exit; phamm-0.5.18/tools/lib_functions.sh0000755000175300017530000000044410340121013016223 0ustar phammphamm#!/bin/sh # FILE='../LIB_FUNCTIONS' echo "****************************************" > $FILE for i in `ls ../lib/*.php`; do echo "$i" >> $FILE echo "" >> $FILE cat $i | grep "^function " >> $FILE echo "---------------------------------------------------------" >> $FILE done exit 0 phamm-0.5.18/tools/greylist_recipients_whitelists_ldap.pl0000755000175300017530000000464011216730332022753 0ustar phammphamm#!/usr/bin/perl -T -w # # Connect to LDAP Server and extract a list of # postgrey whitelist mail recipients # # Phamm - http://www.phamm.org - # Copyright (C) 2009 Alessandro De Zorzi # # This file is part of Phamm. # # 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Example LDIF # bypassGreyListing: TRUE use Data::Dumper; use Net::LDAP; # File dove sono scritti uno per riga i destinatari e domini open(FILE_OUTPUT,'>/tmp/whitelist_recipients') or die "Can't open file"; print FILE_OUTPUT "# postgrey whitelist for mail recipients\n"; print FILE_OUTPUT "# --------------------------------------\n"; print FILE_OUTPUT "# Generated by read_recipients_whitelists_ldap.pl\n"; print FILE_OUTPUT "postmaster@\n"; print FILE_OUTPUT "abuse@\n"; $ldap = Net::LDAP->new ( "127.0.0.1" ) or die "$@"; $mesg = $ldap->bind( 'cn=admin,dc=example,dc=tld', password => 'secret'); $mesg = $ldap->search(base => "o=hosting,dc=example,dc=tld", filter => "(&(bypassGreyListing=TRUE)(objectClass=VirtualDomain))", attrs=> ['vd'] ); $mesg->code && die $mesg->error; foreach $entry ($mesg->entries) { $domain = $entry->get_value("vd"); push(@whitelist, $domain); } $mesg = $ldap->search(base => "o=hosting,dc=example,dc=tld", filter => "(&(bypassGreyListing=TRUE)(|(objectClass=VirtualMailAlias)(objectClass=VirtualMailAccount)))", attrs=> ['mail'] ); $mesg->code && die $mesg->error; foreach $entry ($mesg->entries) { $mail = $entry->get_value("mail"); push(@whitelist, $mail); } # Scrive uno per riga i risultati sul file di output foreach $entry(@whitelist) { print FILE_OUTPUT $entry."\n"; } close(FILE_OUTPUT); exit; phamm-0.5.18/tools/insert-ldap.sh0000755000175300017530000000034710760603702015631 0ustar phammphamm#!/bin/bash # this is script help you to populate the basedn # use it with example ldif in this order # sample-main.ldif # sample-mail.ldif # sample-pdns.ldif # ldapadd -v -x -D "cn=admin,dc=example,dc=tld" -W -h localhost -f $1 phamm-0.5.18/tools/cleaner.sh0000755000175300017530000000400511055456634015023 0ustar phammphamm#!/bin/bash # # Phamm - http://www.phamm.org - # Copyright (C) 2004-2008 Alessandro De Zorzi and Mirko Grava # # Phamm 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. # # Phamm 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 LDAP_BASE="o=hosting,dc=example,dc=tld" admin="cn=admin" SUFFIX="dc=example,dc=tld" ROOTPW="rhx" BINDDN="cn=phamm,o=hosting,dc=example,dc=tld" BINDPW="rhx" OUTPUT="$HOME/bin/lista" if [ ! -d ~/bin ]; then mkdir ~/bin fi if [ ! -d ~/tmp ]; then mkdir ~/tmp fi touch $OUTPUT # find mail to delete ldapsearch -D $BINDDN -w $BINDPW -b $LDAP_BASE -x -LLL "(&(objectClass=VirtualMailAccount)(delete=TRUE))" mailbox > ~/tmp/mb$$ # create file for awk sed \ -e ':a' \ -e '$!N;s/\n //;ta' \ -e 'P;D' \ ~/tmp/mb$$ > ~/tmp/mb$$.1 cat ~/tmp/mb$$.1 | awk '{ if ($1 == "dn:") { print "ldapdelete -D \"'$admin','$SUFFIX'\" -w \"'$ROOTPW'\" -x \""$2"\"" > "'$OUTPUT'" } if ($1 == "mailbox:") { print "rm -rf ~/domains/" $2 > "'$OUTPUT'" } }' # find domain to delete ldapsearch -D $BINDDN -w $BINDPW -b $LDAP_BASE -x -LLL "(&(objectClass=VirtualDomain)(delete=TRUE))" vd > ~/tmp/vd$$ # create file for awk sed \ -e ':a' \ -e '$!N;s/\n //;ta' \ -e 'P;D' \ ~/tmp/vd$$ > ~/tmp/vd$$.1 cat ~/tmp/vd$$ | awk '{ if ($1 == "dn:") { print "ldapdelete -D \"'$admin','$SUFFIX'\" -w \"'$ROOTPW'\" -x -r \""$2"\"" > "'$OUTPUT'" } if ($1 == "vd:") { print "rm -rf ~/domains/" $2 > "'$OUTPUT'" } }' # execute and delete temporary files chmod 700 $OUTPUT $OUTPUT rm -rf ~/tmp/mb* ~/tmp/vd* $OUTPUT phamm-0.5.18/tools/ldap-schema-manage0000755000175300017530000000321211051763143016374 0ustar phammphamm#!/bin/bash # # This script help you to modify /etc/ldap/slapd.conf to manage # .schema files # # Phamm - http://www.phamm.org - # Copyright (C) 2008 Alessandro De Zorzi and Mirko Grava # # Phamm 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. # # Phamm 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 ACTION=$1 SCHEMA=$2 EXT=`echo $2 | cut -d "." -f 2` # Check if 2th argument is given if [ ! $SCHEMA ]; then echo "Usage: ldap-schema-manage [install|check|purge] file.schema" exit 1 fi # Check if 2th argument is a .schema file if [ $EXT != 'schema' ]; then echo "Error: 2th argument should be a .schema file" exit 2 fi # Check if .schema file exits if [ ! -f $SCHEMA ]; then echo "Error: $SCHEMA do not exits!" exit 3 fi # Check if .schema already in /etc/ldap/schema if [ ! -f "/etc/ldap/schema/$SCHEMA" ]; then echo "Error: $SCHEMA already present in /etc/ldap/schema/ !" exit 4 fi case "$ACTION" in install ) echo "Installing $SCHEMA" ;; check ) echo "Checking $SCHEMA" ;; purge ) echo "Purging $SCHEMA" ;; * ) echo "Usage: ldap-schema-manage [install|check|purge] file.schema" ;; esac exit 0 phamm-0.5.18/tools/phamm-useradd.pl0000755000175300017530000005001410444556670016145 0ustar phammphamm#!/usr/bin/perl -w # phamm-useradd # based on smbldap-useradd # code version 1.30 2006/01/02 17:01:19 jtournier Exp $ # from smbldap-tools (IDEALX http://IDEALX.org/) # (c) Jerome Tournier - IDEALX 2004 (http://www.idealx.com) # Licensed under the GPL # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # Purpose of phamm-useradd : user (posix,shadow,samba) add using attribute # from phamm.schema use strict; use FindBin; use FindBin qw($RealBin); use lib "$RealBin/"; use smbldap_tools; use Crypt::SmbHash; ##################### use Getopt::Std; my %Options; my $ok = getopts('o:arnmwiPG:u:g:d:s:c:k:t:A:B:C:D:E:F:H:N:S:?', \%Options); if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) { print_banner; print "Usage: $0 [-awmugdsckABCDEFGHMNPST?] username\n"; print " -o add the user in the organizational unit (relative to the user suffix)\n"; print " -a is a Windows User (otherwise, Posix stuff only)\n"; print " -r is a PHAMM complete user\n"; print " -w is a Windows Workstation (otherwise, Posix stuff only)\n"; print " -i is a trust account (Windows Workstation)\n"; print " -u uid\n"; print " -g gid\n"; print " -G supplementary comma-separated groups\n"; print " -n do not create a group\n"; print " -d home\n"; print " -s shell\n"; print " -c gecos\n"; print " -m creates home directory and copies /etc/skel\n"; print " -k skeleton dir (with -m)\n"; print " -t time. Wait 'time' seconds before exiting (when adding Windows Workstation)\n"; print " -P ends by invoking smbldap-passwd\n"; print " -A can change password ? 0 if no, 1 if yes\n"; print " -B must change password ? 0 if no, 1 if yes\n"; print " -C sambaHomePath (SMB home share, like '\\\\PDC-SRV\\homes')\n"; print " -D sambaHomeDrive (letter associated with home share, like 'H:')\n"; print " -E sambaLogonScript (DOS script to execute on login)\n"; print " -F sambaProfilePath (profile directory, like '\\\\PDC-SRV\\profiles\\foo')\n"; print " -H sambaAcctFlags (samba account control bits like '[NDHTUMWSLKI]')\n"; print " -N surname\n"; print " -S family name\n"; print " -? show this help message\n"; exit (1); } my $ldap_master=connect_ldap_master(); # cause problems when dealing with getpwuid because of the # negative ttl and ldap modification my $nscd_status = system "/etc/init.d/nscd status >/dev/null 2>&1"; if ($nscd_status == 0) { system "/etc/init.d/nscd stop > /dev/null 2>&1"; } # Read only first @ARGV my $userName = $ARGV[0]; # For computers account, add a trailing dollar if missing if (defined($Options{'w'})) { if ($userName =~ /[^\$]$/s) { $userName .= "\$"; } } # untaint $userName (can finish with one or two $) if ($userName =~ /^([\w -.]+\$?)$/) { $userName = $1; } else { print "$0: illegal username\n"; exit (1); } # user must not exist in LDAP (should it be nss-wide ?) my ($rc, $dn) = get_user_dn2($userName); if ($rc and defined($dn)) { print "$0: user $userName exists\n"; exit (9); } elsif (!$rc) { print "$0: error in get_user_dn2\n"; exit(10); } # Read options # we create the user in the specified ou (relative to the users suffix) my $user_ou=$Options{'o'}; my $node; if (defined $user_ou) { if (!($user_ou =~ m/^ou=(.*)/)) { $node=$user_ou; $user_ou="ou=$user_ou"; } else { ($node)=($user_ou=~m/ou=(.*)/); } # $config{usersdn}="$user_ou,$config{usersdn}"; # if the ou does not exist, we create it my $mesg = $ldap_master->search ( base => "$config{usersdn}", scope => "one", filter => "(&(objectClass=organizationalUnit)(ou=$node))" ); $mesg->code && die $mesg->error; if ($mesg->count eq 0) { print "creating $user_ou first (as $user_ou,$config{usersdn})\n"; # add organizational unit my $add = $ldap_master->add ("ou=$node,$config{usersdn}", attr => [ 'objectclass' => ['top','organizationalUnit'], 'ou' => "$node" ] ); $add->code && die "failed to add entry: ", $add->error ; } $config{usersdn}="$user_ou,$config{usersdn}"; } my $userUidNumber = $Options{'u'}; if (!defined($userUidNumber)) { $userUidNumber=get_next_id($config{usersdn},"uidNumber"); } elsif (getpwuid($userUidNumber)) { die "Uid already exists.\n"; } if ($nscd_status == 0) { system "/etc/init.d/nscd start > /dev/null 2>&1"; } my $createGroup = 0; my $userGidNumber = $Options{'g'}; # gid not specified ? if (!defined($userGidNumber)) { # windows machine => $config{defaultComputerGid} if (defined($Options{'w'})) { $userGidNumber = $config{defaultComputerGid}; # } elsif (!defined($Options{'n'})) { # create new group (redhat style) # find first unused gid starting from $config{GID_START} # while (defined(getgrgid($config{GID_START}))) { # $config{GID_START}++; # } # $userGidNumber = $config{GID_START}; # $createGroup = 1; } else { # user will have gid = $config{defaultUserGid} $userGidNumber = $config{defaultUserGid}; } } else { my $gid; if (($gid = parse_group($userGidNumber)) < 0) { print "$0: unknown group $userGidNumber\n"; exit (6); } $userGidNumber = $gid; } my $group_entry; my $userGroupSID; my $userRid; my $user_sid; if (defined $Options{'a'} or defined $Options{'i'}) { # as grouprid we use the value of the sambaSID attribute for # group of gidNumber=$userGidNumber $group_entry = read_group_entry_gid($userGidNumber); $userGroupSID = $group_entry->get_value('sambaSID'); unless ($userGroupSID) { print "Error: SID not set for unix group $userGidNumber\n"; print "check if your unix group is mapped to an NT group\n"; exit (7); } # as rid we use 2 * uid + 1000 $userRid = 2 * $userUidNumber + 1000; # let's test if this SID already exist $user_sid="$config{SID}-$userRid"; my $test_exist_sid=does_sid_exist($user_sid,$config{usersdn}); if ($test_exist_sid->count == 1) { print "User SID already owned by\n"; # there should not exist more than one entry, but ... foreach my $entry ($test_exist_sid->all_entries) { my $dn= $entry->dn; chomp($dn); print "$dn\n"; } exit(7); } } my $userHomeDirectory; my ($givenName,$userCN, $userSN); my $tmp; if (!defined($userHomeDirectory = $Options{'d'})) { $userHomeDirectory = &subst_user($config{userHome}, $userName); } # RFC 2256 # sn: : nom (option S) # givenName: prenom (option N) # cn: person's full name $userHomeDirectory=~s/\/\//\//; $config{userLoginShell} = $tmp if (defined($tmp = $Options{'s'})); $config{userGecos} = $tmp if (defined($tmp = $Options{'c'})); $config{skeletonDir} = $tmp if (defined($tmp = $Options{'k'})); $givenName = (utf8Encode($Options{'N'}) || $userName); $userSN = (utf8Encode($Options{'S'}) || $userName); if ($Options{'N'} and $Options{'S'}) { $userCN="$givenName"." $userSN"; } else { $userCN=$userName; } ######################## # MACHINE ACCOUNT if (defined($Options{'w'}) or defined($Options{'i'})) { # if Options{'i'} and username does not end with $ caracter => we add it if ( $Options{'i'} and !($userName =~ m/\$$/) ) { $userName.="\$"; } if (!add_posix_machine ($userName,$userUidNumber,$userGidNumber,$Options{'t'})) { die "$0: error while adding posix account\n"; } if (defined($Options{'i'})) { # For machine trust account # Objectclass sambaSAMAccount must be added now ! my $pass; my $pass2; system "stty -echo"; print "New password : "; chomp($pass=); print "\n"; system "stty echo"; system "stty -echo"; print "Retype new password : "; chomp($pass2=); print "\n"; system "stty echo"; if ($pass ne $pass2) { print "New passwords don't match!\n"; exit (10); } my ($lmpassword,$ntpassword) = ntlmgen $pass; my $date=time; my $modify = $ldap_master->modify ( "uid=$userName,$config{computersdn}", changes => [ replace => [objectClass => ['top', 'person', 'organizationalPerson', 'inetOrgPerson', 'posixAccount', 'sambaSAMAccount']], add => [sambaLogonTime => '0'], add => [sambaLogoffTime => '2147483647'], add => [sambaKickoffTime => '2147483647'], add => [sambaPwdCanChange => '0'], add => [sambaPwdMustChange => '2147483647'], add => [sambaPwdLastSet => "$date"], add => [sambaAcctFlags => '[I ]'], add => [sambaLMPassword => "$lmpassword"], add => [sambaNTPassword => "$ntpassword"], add => [sambaSID => "$user_sid"], add => [sambaPrimaryGroupSID => "$config{SID}-5015"] ] ); $modify->code && die "failed to add entry: ", $modify->error ; } $ldap_master->unbind; exit 0; } # USER ACCOUNT # add posix account first my $add; # if PHAMM account, we must add first mail and other things if (defined($Options{'r'})) { $add = $ldap_master->add ("mail=$userName\@$config{mailDomain},$config{usersdn}", attr => [ 'objectclass' => ['top','VirtualMailAccount','Vacation','amavisAccount','VirtualForward','posixAccount','shadowAccount'], 'mail' => "$userName\@$config{mailDomain}", 'vdHome' => '/home/vmail/domains', 'mailbox' => "$config{mailDomain}\/$userName\/", 'delete' => 'FALSE', 'sn' => "$userSN", 'userPassword' => "{crypt}x", 'vacationActive' => 'FALSE', 'vacationStart' => '01 gennaio 2004', 'vacationEnd' => '01 gennaio 2004', 'vacationForward' => 'user@example.tld', 'forwardActive' => 'FALSE', 'accountActive' => 'TRUE', 'lastChange' => '1108499016', 'cn' => "$userCN", 'quota' => '5242880S', 'amavisSpamKillLevel' => '6.0', 'amavisSpamTag2Level' => '5.5', 'amavisSpamTagLevel' => '3.0', 'amavisBypassVirusChecks' => 'TRUE', 'amavisBypassSpamChecks' => 'TRUE', 'otherTransport' => 'phamm:', 'uid' => "$userName", 'uidNumber' => "$userUidNumber", 'gidNumber' => "$userGidNumber", 'homeDirectory' => "$userHomeDirectory", 'loginShell' => "$config{userLoginShell}", 'gecos' => "$config{userGecos}", 'description' => "$config{userGecos}" ] ); } else { $add = $ldap_master->modify ("mail=$userName\@$config{mailDomain},$config{usersdn}", changes => [ add => [objectClass => 'posixAccount'], add => [uid => "$userName"], add => [uidNumber => "$userUidNumber"], add => [gidNumber => "$userGidNumber"], add => [homeDirectory => "$userHomeDirectory"], add => [objectClass => 'shadowAccount'], add => [loginShell => "$config{userLoginShell}"], add => [gecos => "$config{userGecos}"], add => [description => "$config{userGecos}"], ] ); } $add->code && warn "failed to add entry: ", $add->error ; #if ($createGroup) { # group_add($userName, $userGidNumber); #} if ($userGidNumber != $config{defaultUserGid}) { group_add_user($userGidNumber, $userName); } my $grouplist; # adds to supplementary groups if (defined($grouplist = $Options{'G'})) { add_grouplist_user($grouplist, $userName); } # If user was created successfully then we should create his/her home dir if (defined($tmp = $Options{'m'})) { unless ( $userName =~ /\$$/ ) { if ( !(-e $userHomeDirectory) ) { system "mkdir $userHomeDirectory 2>/dev/null"; system "cp -a $config{skeletonDir}/.[a-z,A-Z]* $config{skeletonDir}/* $userHomeDirectory 2>/dev/null"; system "chown -R $userUidNumber:$userGidNumber $userHomeDirectory 2>/dev/null"; if (defined $config{userHomeDirectoryMode}) { system "chmod $config{userHomeDirectoryMode} $userHomeDirectory 2>/dev/null"; } else { system "chmod 700 $userHomeDirectory 2>/dev/null"; } } } } # Add Samba user infos my @adds; if (defined($Options{'a'})) { if (!$config{with_smbpasswd}) { my $winmagic = 2147483647; my $valpwdcanchange = 0; my $valpwdmustchange = $winmagic; my $valpwdlastset = 0; my $valacctflags = "[UX]"; if (defined($tmp = $Options{'A'})) { if ($tmp != 0) { $valpwdcanchange = "0"; } else { $valpwdcanchange = "$winmagic"; } } if (defined($tmp = $Options{'B'})) { if ($tmp != 0) { $valpwdmustchange = "0"; # To force a user to change his password: # . the attribut sambaPwdLastSet must be != 0 # . the attribut sambaAcctFlags must not match the 'X' flag $valpwdlastset=$winmagic; $valacctflags = "[U]"; } else { $valpwdmustchange = "$winmagic"; } } if (defined($tmp = $Options{'H'})) { $valacctflags = "$tmp"; } my $modify = $ldap_master->modify ( "mail=$userName\@$config{mailDomain},$config{usersdn}", changes => [ add => [objectClass => 'sambaSAMAccount'], add => [sambaPwdLastSet => "$valpwdlastset"], add => [sambaLogonTime => '0'], add => [sambaLogoffTime => '2147483647'], add => [sambaKickoffTime => '2147483647'], add => [sambaPwdCanChange => "$valpwdcanchange"], add => [sambaPwdMustChange => "$valpwdmustchange"], add => [displayName => "$config{userGecos}"], add => [sambaAcctFlags => "$valacctflags"], add => [sambaSID => "$config{SID}-$userRid"] ] ); $modify->code && die "failed to add entry: ", $modify->error ; } else { my $FILE="|smbpasswd -s -a $userName >/dev/null" ; open (FILE, $FILE) || die "$!\n"; print FILE < $valhomedrive); } if ($valsmbhome) { push(@adds, 'sambaHomePath' => $valsmbhome); } if ($valprofilepath) { push(@adds, 'sambaProfilePath' => $valprofilepath); } if ($valscriptpath) { push(@adds, 'sambaLogonScript' => $valscriptpath); } if (!$config{with_smbpasswd}) { push(@adds, 'sambaPrimaryGroupSID' => $userGroupSID); push(@adds, 'sambaLMPassword' => "XXX"); push(@adds, 'sambaNTPassword' => "XXX"); } my $modify = $ldap_master->modify ( "mail=$userName\@$config{mailDomain},$config{usersdn}", add => { @adds } ); $modify->code && die "failed to add entry: ", $modify->error ; } $ldap_master->unbind; # take down session if (defined($Options{'P'})) { exec "$RealBin/smbldap-passwd \"$userName\"" } exit 0; ######################################## =head1 NAME smbldap-useradd - Create a new user =head1 SYNOPSIS smbldap-useradd [-o user_ou] [-c comment] [-d home_dir] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir]] [-s shell] [-u uid [ -o]] [-P] [-A canchange] [-B mustchange] [-C smbhome] [-D homedrive] [-E scriptpath] [-F profilepath] [-H acctflags] login =head1 DESCRIPTION Creating New Users The smbldap-useradd command creates a new user account using the values specified on the command line and the default values from the system and from the configuration files (in /etc/smbldap-tools directory). For Samba users, rid is '2*uidNumber+1000', and sambaPrimaryGroupSID is '$SID-2*gidNumber+1001', where $SID is the domain SID. Thus you may want to use : $ smbldap-useradd -a -g "Domain Admins" -u 500 Administrator to create an domain administrator account (admin rid is 0x1F4 = 500 and grouprid is 0x200 = 512). Without any option, the account created will be an Unix (Posix) account. The following options may be used to add information: -o The user's account will be created in the specified organazional unit. It is relative to the user suffix dn ($usersdn) defined in the configuration file. -a The user will have a Samba account (and Unix). -r The user is a complete PHAMM account -w Creates an account for a Samba machine (Workstation), so that it can join a sambaDomainName. -i Creates an interdomain trust account (machine Workstation). A password will be asked for the trust account. -c "comment" The new user's comment field (gecos). -d home_dir The new user will be created using home_dir as the value for the user's login directory. The default is to append the login name to userHomePrefix (defined in the configuration file) and use that as the login directory name. -g initial_group The group name or number of the user's initial login group. The group name must exist. A group number must refer to an already existing group. The default group number is defined in the configuration file (defaultUserGid="513"). -G group,[...] A list of supplementary groups which the user is also a member of. Each group is separated to the next by a comma, with no intervening whitespace. The groups are subject to the same restrictions as the group given with the -g option. The default is for the user to belong only to the initial group. -m The user's home directory will be created if it does not exist. The files contained in skeletonDir will be copied to the home directory if the -k option is used, otherwise the files contained in /etc/skel will be used instead. Any directories contained in skeletonDir or /etc/skel will be created in the user's home directory as well. The -k option is only valid in conjunction with the -m option. The default is to not create the directory and to not copy any files. -s shell The name of the user's login shell. The default is to leave this field blank, which causes the system to select the default login shell. -t time Wait