Postfix è un ottimo server di posta, ma non è la più facile delle bestia da domare, se non siete un amministratore di sistema esperto e volete impostare solo un servizio per il vostro server e dominio, oggi vi mostrerò come installare e configurare postfixadmin una interfaccia web-based utilizzata per gestire le caselle di posta, domini virtuali e gli alias. Dispone inoltre di supporto per i messaggi per vacation/out-of-the-office.
Questo software è compatibile con diversi database e server IMAP/POP3 , nel seguente articolo userò Mysql come database server, su un server Linux Centos 6.
Breve descrizione e caratteristiche:
Postfix Admin è uno strumento di gestione Web creato per Postfix. Si tratta di un’applicazione basata su PHP per la gestione all’interno di Postfix dei domini virtuali e degli utenti che sono memorizzati in MySQL o PostgreSQL.
- Amministrazione basata sul web per un server di posta Postfix
- Supporto ai database MySQL o PostgreSQL
- Supporto a Fetchmail
- Supporto ai messaggi di Vacation / auto-risposta
- Possibilità di integrazione con Squirrelmail / Roundcube
Primo passo: Requisiti
Per funzionare correttamente Postfix Admin ha bisogno dei seguenti software installati sul server Linux:
- Postfix 2.0 o maggiore.
- Apache 1.3.27 / Lighttpd 1.3.15 o maggiore.
- PHP 5.1.2 o maggiore con supporto a mysql.
- MySQL (5.x raccomandato)
Tutti questi software sono facilmente installabile su Centos 6 tramite yum
Secondo passo: installazione e configurazione Postfix Admin
Scarica l’ultima versione di Postfix Admin da sourceforge , in questo momento l’ultima versione è la 2.3.6.
Una volta scaricato il pacchetto sorgente scompattarlo nella document root del vostro server Web, in questo esempio la mia document root è /srv/posyfixadmin
cd /srv tar -zxvf /tmp/postfixadmin-2.3.6.tar.gz mv postfixadmin-2.3.6 postfixadmin |
Configurare un database
Sul vostro server di database preferito, è necessario creare un nuovo database. Un buon nome per questo potrebbe essere:
postfix
La maggior parte degli utenti utilizza il phpMyAdmin come via più facile, per creare un database ed una utenza oppure è possibile creare utente e database MySQL in modo rapido e semplice eseguendo mysql dalla shell.
La sintassi è la seguente e il simbolo del dollaro è il prompt dei comandi:
$ mysql -uroot -p Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 5.1.67 Source distribution Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE DATABASE postfix; Query OK, 1 row affected (0.00 sec) mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'yourpassword'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON `postfix`.* TO 'postfix'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ |
Ora modificare il file config.inc.php – o – config.local.php e creare o aggiungere le impostazioni qui riportate.
Le impostazioni più importanti sono quelle per la connessione al server database che dovrebbero essere simili a queste:
$CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'yourpassword'; $CONF['database_name'] = 'postfix'; |
Dovete anche cambiare la linea di configurazione:
$CONF['configured'] = false; |
In
$CONF['configured'] = true; |
Postfixadmin non richiede l’accesso in scrittura a tutti i file. Pertanto, è possibile lasciare i file di proprietà di root (o altro utente), fino a quando l’utente del web server (ad esempio www-data o apache) è in grado di leggerli andrà tutto bene.
Ora aprite il vostro browser alla url: http://yourservername.com/setup.php si dovrebbe vedere una pagina come questa:
Farà un check-up di base della configurazione e indicherà se manca qualcosa, alla mia prima verifica mi mancava php-mbstring e php-imap così li ho installati con:
yum install php-mbstring php-imap |
E riavviato Apache, ricaricando la pagina ho ricevuto una “Ok”
Lo script setup.php tenterà di creare la struttura del database ed è possibile specificare una password (che avrete bisogno di usare se volete utilizzare setup.php ancora in futuro), quando si invia il modulo, il valore hash, che è necessario inserire in config.inc.php viene mostrato con queste istruzioni:
if you want to use the password you entered as setup password, edit config.inc.php and set $CONF['setup_password'] = '1a05f571012e9f14c0f80f764d516f80:ec41add25de301101bac12649f929bbcbea8575e'; |
Cambiate quindi questa direttiva nel file di configurazione.
Ora è anche possibile creare l’account amministratore postfixadmin con un modulo come questo:
E questo è tutto, è stato correttamente installato e configurato Postfix Admin, è possibile visitare il vostro sito ed effettuare il login con il vostro account amministratore.
Configurazione di Postfix
Questa è la configurazione minima per far funzionare postfix e buona per il test. Vi permetterà di inviare e-mail non protette sulla porta 25. Nota, è meglio per garantire la connessione di posta elettronica proteggere almeno la password di cui si parla qui di seguito, ma prima accertarsi che la configurazione di base funzioni.
Aggiungere queste informazioni al file /etc/postfix/main.cf:
virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_mailbox_base = /home/vmail virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous |
Create i seguenti file con questo contenuto:
/etc/postfix/mysql_virtual_mailbox_domains.cf
hosts = 127.0.0.1 user = postfix password = my_passwd _2 #replace with the password you set above dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1 |
/etc/postfix/mysql_virtual_mailbox_maps.cf
hosts = 127.0.0.1 user = postfix password = my_passwd_2 #replace with the password you set above dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1 |
/etc/postfix/mysql_virtual_alias_maps.cf
hosts = 127.0.0.1 user = postfix password = my_passwd _2 #replace with the password you set above dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = 1 |
/etc/postfix/mysql_relay_domains.cf
hosts = 127.0.0.1 user = postfix password = my_passwd _2 #replace with the password you set above dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1 |
/etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd mech_list: PLAIN LOGIN auxprop_plugin: rimap |
Aggiornate /etc/default/saslauthd con:
START=yes MECHANISMS="rimap" #imap server address MECH_OPTIONS="localhost" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" |
Aggiungete l’utente postfix al gruppo sasl:
sudo adduser postfix sasl |
Fate ripartire postfix
/etc/init.d/postfix restart |
Ora sarete in grado di creare un nuovo dominio e cassette postali in esso dal web con alcune semplici pagine:
Popular Posts:
- None Found
Hi, I don’t think that this is going to work.. You need to tell postfix to look domains/aliases which postfixadmin created in database, so you need to add virtual_alias_maps, virtual_mailbox_maps… in main.cf file. Correct me if I wrong..
Cheers,
Branko
Not you are absolutely right.
I’ve add the part about postfix configuration.
Thanks
Appreciate the time you took to write this and all works well… with apache.
Using lighttpd 1.4.31 however I ran into problems. Everything went well during the initial setup with postfixadmin but when I tried to login postfixadmin with the credentials I had created I got the 404 not found error.
Changing the ‘postfix_admin_url = /postfixadmin didn’t help, it just refreshed the page asking for my user credentials again.
Nothing major, I will just stick with apache but it would be great if I can get it working with lighttpd as it uses a significantly smaller resource footprint.
Hi bro thanks for your post, I have a question, I´m running Postfix Admin 2.3.2 how can i upgrade with out overwrite all my data settings and db´s? thanks for your answer.
Cheers.
I forgot something I´d like to upgrade to postfix.admin 2.3.6 how do that?
thanks in advance
In your postfix settings you refer to the dbname “dbname = postfixadmin” but you’re dbsetup section talks about ‘postfix’ as the name
how do i reset a certain user quota since their quota limit has been reached and they no longer receive mails