Dans ce guide, nous expliquerons comment installer et configurer un serveur de messagerie avec PostfixAdmin, Postfix, Dovecot, MariaDB et SpamAssasin sur un VPS CentOS. PostfixAdmin est une interface Web basée sur PHP qui vous permet de gérer des domaines virtuels et des utilisateurs pour un agent de transport de courrier Postfix. Ce guide devrait également fonctionner sur d'autres systèmes VPS Linux, mais a été testé et écrit pour un VPS CentOS 7.
Si vous utilisez un VPS Ubuntu, suivez notre tutoriel pour configurer un serveur de messagerie avec Postfix, Dovecot, Spamassassin, SQLite et PostfixAdmin sur un VPS Ubuntu 16.04
Si vous souhaitez utiliser SQLite au lieu de MariaDB, suivez notre tutoriel pour configurer un serveur de messagerie avec Postfix, Dovecot, Spamassassin, SQLite et PostfixAdmin sur un VPS CentoOS 7
1. Mettez à jour le système et installez les packages nécessaires
yum mettre à jour &&yum installer wget nano
2. Créer un utilisateur système
Pour des raisons de sécurité, nous allons créer un nouvel utilisateur système qui sera le propriétaire de toutes les boîtes aux lettres.
useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Utilisateur de messagerie virtuelle" vmailmkdir -p /var/vmailchmod -R 770 /var/vmailchown -R vmail:mail /var/vmail
3. Installer MariaDB
MariaDB 5.5 est livré dans le référentiel CentOS 7 par défaut, pour l'installer, exécutez simplement :
yum installer mariadb-server
Pour démarrer le service MariaDB et lui permettre de démarrer au démarrage, exécutez les commandes suivantes :
systemctl start mariadb.servicesystemctl enable mariadb.service
Exécutez la commande suivante pour sécuriser votre installation MariaDB :
mysql_secure_installation
Ensuite, nous devons créer une base de données pour notre instance postfixadminHQ.
mysql -uroot -pMariaDB [(aucun)]> CRÉER UNE BASE DE DONNÉES postfixadmin;MariaDB [(aucun)]> ACCORDER TOUS LES PRIVILÈGES SUR postfixadmin.* À 'postfixadmin'@'localhost' IDENTIFIÉ PAR 'strong_password';MariaDB [(aucun) )]> PRIVILÈGES FLUSH ; MariaDB [(aucun)]> \q
4. Installez PHP et tous les modules PHP nécessaires
CentOS 7 est livré avec PHP version 5.4, pour installer PHP et les modules nécessaires, exécutez :
yum installer php php-mysql php-imap php-mbstring php-common
Si Apache n'est pas installé, installez-le avec :
yum installer httpd
5. Installer PostfixAdmin
La dernière version de PostfixAdmin, version 3, prend en charge les bases de données MySQL/MariaDB, PostgreSQL et SQLite. Dans ce guide, nous utiliserons MariaDB.
Téléchargez l'archive PostfixAdmin depuis SourceForge et extrayez-la dans le répertoire /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
Ouvrez le fichier de configuration de messagerie et modifiez les valeurs suivantes :
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
Pour remplir la base de données, allez sur https://Your_IP_Address/postfixadmin-3.0.2/setup.php
et vous devriez voir quelque chose comme ci-dessous :Testing database connection - OK - mysqli://postfixadmin:xxxxx@localhost/postfixadmin
Everything seems fine... attempting to create/update database structure
Créez un nouvel utilisateur administrateur :
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. Installer et configurer postfix
Pour installer postfix, exécutez la commande ci-dessous :
yum install postfix
Une fois l'installation terminée, nous devons créer des fichiers de configuration :
mkdir -p /etc/postfix/sql/
nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user =postfixadminpassword =strong_passwordhosts =localhostdbname =postfixadminquery =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 =postfixadminpassword =strong_passwordhosts =localhostdbname =postfixadminquery =SELECT maildir FROM boîte aux lettres,alias_domain WHERE alias_domain.alias_domain ='%d' and mailbox.username =CONCAT('%u', '@', alias_domain.target_domain) AND boîte aux lettres .active =1 ET alias_domain.active='1'
nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user =postfixadminpassword =strong_passwordhosts =localhostdbname =postfixadminquery =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 ET alias_domain.active='1'
nano /etc/postfix/sql/mysql_virtual_alias_maps.cf
user =postfixadminpassword =strong_passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias WHERE address='%s' AND active ='1'#expansion_limit =100
nano /etc/postfix/sql/mysql_virtual_domains_maps.cf
user =postfixadminpassword =strong_passwordhosts =localhostdbname =postfixadminquery =SELECT domaine FROM domaine WHERE domaine='%s' AND active ='1'#query =SELECT domaine FROM domaine WHERE domaine='%s'#requête facultative à utiliser quand relais pour la sauvegarde MX#query =SELECT domaine FROM domaine WHERE domaine='%s' AND backupmx ='0' AND active ='1'#expansion_limit =100
nano /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
user =postfixadminpassword =strong_passwordhosts =localhostdbname =postfixadminquery =SELECT quota FROM boîte aux lettres WHERE username='%s' AND active ='1'
nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user =postfixadminpassword =strong_passwordhosts =localhostdbname =postfixadminquery =SELECT maildir FROM boîte aux lettres WHERE username='%s' AND active ='1'#expansion_limit =100
[ecko_alert color="blue"]Coincé quelque part ? Obtenez un VPS de notre part et nous ferons tout cela pour vous, gratuitement ! Nous installerons et configurerons complètement un serveur de messagerie pour vous. [/ecko_alert]
Modifiez le main.cf
fichier :
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, rejette_unauth_destination" conf -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"
Ouvrez le master.cf
fichier, trouver submission inet n
et smtps inet n
sections et modifiez-les comme suit :
nano /etc/postfix/master.cf
soumission 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_helo_client_restrictions=$mua_helo_client_restrictions# -o smtp_restrictions# -o _helo_client_restrictions# -o smtp_restrictions# -o smtpd_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=ORIGINATINGsmtps 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=ORIGI NATION
Activer le service postfix
systemctl enable postfixsystemctl restart postfix
7. Installer et configurer Dovecot
Installez dovecot avec le support MySQL en utilisant la commande ci-dessous :
yum install dovecot dovecot-mysql
Ouvrez le /etc/dovecot/conf.d/10-mail.conf
fichier et modifiez les valeurs suivantes :
nano /etc/dovecot/conf.d/10-mail.conf
mail_location =maildir :/var/vmail/%d/%nmail_privileged_group =mailmail_uid =vmailmail_gid =mailfirst_valid_uid =150last_valid_uid =150
Ouvrez le /etc/dovecot/conf.d/10-auth.conf
fichier et modifiez les valeurs suivantes :
nano /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms =plain login#!include auth-system.conf.ext!include auth-sql.conf.ext
Créez un nouveau dovecot-sql.conf.ext
fichier :
nano /etc/dovecot/dovecot-sql.conf.ext
driver =mysqlconnect =host=localhost dbname=postfixadmin user=postfixadmin password=strong_passworddefault_pass_scheme =MD5-CRYPTpassword_query =SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/ var/vmail/%d/%n' comme userdb_mail, 150 comme userdb_uid, 8 comme 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 boîte aux lettres WHERE username ='%u' ET actif ='1'
Dans le /etc/dovecot/conf.d/10-ssl.conf
fichier activer la prise en charge SSL :
ssl =oui
Ouvrez le /etc/dovecot/conf.d/15-lda.conf
fichier et définissez le postmaster_address
adresse e-mail.
postmaster_address =postmaster@votre_nom_de_domaine.com
Ouvrez le /etc/dovecot/conf.d/10-master.conf
fichier, recherchez la section service lmtp et remplacez-la par :
service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode =0600 user =postfix group =postfix }}
recherchez la section d'authentification du service et remplacez-la par :
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}Modifiez la section service auth-worker comme suit :
service auth-worker { user =vmail}Définissez les autorisations :
chown -R vmail:dovecot /etc/dovecotchmod -R o-rwx /etc/dovecotActiver et redémarrer le service pigeonnier
systemctl enable dovecot systemctl restart dovecot8. Installer et configurer Spamassassin
Installez spamassassin à l'aide de la commande ci-dessous :
yum installer spamassassinCréez un utilisateur système spamassassin :
groupadd spamduseradd -g spamd -s /bin/false -d /var/log/spamassassin spamdchown spamd:spamd /var/log/spamassassin9. Configurer Postfix pour utiliser SpamAssassin
Ouvrez le
master.cf
fichier et modifiez-le comme suit :nano /etc/postfix/master.cfchanger
smtp inet n - n - - smtpdavec
smtp inet n - n - - smtpd -o content_filter=spamassassinajoutez la ligne suivante à la fin du fichier :
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${expéditeur} ${destinataire}Activer et redémarrer le service spamassassin
systemctl enable spamassassin systemctl restart spamassassinRedémarrez le service postfix
systemctl redémarrer le suffixeSi tout est configuré correctement maintenant, vous devriez pouvoir vous connecter à votre backend PostfixAdmin en allant sur
http://Your_IP_Address/postfixadmin-3.0.2.2
et créez votre premier domaine virtuel et votre première boîte aux lettres.Bien sûr, vous n'êtes pas obligé de configurer un serveur de messagerie avec PostfixAdmin et MariaDB sur CentOS 7, si vous utilisez l'un de nos services d'hébergement de serveur de messagerie, auquel cas vous pouvez simplement demander à nos administrateurs Linux experts de configurer un serveur de messagerie. pour toi. Ils sont disponibles 24h/24 et 7j/7 et prendront immédiatement en charge votre demande.
PS . Si vous avez aimé cet article sur la configuration d'un serveur de messagerie avec PostfixAdmin et MariaDB sur CentOS 7, partagez-le avec vos amis sur les réseaux sociaux à l'aide des boutons ci-dessous ou laissez simplement un commentaire dans la section Commentaires ci-dessous. Merci.