Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
serveurs:installation:postfix [2022/11/07 10:44] – [Définir un "sender" par défaut] jpmilcent | serveurs:installation:postfix [2024/02/20 14:53] (Version actuelle) – [Installer Postfix] jpmilcent |
---|
| |
===== Installer Postfix ===== | ===== Installer Postfix ===== |
| * Reprise de l'installation de Postfix, la modification majeure est la réécriture du Sender, ce changement permet d envoyer un mail sans la réécriture -r dans la commande d'envoie. |
* Installer les paquets nécessaires : ''aptitude install libsasl2-modules postfix bsd-mailx '' | * Installation de Postfix : <code bash> |
* Réponses à fournir dans l'interface d'installation de //Postfix// : | apt install libsasl2-modules postfix bsd-mailx |
* Type : //site-internet// | </code> |
* FQDN : //web-srv.<domaine-sinp>// ou //db-srv.<domaine-sinp>// ou //bkp-srv.<domaine-sinp>// | * Choisir : ''site internet'' |
* Par la suite, il est possible de modifier la valeur FQDN en éditant le fichier de conf de //Postfix// : ''vi /etc/postfix/main.cf'' | * Indique le domaine du serveur comme nom de courrier. Ex. : ''silene.eu'' |
* Modifier la propriété //myhostname// si elle n'est pas correcte : '' myhostname = web-srv.<domaine-sinp> '' ou '' myhostname = db-srv.<domaine-sinp> '' ou '' myhostname = bkp-srv.<domaine-sinp> '' | * Ajout des informations du mail permettant l'envoie du message. Dans notre cas l'adresse mail est hébergée sur OVH : <code bash> |
* Modifier aussi la valeur présente dans le fichier : ''vi /etc/mailname'' | vi /etc/postfix/sasl/sasl_passwd |
* Redémarrer Postfix : ''systemctl restart postfix'' | </code> |
* Se connecter au compte //Gmail// et suivre le lien : https://myaccount.google.com/security | * Ajouter le contenu (remplacer ''<mot-de-passe>'' par le mot de passe du compte email mailer@<domaine-sinp> d'**OVH** et <domaine-sinp> par le domaine du SINP, ex. //silene.eu//): <code bash> |
* Activer la validation en 2 étapes | [ssl0.ovh.net]:587 mailer@<domaine-sinp>:<mot-de-passe> |
* Générer 3 codes de sécurité pour les Postfix de l'instance Web et DB en suivant ce lien : https://security.google.com/settings/security/apppasswords | </code> |
* Sélectionner : ''Autre (personnalisé)'' | * Créer le fichier de base de données //sasl_passwd.db// qui contiendra le mot de passe & vérifier qu'elle est bien présente : <code bash> |
* Saisir : ''Postfix (web-<region>-sinp)'', le second ''Postfix (db-<region>-sinp)'' et le troisième ''Postfix (bkp-<region>-sinp)'' | postmap /etc/postfix/sasl/sasl_passwd |
* Copier/coller le mot de passe généré | ll /etc/postfix/sasl/ |
* Ouvrir ou créer le fichier ''vi /etc/postfix/sasl/sasl_passwd'' et y ajouter le contenu suivant : | </code> |
* En test : <code>[smtp-relay.gmail.com]:587 <email-gmail>:<mot-de-passe-du-compte-email-gmail></code> | * Puis leurs attribuer les droits nécessaire : <code bash> |
* En prod : <code>[ssl0.ovh.net]:587 <email-ovh>:<mot-de-passe-du-compte-email-ovh></code> | chown root:root /etc/postfix/sasl/sasl_passwd* |
* Créer le fichier de base de données qui contiendra les mots de passe : '' postmap /etc/postfix/sasl/sasl_passwd '' | chmod 0600 /etc/postfix/sasl/sasl_passwd* |
* Vérifier que le fichier //sasl_passwd.db// existe : ''ls -al /etc/postfix/sasl/'' | </code> |
* **ATTENTION** : Il est nécessaire de relancer la commande ''postmap'' si le fichier //sasl_passwd// change ! | * Éditer le fichier de configuration de Postfix : <code bash> |
* Limiter l'accès à //root// aux fichiers //sasl_passwd// et //sasl_passwd.db// : | vi /etc/postfix/main.cf |
* '' chown root:root /etc/postfix/sasl/sasl_passwd* '' | </code> |
* '' chmod 0600 /etc/postfix/sasl/sasl_passwd* '' | * Remplacer le contenu suivant, ''<server-name>'' peut valoir ''web-paca-sinp'' par exemple : <code properties> |
* Configurer le serveur SMTP relai dans Posfix : | smtpd_banner = $myhostname ESMTP |
* Éditer le fichier et : '' vi /etc/postfix/main.cf '' et modifier la propriété suivante : | relayhost = [ssl0.ovh.net]:587 |
* En test : <code properties> relayhost = [smtp-relay.gmail.com]:587 </code> | myhostname = <server-name> |
* En prod : <code properties> relayhost = [ssl0.ovh.net]:587 </code> | mydestination = $myhostname, localhost.$mydomain, localhost |
* Ajouter les propriétés suivantes en fin de fichier : <code properties> | </code> |
| * Commenter le contenu suivant : <code properties> |
| smtp_tls_security_level=may |
| smtpd_tls_security_level=may |
| </code> |
| * Ajouter le contenu suivant : <code properties> |
# Enable SASL authentication | # Enable SASL authentication |
smtp_sasl_auth_enable = yes | smtp_sasl_auth_enable = yes |
# Location of CA certificates | # Location of CA certificates |
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt | smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt |
| # Add Header rewrite (solution 1 🗑️) |
| # smtp_header_checks = pcre:/etc/postfix/smtp_header_checks |
| # Add Sender rewrite (solution 2) |
| sender_canonical_classes = envelope_sender, header_sender |
| sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps |
</code> | </code> |
* Redémarrer //Postfix// : '' systemctl restart postfix '' | |
| |
===== Note concernant le service Systemd Postfix ===== | ===== Note concernant le service Systemd Postfix ===== |
| |
===== Définir un "sender" par défaut ===== | ===== Définir un "sender" par défaut ===== |
Si l'on souhaite contrôler l'adresse email qui envoie les emails du serveur (le ''FROM:''), deux solutions : | Si l'on souhaite contrôler l'adresse email qui envoie les emails du serveur (le ''FROM:''), deux solutions : |
- réécrire l'entête des emails envoyés à l'aide du paramètre ''smtp_header_check'' et mettre en place un fichier de remplacement à l'aide du paramètre ''smtp_generic_maps'' | - réécrire l'entête des emails envoyés à l'aide du paramètre ''smtp_header_check'' et mettre en place un fichier de remplacement à l'aide du paramètre ''smtp_generic_maps''. Cette solution semble poser problème si l'on souhaite installer OpenDkim. |
- réecrire avec le from à l'aide de ''sender_canonical_maps'' | - réecrire avec le from à l'aide de ''sender_canonical_maps'' |
| |
Pour la solution 1 (voir aussi : https://superuser.com/a/695191): | 🗑️ Pour la **solution 1** (voir aussi : https://superuser.com/a/695191): |
* Installer le paquet supplémentaire suivant : '' aptitude install postfix-pcre '' | * Installer le paquet supplémentaire suivant : <code bash> apt install postfix-pcre </code> |
* Ajouter le paramètre suivant au fichier ///etc/postfix/main.cf// : '' vi /etc/postfix/main.cf '' <code properties> | * Vérifier la présence du paramètre suivant dans le fichier ///etc/postfix/main.cf// : '' vi /etc/postfix/main.cf '' <code properties> |
# Add Header rewrite | # Add Header rewrite |
smtp_header_checks = pcre:/etc/postfix/smtp_header_checks | smtp_header_checks = pcre:/etc/postfix/smtp_header_checks |
</code> | </code> |
* Exemple : <code>/^From:\s+.*/ REPLACE From: "Silene web" <mailer@silene.eu></code> | * Exemple : <code>/^From:\s+.*/ REPLACE From: "Silene web" <mailer@silene.eu></code> |
* Redémarrer //Postfix// : '' systemctl restart postfix '' | * Redémarrer //Postfix// : <code bash> systemctl restart postfix </code> |
| |
Pour la solution 2, ''sender_canonical_maps'' : | Pour la **solution 2**, ''sender_canonical_maps'' : |
* Créer le fichier suivant : <code bash> | * Créer le fichier suivant : <code bash> |
vi /etc/postfix/sender_canonical_maps | vi /etc/postfix/sender_canonical_maps |
</code> | </code> |
* Ajouter le contenu :<code> | * Ajouter le contenu :<code> |
/.+/ mailer@cbn-alpin.fr | /.+/ mailer@<domaine-sinp> |
</code> | </code> |
* Éditer le fichier de conf de Postfix : ''vi /etc/postfix/main.cf'' | * Éditer le fichier de conf de Postfix : <code bash>vi /etc/postfix/main.cf</code> |
* Ajouter le contenu : <code> | * Ajouter le contenu : <code> |
# Add Sender rewrite | # Add Sender rewrite |
sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps | sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps |
</code> | </code> |
* Redémarrer //Postfix// : '' systemctl restart postfix '' | * Redémarrer //Postfix// : <code bash> systemctl restart postfix </code> |
| |
===== Tester l'envoie d'email ===== | ===== Tester l'envoie d'email ===== |
* Commande d'envoi d'email : | * Commande d'envoi d'email : <code bash>echo "THIS IS A TEST EMAIL sended at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" adminsys@<domaine-sinp> </code> |
* En test : '' echo "THIS IS A TEST EMAIL sended at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" -r "mailer@cbn-alpin.fr" adminsys@<domaine-sinp> '' | * Vérifier en parallèle les logs : <code bash>tail -f /var/log/syslog </code> |
* En prod : '' echo "THIS IS A TEST EMAIL sended at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" -r "mailer@<domaine-sinp>" adminsys@<domaine-sinp> '' | |
* Vérifier en parallèle les logs : '' tail -f /var/log/syslog '' | |
| |