In questo tutorial, ti mostreremo come installare e configurare il server di posta con PostfixAdmin su CentOS 7. Per chi non lo sapesse, Postfixadmin è un frontend web per MySQL o Database MariaDB utilizzato da Postfix.Con Postfixadmin possiamo gestire facilmente da un browser web il nostro servizio Postfix, aggiungendo e rimuovendo utenti e domini di posta, alias di posta, quote disco, ecc.
Questo articolo presuppone che tu abbia almeno una conoscenza di base di Linux, sappia come usare la shell e, soprattutto, che ospiti il tuo sito sul tuo VPS. L'installazione è abbastanza semplice e presuppone che tu sono in esecuzione nell'account root, in caso contrario potrebbe essere necessario aggiungere 'sudo
' ai comandi per ottenere i privilegi di root. Ti mostrerò l'installazione passo passo di Mail Server con PostfixAdmin su un server CentOS 7.
Prerequisiti
- Un server che esegue uno dei seguenti sistemi operativi:CentOS 7.
- Si consiglia di utilizzare una nuova installazione del sistema operativo per prevenire potenziali problemi.
- Accesso SSH al server (o semplicemente apri Terminal se sei su un desktop).
- Un
non-root sudo user
o accedere all'root user
. Ti consigliamo di agire comenon-root sudo user
, tuttavia, poiché puoi danneggiare il tuo sistema se non stai attento quando agisci come root.
Installa il server di posta con PostfixAdmin su CentOS 7
Passaggio 1. Innanzitutto, iniziamo assicurandoci che il tuo sistema sia aggiornato.
yum clean all yum -y update
Passaggio 2. Installa il server LAMP.
È richiesto uno stack server CentOS 7 LAMP. Se non hai installato una LAMP, puoi seguire la nostra guida qui. Inoltre, installa i moduli PHP richiesti:
yum install php70w-cli php70w-gd php70w-xml php70w-curl php70w-mysql php70w-zip php70w-mbstring php70w-mcrypt
Passaggio 3. Configurazione di MariaDB per PostfixAdmin.
Per impostazione predefinita, MariaDB non è protetto. Puoi proteggere MariaDB usando mysql_secure_installation
sceneggiatura. Dovresti leggere attentamente e sotto ogni passaggio che imposterà la password di root, rimuoverà gli utenti anonimi, non consentirà l'accesso root remoto e rimuoverà il database di test e l'accesso per proteggere MariaDB:
mysql_secure_installation
Configuralo in questo modo:
- Set root password? [Y/n] y - Remove anonymous users? [Y/n] y - Disallow root login remotely? [Y/n] y - Remove test database and access to it? [Y/n] y - Reload privilege tables now? [Y/n] y
Avanti, dovremo accedere alla console MariaDB e creare un database per PostfixAdmin. Esegui il seguente comando:
mysql -u root -p
Questo ti chiederà una password, quindi inserisci la tua password di root MariaDB e premi Invio. Una volta effettuato l'accesso al server del database, devi creare un database per Installazione di PostfixAdmin:
CMariaDB [(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
Passaggio 4. Installazione di PostfixAdmin.
La prima cosa da fare è andare alla pagina di download di PostfixAdmin e scaricare l'ultima versione stabile di PostfixAdmin:
cd /var/www/html wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.11.tar.gz tar -xzf postfixadmin-3.3.11.tar.gz
Apri il file di configurazione principale:
nano /var/www/html/postfixadmin-3.3.11/config.inc.php
Modifica i seguenti valori:
$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';
Ora devi assegnare la proprietà dei file e delle cartelle all'utente e al gruppo di Apache. Per farlo, il comando è:
chown -R apache: /var/www/html/postfixadmin-3.3.11
Per popolare il database vai su https://Your_IP_Address/postfixadmin-3.0.2/setup.php e dovresti vedere qualcosa come il seguente:
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.3.11/scripts/postfixadmin-cli admin add admin@your_domain_idroot.us --password strong_password22 --password2 strong_password22 --superadmin 1 --active 1
Passaggio 5. Installazione e configurazione di Postfix.
Installa postfix con il seguente comando:
yum -y 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
Modifica i seguenti valori:
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
Modifica i seguenti valori:
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
Modifica i seguenti valori:
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
Modifica i seguenti valori:
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
Modifica i seguenti valori:
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
Modifica i seguenti valori:
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
Modifica i seguenti valori:
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' #expansion_limit = 100
Successivamente, modifica il file main.cf:
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 le sezioni di submission inet n e smtps inet n e modifica come segue:
nano /etc/postfix/master.cf
Modifica i seguenti valori:
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
Infine, abilita il servizio postfix:
systemctl enable postfix systemctl restart postfix
Passaggio 6. Installazione e configurazione di Dovecot.
Installa dovecot usando il comando seguente:
yum install dovecot dovecot-mysql
Apri il file /etc/dovecot/conf.d/10-mail.conf:
nano /etc/dovecot/conf.d/10-mail.conf
Cambia i seguenti valori:
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 file /etc/dovecot/conf.d/10-auth.conf:
nano /etc/dovecot/conf.d/10-auth.conf
Cambia i seguenti valori:
auth_mechanisms = plain login #!include auth-system.conf.ext !include auth-sql.conf.ext
Crea un nuovo file dovecot-sql.conf.ext:
nano /etc/dovecot/dovecot-sql.conf.ext
Modifica i seguenti valori:
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 file /etc/dovecot/conf.d/10-ssl.conf abilita il supporto SSL:
ssl = yes
Apri il file /etc/dovecot/conf.d/15-lda.conf e imposta l'indirizzo email postmaster_address:
postmaster_address = postmaster@your_domain_name.com
Apri il file /etc/dovecot/conf.d/10-master.conf, trova la sezione service lmtp 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 modificala 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 }
Cambia la sezione Service auth-worker come segue:
service auth-worker { user = vmail }
Ora devi assegnare la proprietà dei file e delle cartelle. Per farlo, il comando è:
chown -R vmail:dovecot /etc/dovecot chmod -R o-rwx /etc/dovecot
Infine, abilita e riavvia il servizio dovecot:
systemctl enable dovecot systemctl restart dovecot
Passaggio 7. Installazione e configurazione di Spamassassin.
Installa SpamAssassin usando il comando seguente:
yum -y install spamassassin
Crea un utente del sistema SpamAssassin:
groupadd spamd useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd chown spamd:spamd /var/log/spamassassin
Avanti, configura Postfix per usare SpamAssassin:
nano /etc/postfix/master.cf
Cambia valori:
smtp inet n - n - - smtpd
Con:
smtp inet n - n - - smtpd -o content_filter=spamassassin
Aggiungi la seguente riga alla fine del file:
systemctl enable spamassassin systemctl restart spamassassin
Infine, riavvia il servizio postfix:
systemctl restart postfix
Passaggio 8. Accesso a PostfixAdmin.
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 casella di posta.
Congratulazioni! Hai installato correttamente PostfixAdmin. Grazie per aver utilizzato questo tutorial per l'installazione del server di posta con PostfixAdmin sul sistema CentOS 7. Per ulteriore aiuto o informazioni utili, ti consigliamo di controllare il sito Web ufficiale di PostfixAdmin.