GNU/Linux >> Linux Esercitazione >  >> Cent OS

Configura un server di posta con PostfixAdmin e MariaDB su CentOS 7

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.


Cent OS
  1. Configura un server di posta con PostfixAdmin

  2. Come installare e configurare Postfix Mail Server su CentOS 8

  3. Installa Zenario con Apache, PHP e MariaDB su CentOS 7

  4. Come configurare un server di posta con PostfixAdmin su CentOS 7

  5. Configura un server di posta con PostfixAdmin su Debian 9

Come configurare facilmente un server di posta completo su CentOS 7 con iRedMail

Come configurare facilmente un server di posta completo su CentOS 8 con iRedMail

Parte 4:configurazione di SPF e DKIM con Postfix su CentOS 8/RHEL 8 Mail Server

Parte 3:PostfixAdmin – Crea cassette postali virtuali su CentOS 8/RHEL 8 Mail Server

Come installare il server di posta con PostfixAdmin su CentOS 7

Come configurare un server di posta completo con IRedMail su Centos 7 VPS