Postfix » Historique » Révision 78
Révision 77 (Patrice Nadeau, 2017-10-07 12:42) → Révision 78/79 (Patrice Nadeau, 2017-10-07 17:18)
h1. Postfix > Issue : #16 http://www.postfix.org Logiciel de courrier électronique permettant, le transfert de courrier électronique (Message Transfert Agent). Souvent installé de base pour l’envoie des message du serveur à une adresse externe. {{lastupdated_at}} {{lastupdated_by}} ---- {{toc}} Si le serveur doit envoyer et recevoir des messages de et vers l’Internet, les items suivant sont obligatoire : * Domaine : Un nom de domaine enregistrer et sa gestion disponible * MX records : pour permettre la réception de courriel. * SPF records : pour permettre l’envoie de messages sans être bannis par les « reverse lookup ». Un serveur de relais (SMTP) externe seras nécessaire pour envoyer des courriels vers l’Internet si le port 25 est bloqué en entré (la majorité des cas). Les fichiers de configuration sont : * _/etc/postfix/master.cf_ * _/etc/postfix/main.cf_ h2. Installation <pre><code class="bash"> sudo zypper install postfix perl-Mail-SP wget http://download.opensuse.org/repositories/devel:/languages:/perl/openSUSE_Leap_42.1/noarch/postfix-policyd-spf-perl-2.010-3.1.noarch.rpm sudo rpm -Uhv postfix-policyd-spf-perl-2.010-3.1.noarch.rpm sudo systemctl enable postfix sudo systemctl start postfix # Ouvrir dans le pare-feu seulement si le serveur doit recevoir des courriels sudo yast firewall services add service=service:smtp zone=EXT </code></pre> h2. Configuration de base Si les courriels doivent sortir via un relais sur un autre serveur SMTP, modifier le fichier _/etc/postfix/main.cf_ : <pre><code class="bash"> # Inscrire votre serveur SMTP de sortie relayhost = smtp_server # Spécifier toutes les interfaces inet_interfaces = all # Choisir une des les lignes suivantes # DNS server : mydestination = $myhostname, localhost.$mydomain, $mydomain # DNS forwarder pfSense : mydestination = $myhostname, localhost.$mydomain # Permettre aux machines du réseau local, l'utilisation du serveur smtpd_client_restrictions = permit_mynetworks # Utilisation de TLS smtp_tls_security_level smtpd_tls_security_level = may smtpd_tls_security_level = may </code></pre> > La ligne myhostname DOIT être la même que l’enregistrement DNS de type MX sur internet pour ce domaine. h2. Création de «blacklist» et de «whitelist». > Informations provenant de : http://www.postfix.org/RESTRICTION_CLASS_README.html Créer un fichier _/etc/postfix/sender_access_. Placer à l’intérieur, l’adresse de courriel, le nom de domaine ou l’adresse IP avec l’une des options : * OK * REJECT Modifier le fichier _/etc/postfix/sender_access_ pour inclure les adresse IP, domaines, adresses à bloquer : > Ex. <pre><code class="bash"> # myfriend.com OK # myennemies.com REJECT # myfriend@example.com OK # junk@spam.com REJECT # marketing@ REJECT # theboss@ OK # deals.marketing.com REJECT # somedomain.com OK 101.15.251.176 REJECT </code></pre> Conversion du fichier en format db : <pre><code class="bash"> postmap /etc/postfix/sender_access </code></pre> Modifier le fichier _/etc/postfix/main.cf_ <pre><code class="bash"> smtpd_recipient_restrictions = ... check_sender_access hash:/etc/postfix/sender_access </code></pre> Relire la nouvelle configuration : <pre><code class="bash"> systemctl reload postfix.service </code></pre> La même chose peut-être faite pour bloquer l’accès à un client. Utiliser *client_access* au lieu de _sender_acess_. h3. Utilisation de services de « blacklist » internet Avant d'utiliser ses services, vérifier si l'usager envisagé est permis : * https://www.spamhaus.org/organization/dnsblusage/ * http://www.barracudacentral.org/rbl Modifier le fichier _/etc/postfix/main.cf_ pour ajouter : <pre><code class="bash"> smtpd_recipient_restrictions = ... reject_unauth_destination, reject_rbl_client zen.spamhaus.org, reject_rbl_client b.barracudacentral.org, permit </code></pre> Relire la configuration <pre><code class="bash"> systemctl reload postix.service </code></pre> h3. Utilisation des enregistrements SPF lors de la réception de courriel Modifier le fichier _/etc/postfix/main.cf_ et ajouter *à la suite* de la ligne _smtpd_recipient_restrictions_ : <pre><code class="bash"> check_policy_service unix:private/policy </code></pre> Modifier le fichier_/etc/postfix/master.cf_ eta jouter la ligne : <pre><code class="bash"> policy unix - n n - 0 spawn user=nobody argv=/usr/bin/perl /usr/lib/policyd-spf-perl </code></pre> h3. Alias Usagers systèmes devant être redirigé vers des comptes utilisateurs réel. Les ajouter dans le fichier _/etc/postfix/aliases_ Lancer la commande _newaliases_ pour activer les changements. h3. Options courantes Dans _main.cf_ : * *message_size_limit* : h2. Entrés DNS h3. A record h3. MX record h3. SPF record Ajouter ceux du fournisseur internet > Le fournisseur et et tous ses abonnées pourront « se faire passer » pour le domaine ! h2. Test h3. SPF Envoyer un courriel à une des adresses suivantes : * check-auth@verifier.port25.com * check-auth2@verifier.port25.com h2. TLS Site internet pour vérifier la configuration TLS : * Envoie : https://www.checktls.com/perl/TestSender.pl * Réception : https://www.checktls.com/perl/TestReceiver.pl 2 paramètres sont utilisés : * *smtp_tls_security_level* : En envoie vers un autre serveur SMTP * *smtpd_tls_security_level* : En réception d'un client Les valeurs suivantes peuvent être utilisées : * *none* : TLs n'est pas utilisé * *may* : TLS est utilisé/annoncé au client distant mais n'est pas obligatoire (Opportunistic) * *encrypt* : TLS DOIT être utilisé. Selon le "RFC 2487":http://tools.ietf.org/html/rfc2487, cette option ne devrait pas être utilisée avec des serveur publiques. h3. Préalable Dans le fichier _/etc/postfix/master.cf_, enlever le commentaire au début de la ligne <pre><code class="bash"> tlsmgr unix - - n 1000? 1 tlsmgr </code></pre> Relire la configuration <pre><code class="bash"> systemctl reload postfix </code></pre> h3. De Postfix vers un autre serveur SMTP Dans le fichier _/etc/postfix/mainc.cf_ <pre><code class="bash"> # Utilise l'encryption si disponible smtp_tls_security_level = may # Ajoute les messages TLS au journal smtp_tls_loglevel = 1 </code></pre> Relire la configuration <pre><code class="bash"> systemctl reload postfix </code></pre> h3. D'un client vers Postfix > Voir #54 Si un certificat externe n'est pas disponible, en généré un local : <pre><code class="bash"> cd /etc/postfix openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509 </code></pre> Dans le fichier _/etc/postfix/main./cf_ <pre><code class="bash"> # Utilise l'encryption si disponible smtpd_tls_security_level = may # Ajoute les messages TLs au journal smtpd_tls_loglevel = 1 # Fichiers du certificat smtpd_tls_key_file = /etc/postfix/smtpd.key smtpd_tls_cert_file = /etc/postfix/smtpd.cert </code></pre> Relire la configuration <pre><code class="bash"> systemctl reload postfix.service </code></pre> Si le serveur est disponible à partir d'internet, on peux faire un test avec https://starttls.info/ h2. Domaines supplémentaires > Voir #55 h2. Dépannage La commande *mailq* permet de voir les requêtes en attentes. h3. Messages ne s'envoient pas > Vu sur une nouvelle installation openSUSE 13.2 La commande _postqueue -p_ affiche : *address resolver failure* Modififer le fichier */etc/postfix/main.cf* <pre><code class="bash"> disable_dns_lookups = yes </code></pre> h3. Messages *error: open database /etc/postfix/relay.db: No such file or directory* > Vu sur une nouvelle installation openSUSE 13.2 Exécuter la commande <pre><code class="bash"> postmap /etc/postfix/relay </code></pre>