In questa guida spiegheremo come impostare e configurare un server di posta con PostfixAdmin, Postfix, Dovecot, MariaDB e SpamAssasin su un CentOS VPS. PostfixAdmin è un front-end Web basato su PHP che consente di gestire domini virtuali e utenti per un agente di trasporto della posta Postfix. Questa guida dovrebbe funzionare anche su altri sistemi VPS Linux, ma è stata testata e scritta per un VPS CentOS 7.
Se utilizzi un VPS Ubuntu, segui il nostro tutorial per configurare un server di posta con Postfix, Dovecot, Spamassassin, SQLite e PostfixAdmin su un VPS Ubuntu 16.04
Se desideri utilizzare SQLite al posto di MariaDB, segui il nostro tutorial per configurare un server di posta con Postfix, Dovecot, Spamassassin, SQLite e PostfixAdmin su un VPS CentoOS 7
1. Aggiorna il sistema e installa i pacchetti necessari
yum update && yum install wget nano
2. Crea utente di sistema
Per motivi di sicurezza, creeremo un nuovo utente di sistema che sarà il proprietario di tutte le caselle di posta.
useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Virtual Mail User" vmail mkdir -p /var/vmail chmod -R 770 /var/vmail chown -R vmail:mail /var/vmail
3. Installa MariaDB
MariaDB 5.5 viene fornito nel repository CentOS 7 predefinito, per installarlo basta eseguire:
yum install mariadb-server
Per avviare il servizio MariaDB e consentirne l'avvio all'avvio, eseguire i seguenti comandi:
systemctl start mariadb.service systemctl enable mariadb.service
Esegui il comando seguente per proteggere l'installazione di MariaDB:
mysql_secure_installation
Successivamente, dobbiamo creare un database per la nostra istanza postfixadminHQ.
mysql -uroot -p MariaDB [(none)]> CREATE DATABASE postfixadmin; MariaDB [(none)]> GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'strong_password'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> \q
4. Installa PHP e tutti i moduli PHP necessari
CentOS 7 viene fornito con PHP versione 5.4, per installare PHP e i moduli necessari, eseguire:
yum install php php-mysql php-imap php-mbstring php-common
Se non hai installato Apache, installalo con:
yum install httpd
5. Installa PostfixAdmin
L'ultima versione di PostfixAdmin, versione 3, supporta i database MySQL/MariaDB, PostgreSQL e SQLite. In questa guida utilizzeremo MariaDB.
Scarica l'archivio PostfixAdmin da SourceForge ed estrailo nella directory /var/www/html/:
wget -q -O - "https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0.2/postfixadmin-3.0.2.tar.gz" | tar -xzf - -C /var/www/html
Apri il file di configurazione della posta e modifica i seguenti valori:
nano /var/www/html/postfixadmin-3.0.2/config.inc.php
$CONF['configured'] = true; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'strong_password'; $CONF['database_name'] = 'postfixadmin'; $CONF['domain_path'] = 'NO'; $CONF['domain_in_mailbox'] = 'YES';
chown -R apache: /var/www/html/postfixadmin-3.0.2
Per popolare il database vai su https://Your_IP_Address/postfixadmin-3.0.2/setup.php
e dovresti vedere qualcosa come di seguito:Testing database connection - OK - mysqli://postfixadmin:xxxxx@localhost/postfixadmin
Everything seems fine... attempting to create/update database structure
Crea un nuovo utente amministratore:
bash /var/www/html/postfixadmin-3.0.2/scripts/postfixadmin-cli admin add admin@your_domain_name.com --password strong_password22 --password2 strong_password22 --superadmin 1 --active 1
6. Installa e configura postfix
Per installare postfix, esegui il comando seguente:
yum install postfix
Una volta completata l'installazione, dobbiamo creare i file di configurazione:
mkdir -p /etc/postfix/sql/
nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
nano /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1' #expansion_limit = 100
nano /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' #query = SELECT domain FROM domain WHERE domain='%s' #optional query to use when relaying for backup MX #query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1' #expansion_limit = 100
nano /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' #expansion_limit = 100
[ecko_alert color=”blue”]Bloccato da qualche parte? Ottieni un VPS da noi e faremo tutto questo per te, gratuitamente! Installeremo e configureremo completamente un server di posta per te. [/ecko_alert]
Modifica il main.cf
file:
postconf -e "myhostname = $(hostname -f)" postconf -e "virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf" postconf -e "virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf" postconf -e "virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf" postconf -e "smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt" postconf -e "smtpd_tls_key_file = /etc/pki/tls/private/localhost.key" postconf -e "smtpd_use_tls = yes" postconf -e "smtpd_tls_auth_only = yes" postconf -e "smtpd_sasl_type = dovecot" postconf -e "smtpd_sasl_path = private/auth" postconf -e "smtpd_sasl_auth_enable = yes" postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination" postconf -e "mydestination = localhost" postconf -e "mynetworks = 127.0.0.0/8" postconf -e "inet_protocols = ipv4" postconf -e "inet_interfaces = all" postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
Apri il master.cf
file, trova submission inet n
e smtps inet n
sezioni e modificare come segue:
nano /etc/postfix/master.cf
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - n - - smtpd -o syslog_name=postfix/smtps # -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
Abilita il servizio suffisso
systemctl enable postfix systemctl restart postfix
7. Installa e configura Dovecot
Installa dovecot con supporto MySQL usando il comando qui sotto:
yum install dovecot dovecot-mysql
Apri il /etc/dovecot/conf.d/10-mail.conf
file e modificare i seguenti valori:
nano /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/vmail/%d/%n mail_privileged_group = mail mail_uid = vmail mail_gid = mail first_valid_uid = 150 last_valid_uid = 150
Apri il /etc/dovecot/conf.d/10-auth.conf
file e modificare i seguenti valori:
nano /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain login #!include auth-system.conf.ext !include auth-sql.conf.ext
Crea un nuovo dovecot-sql.conf.ext
file:
nano /etc/dovecot/dovecot-sql.conf.ext
driver = mysql connect = host=localhost dbname=postfixadmin user=postfixadmin password=strong_password default_pass_scheme = MD5-CRYPT password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1' user_query = SELECT '/var/vmail/%d/%u' as home, 'maildir:/var/vmail/%d/%u' as mail, 150 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
Nel /etc/dovecot/conf.d/10-ssl.conf
file abilita il supporto SSL:
ssl = yes
Apri il /etc/dovecot/conf.d/15-lda.conf
file e imposta il postmaster_address
indirizzo email.
postmaster_address = postmaster@your_domain_name.com
Apri il /etc/dovecot/conf.d/10-master.conf
file, trova la sezione lmtp del servizio e cambiala in:
service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } }
trova la sezione di autenticazione del servizio e cambiala in:
service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail #group = vmail } user = dovecot }
Modificare la sezione auth-worker del servizio come segue:
service auth-worker { user = vmail }
Imposta i permessi:
chown -R vmail:dovecot /etc/dovecot chmod -R o-rwx /etc/dovecot
Abilita e riavvia il servizio dovecot
systemctl enable dovecot systemctl restart dovecot
8. Installa e configura Spamassassin
Installa spamassassin usando il comando qui sotto:
yum install spamassassin
Crea un utente di sistema spamassassin:
groupadd spamd useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd chown spamd:spamd /var/log/spamassassin
9. Configura Postfix per utilizzare SpamAssassin
Apri il master.cf
archiviare e modificare come segue:
nano /etc/postfix/master.cf
cambia
smtp inet n - n - - smtpd
con
smtp inet n - n - - smtpd -o content_filter=spamassassin
aggiungi la seguente riga alla fine del file:
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Abilita e riavvia il servizio spamassassin
systemctl enable spamassassin systemctl restart spamassassin
Riavvia il servizio suffisso
systemctl restart postfix
Se tutto è impostato correttamente ora dovresti essere in grado di accedere al tuo backend PostfixAdmin andando su http://Your_IP_Address/postfixadmin-3.0.2.2
e crea il tuo primo dominio virtuale e la tua casella di posta.
Ovviamente, non devi configurare un server di posta con PostfixAdmin e MariaDB su CentOS 7, se utilizzi uno dei nostri servizi di hosting di server di posta, nel qual caso puoi semplicemente chiedere ai nostri esperti amministratori Linux di configurare un server di posta per te. Sono disponibili 24 ore su 24, 7 giorni su 7 e si prenderanno immediatamente cura della tua richiesta.
PS . Se ti è piaciuto questo post, su come configurare un server di posta con PostfixAdmin e MariaDB su CentOS 7, condividilo con i tuoi amici sui social network utilizzando i pulsanti qui sotto o lascia semplicemente un commento nella sezione Commenti qui sotto. Grazie.