Postfix

De Wiki NCad
Révision de 2 février 2014 à 16:50 par Cacheln (discuter | contributions) (Pour comprendre)

Aller à : navigation, rechercher
POSTFIX Logo.png

Présentation

Postfix est un serveur mail SMTP (Simple Mail Transfer Protocol) appelé aussi MTA pour Mail Transport Agent. Son rôle est d'assurer le traitement des mails aussi bien à l'envoi qu'à la réception.

Pour que les utilisateurs puissent récupérer leur message, Postfix devra être couplé à un service de relève de message basé sur le protocole POP (Post Office Protocol) et/ou IMAP (Internet Message Access Protocol). Nous utiliseront le service courier. L'authentification des utilisateurs sur le serveur mail s'effectuera par l'intermédiaire du daemon saslauth.

Installation

Il sera nécessaire d'installer les services suivants :

  • Postfix, qui est le MTA;
  • Courier-Pop, qui est le serveur POP pour la récupération des messages par l'utilisateur via un client de messagerie;
  • Courier-Imap, qui est le serveur IMAP pour la récupération des messages par l'utilisateur via un client de messagerie ou un webmail;
ICON Terminal.png

apt-get install postfix courier-pop courier-imap procmail

Configuration de base

Configuration de base pour un usage local uniquement.

Fichier /etc/postfix/main.cf

  • Le fichier de configuration main.cf contient les éléments de configuration sur le MTA Postfix.
smtpd_banner = $myhostname ESMTP $mail_name
biff = no

append_dot_mydomain = no 

readme_directory = no

myhostname = alice.lan
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydomain = mail.glx
myorigin = $mydomain
mydestination = localhost $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/124 [::1]/128
home_mailbox = Maildir/
mailbox_command = procmail -a "$EXTENSION"
recipient_delimiter = +
inet_interfaces = all
message_size_limit = 5120000
mailbox_size_limit = 10240000
ICON boxWarning.png

Par défaut, la variable home_mailbox a pour valeur /var/mail. Les messages sont enregistrés dans un fichier texte portant le nom de l'utilisateur UNIX. Ce mode de fonctionnement n'est pas compatible avec les daemons courier-pop et courier-imap

Fichier /etc/procmailrc

  • Le daemon procmail interrogera ce fichier pour chaque mail entrant. On y définira la localisation des boîtes mails.
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/

Création du répertoire mail

Dans notre cas nous disposons de l'utilisateur UNIX alice sur notre serveur avec pour répertoire personnel /home/alice.

  • Création des répertoires pour le courrier électronique de alice :
ICON Terminal.png

cd /home/alice
maildirmake Maildir
maildirmake -f Sent Maildir
maildirmake -f Queue Maildir
maildirmake -f junkmail Maildir
maildirmake -f virus Maildir
maildirmake -f Drafts Maildir
maildirmake -f Trash Maildir
chown alice:alice Maildir -R
chmod 700 Maildir -R

  • Pour que cette opération s'effectue automatiquement à chaque ajout d'un nouvel utilisateur UNIX :
ICON Terminal.png

sudo maildirmake /etc/skel/Maildir
sudo maildirmake /etc/skel/Maildir/.Drafts
sudo maildirmake /etc/skel/Maildir/.Sent
sudo maildirmake /etc/skel/Maildir/.Trash
sudo maildirmake /etc/skel/Maildir/.Templates



ICON Light.png
Nos comptes mails sont basés sur les utilisateurs UNIX du serveur.

Application des paramètres

  • Pour que les modifications soient prises en compte, il faut redémarrer Postfix :
ICON Terminal.png

sudo service postfix restart

Test de validation du serveur

Un peu de vocabulaire

Test du serveur SMTP

  • Nous pouvons vérifier le bon fonctionnement du serveur SMTP en s'y connectant depuis la commande telnet :
ICON Terminal.png

telnet 127.0.0.1 25

  • Le serveur répondra par un code 220 contenant la bannière qui a été définit au paramètre smtpd_banner dans le fichier main.cf.
ICON Terminal.png

telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 alice.lan ESMTP Postfix

  • Pour valider son fonctionnement, nous allons envoyer un mail. Commençons d'abord par indiquer notre adresse mail émetteur :
ICON Terminal.png

mail from:<root@mail.glx>
250 2.1.0 OK

  • Le serveur acquittant avec le code 250, nous pouvons maintenant indiquer l'adresse de l'expéditeur :
ICON Terminal.png

rcpt to:<alice@mail.glx>
250 2.1.5 OK

  • Le serveur doit acquitter également avec le code 250. Maintenant nous allons rédiger le contenu du mail. Pour cela, il faut saisir la commande data :
ICON Terminal.png

data

  • Le serveur répondra par :
ICON Terminal.png

354 End data with <CR><LF>.<CR><LF>

  • Dès lors, nous pouvons maintenant rédiger notre mail. La touche Entrée est interprété comme un retour à la ligne dans le mail.
ICON Terminal.png

test d'envoi / réception
Merci ;)

  • Le mail rédigé, on revient à la ligne avec la touche Entrée, puis on saisie un point (.) et on appui de nouveau sur la touche Entrée :
ICON Terminal.png

.

  • Le serveur valide la mise en attente de distribution du mail et retourne son numéro d'identifiant quand le file d'attente :
ICON Terminal.png

250 2.0.0 Ok: queued as C01187F9FA

  • On ferme la connexion avec la commande quit :
ICON Terminal.png

quit
221 2.0.0 Bye
Connection closed by foreign host.

Test du serveur POP3

  • On va vérifier la bonne réception du mail envoyé à l'étape précédente. Pour cela on se connecte au serveur sur le port 110 :
ICON Terminal.png

telnet 10.0.0.44 110
Trying 10.0.0.44... Connected to 10.0.0.44. Escape character is '^]'. +OK Hello there.

  • On indique lenom d'utilisateur UNIX du compte avec la commande user :
ICON Terminal.png

user alice
+OK Password required

  • Le serveur demande le mot de passe du compte, on lui renseigne via la commande pass :
ICON Terminal.png

pass alice
+OK logged in.

  • Le serveur accepte la connexion. On consulte la liste des messages avec la commande list :
ICON Terminal.png

list
+OK POP3
1 280
.

  • On affiche les 20 premières lignes du message 1 avec la commande top :
ICON Terminal.png

top 1 20
+OK headers follow.
Return-Path: <root@mail.glx>
X-Original-To: alice@mail.glx
Delivered-To: alice@mail.glx
Received: from pfalk.net.ncad.fr (pfalk.net.ncad.fr [10.0.0.48])
__by alice.lan (Postfix) with SMTP id A3242628A2
__for <alice@mail.glx>; Thu, 30 Jan 2014 01:20:57 +0100 (CET)

test
.

Test du serveur IMAP

  • On se connecte au serveur sur le port imap 143 :
ICON Terminal.png

telnet 10.0.0.44 143
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.

  • OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL
    ACL2=UNION] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc. See COPYING for distribution information.
  • Le serveur attend un login est un mot de passe. Pour cela, on utilise la commande LOGIN <user> <password> :
ICON Terminal.png

01 LOGIN alice alice
1 OK LOGIN Ok.

  • On demande la liste des répertoires grâce à la commande LIST "" "*" :
ICON Terminal.png

2 LIST "" "*"
¤ LIST (\HasNoChildren) "." "INBOX.Queue"
¤ LIST (\HasNoChildren) "." "INBOX.Drafts"
¤ LIST (\HasNoChildren) "." "INBOX.Trash"
¤ LIST (\HasNoChildren) "." "INBOX.junkmail"
¤ LIST (\HasNoChildren) "." "INBOX.Sent"
¤ LIST (\Marked \HasChildren) "." "INBOX"
¤ LIST (\HasNoChildren) "." "INBOX.virus"
2 OK LIST completed

  • On accès au dossier des message reçus dans le dossier INBOX avec la commande SELECT <nom_dossier> :
ICON Terminal.png

3 SELECT INBOX
¤ FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
¤ OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited
¤ 4 EXISTS
¤ 4 RECENT
¤ OK [UIDVALIDITY 1391044096] Ok
¤ OK [MYRIGHTS "acdilrsw"] ACL
3 OK [READ-WRITE] Ok

  • On liste les message reçus dans le dossier INBOX avec la commande SELECT <nom_dossier> :
ICON Terminal.png

4 UID FETCH 1:* RFC822.SIZE
¤ 1 FETCH (UID 1 RFC822.SIZE 280)
4 OK FETCH completed.

  • On consulte le message avec l'UID 1 en saisisant la commande UID FETCH <UID_message> BODY[] :
ICON Terminal.png

5 UID FETCH 4 BODY[]
¤ 4 FETCH (UID 4 BODY[] {310}
Return-Path: <root@mail.glx>
X-Original-To: alice@mail.glx
Delivered-To: alice@mail.glx
Received: from pfalk.net.ncad.fr (pfalk.net.ncad.fr [10.0.0.48])
___by alice.lan (Postfix) with SMTP id 511AB628A2
___for <alice@mail.glx>; Thu, 30 Jan 2014 01:56:23 +0100 (CET)

test d'envoi / réception
Merci ;)
)
¤ 4 FETCH (FLAGS (\Seen \Recent))
5 OK FETCH completed.

  • On ferme la connexion avec la commande LOGOUT :
ICON Terminal.png

6 logout
¤ BYE Courier-IMAP server shutting down
6 OK LOGOUT completed
Connection closed by foreign host.

Autres méthodes

On peut également vérifier que le mail est bien été acheminé.

  • Via les logs stockés dans /var/log/mail.log :
Jan 30 02:29:40 alice postfix/local[13772]: C01187F9FA: to=<alice@mail.glx>, relay=local, delay=50, delays=49/0.17/0/0.14, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Jan 30 02:29:40 alice postfix/qmgr[13254]: C01187F9FA: removed
  • En interrogeant la file d'attente :
ICON Terminal.png

/usr/bin/mailq

Authentification SMTP Postfix

SMTP en Open Relay

Jusqu'à présent Postfix accepte de délivrer les messages de n'importe quel utilisateur. La raison est simple : aucune demande de mot de passe pour se connecter.

Cette section va justement permettre d'initier une phase d'authentification pour toute tentative d'envoi de messages via Postfix. Ceci permettra d'éviter que le serveur soit utiliser à tord par des personnes mal intentionnées pour diffuser du spam.

Contrairement aux serveurs pop (courier-pop) et imap (courier-imap), la connexion au serveur SMTP s'effectue sans demande de mot de passe. Pour remédier à cette faille de sécurité propre à la configuration par défaut de Postfix, nous installeront le paquet sasl2-bin qui permettra l'authentification des utilisateurs avec le module pam (Pluggable Authentication Modules, utilisé par Linux).

ICON Terminal.png

sudo apt-get install sasl2-bin

Activation du module

  • Editer le fichier de configuration /etc/default/saslauthd, puis remplacer :
START=no
  • par :
START=yes

Par défaut, le mécanisme d'authentification utilisé est pam (paramètre MECHANISMS) ce qui nous conviens pour le moment (authentification via les comptes UNIX existants).

  • Remplacer aussi la ligne :
OPTIONS="-c -m /var/run/saslauthd"
  • Par :
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
  • On crée le répertoire /var/spool/postfix/var/run/saslauthd avec les permissions adéquates :
ICON Terminal.png

mkdir -p /var/spool/postfix/var/run/saslauthd
chown -R root:sasl /var/spool/postfix/var/run/saslauthd
chmod 710 /var/spool/postfix/var/run/saslauthd

  • On ajoute l'utilisateur Postfix au groupe sasl :
ICON Terminal.png

adduser postfix sasl

  • On crée le fichier /etc/pam.d/smtp et on y insère les éléments suivants :
@include common-auth
@include common-account
@include common-password
@include common-session
  • On démarre le daemon saslauthd :
ICON Terminal.png

service saslauthd start

Intégration dans Postfix

  • Ajouter la ligne suivante dans le fichier /etc/postfix/main.cf :
broken_sasl_auth_clients = yes

smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_unauth_destination

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = cyrus
cyrus_sasl_config_path = /etc/postfix/sasl
  • Créer le fichier /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
  • On redémarre Postfix pour appliquer les nouveaux paramètres :
ICON Terminal.png

service postfix restart

Vérification

La commande ehlo

La commande ehlo permet de s'annoncer au serveur. Certains serveur SMTP la requiert avant toute autre action. Dans notre cas elle nous permet de voir les méthodes d'authentification acceptés par le serveur SMTP.

  • Résultat de la commande ehlo sans le module sasl d'activé :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
ehlo alice.lan
250-alice.lan
250-PIPELINING
250-SIZE 5120000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

  • Résultat de la commande ehlo avec le module sasl d'activé :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
ehlo ncad.fr
250-alice.lan
250-PIPELINING
250-SIZE 5120000
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 NTLM PLAIN LOGIN
250-AUTH=DIGEST-MD5 CRAM-MD5 NTLM PLAIN LOGIN

250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Envoi sans authentification

  • Tentative d'envoi sans authentification :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
mail from:<root@mail.glx>
250 2.1.0 Ok
rcpt to:<nicolas@cachelou.fr>
554 5.7.1 <nicolas@cachelou.fr>: Relay access denied
221 2.7.0 Error: I can break rules, too. Goodbye.
Connection closed by foreign host.

  • Trace laissée dans /var/mail/mail.log :
Jan 30 13:17:32 alice postfix/smtpd[20759]: NOQUEUE: reject: RCPT from pfalk.net.ncad.fr[10.0.0.48]: 554 5.7.1 <nicolas@cachelou.fr>: Relay access denied; from=<root@mail.glx> to=<nicolas@cachelou.fr> proto=SMTP

Le serveur refuse le destinataire avec pour motif : Relay access denied.

ICON Light.png
Le serveur autorise de transmettre les mails sans authentification pour tous les domaines renseignés dans le paramètre mydestination du fichier /etc/postfix/main.cf.

Envoi avec authentification

  • Tentative d'envoi avec authentification :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
auth login YWxpY2U=
334 UGFzc3dvcmQ6
YWxpY2U=
235 2.7.0 Authentication successful
mail from:<root@mail.glx>
250 2.1.0 Ok
rcpt to:<nicolas@cachelou.fr>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as 8EDAD62881


ICON Information.png

Le nom d'utilisateur et le mot de passe sont encodés en Base64. Plus d'informations ici

  • Trace laissée dans /var/mail/mail.log :
Jan 30 14:48:59 alice postfix/smtpd[24312]: CD53F62881: client=pfalk.net.ncad.fr[10.0.0.48], sasl_method=login, sasl_username=alice@alice.lan
Jan 30 14:49:05 alice postfix/cleanup[24315]: CD53F62881: message-id=<>
Jan 30 14:49:05 alice postfix/qmgr[24195]: CD53F62881: from=<root@mail.glx>, size=190, nrcpt=1 (queue active)
Jan 30 14:49:07 alice postfix/smtp[24316]: CD53F62881: to=<nicolas@cachelou.fr>, relay=aspmx.l.google.com[173.194.78.27]:25, delay=16, delays=14/0.13/1.2/0.56, dsn=5.7.1, status=bounced (host aspmx.l.google.com[173.194.78.27] said: 550-5.7.1 [109.190.9.125      11] Our system has detected that this message is 550-5.7.1 not RFC 2822 compliant. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked. Please review 550 5.7.1 RFC 2822 specifications for more information. dq1si3286812wib.75 - gsmtp (in reply to end of DATA command))
Jan 30 14:49:07 alice postfix/cleanup[24315]: 31F5F63799: message-id=<20140130134907.31F5F63799@alice.lan>
Jan 30 14:49:07 alice postfix/qmgr[24195]: 31F5F63799: from=<>, size=2576, nrcpt=1 (queue active)
Jan 30 14:49:07 alice postfix/bounce[24317]: CD53F62881: sender non-delivery notification: 31F5F63799
Jan 30 14:49:07 alice postfix/qmgr[24195]: CD53F62881: removed
Jan 30 14:49:07 alice postfix/local[24318]: 31F5F63799: to=<root@mail.glx>, relay=local, delay=0.3, delays=0.05/0.12/0/0.13, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Jan 30 14:49:07 alice postfix/qmgr[24195]: 31F5F63799: removed

D'après les logs l'authentification bien réussi. Cependant, l'envoi du mail vers nicolas@cachelou.fr a échoué car le fournisseur du service de messagerie GMail a refusé le message. GMail n'accepte pas les messages sans objet.

Sécuriser les échanges SMTP

Avertissement

Cette section à deux objectifs : vous montrer des méthodes de sécurisation pour votre serveur mail, mais aussi vous sensibiliser sur la sécurité en général des applications.

Vous observerez qu'à défaut d'une connexion sécurisée, toutes les données transitent en claires sur le réseau. Il est dès lors facile pour des personnes mal intentionnées de les récupérer et d'en faire mauvaise usage.

Défaut des échanges en clairs

Par défaut, tous les échanges s'effectuent en clair aussi bien la phase d'authentification que l'envoie du message. Voici, ci-dessous, une capture d'un analyseur de trame (Wireshark) lors de l'envoi d'un couriel depuis le client de messagerie Thundirbird.

Trame d'échanges SMTP entre Thundirbird et Postfix

On remarquera surtout les login et mot de passe ainsi que l'émetteur et le destinataire du message. Il est facile pour des logiciels espions installés sur le PC ou le réseau de récupérer ces données afin de réutiliser le compte mail pour diffuser du SPAM.

Dans ces cas beaucoup plus grave, les données du comptes permettent de récupérer une copie des messages stockés sur le serveur de mail.

Activer TLS

  • Ajouter les lignes suivantes dans le fichier de configuration de postfix /etc/postfix/main.cf :
smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.cert
smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key
smtpd_use_tls=yes
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
smtpd_tls_ask_ccert = yes
smtpd_tls_security_level = may

smtp_tls_loglevel = 1
smtp_tls_cert_file=/etc/postfix/ssl/smtpd.cert
smtp_tls_key_file=/etc/postfix/ssl/smtpd.key

Les deux premières lignes concernent respectivement le certificat et la clé privée. La troisième permet d'activer le module tls sur le serveur. Les lignes 4 à 6 permettent de tracer l'usage du certificat dans les logs (pour le debuggage). La ligne 7 spécifie le niveau de tolérance en matière de sécurité du serveur. Elle sera étudié plus en détail par la suite.

Enfin le deuxième bloc concerne les informations de chiffrement pour la connexion du client (même certificat aussi bien pour le serveur que le client).

  • Créer le certificat ssl dans le répertoire /etc/postfix/ssl :
ICON Terminal.png

mkdir /etc/postfix/ssl
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
Generating a 2048 bit RSA private key
.................................................................................+++
..........................................................................+++
writing new private key to 'imap.key'
- - - - -
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
- - - - -
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Paris
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NCad Network
Organizational Unit Name (eg, section) []:Intranet Goulouxiou
Common Name (e.g. server FQDN or YOUR name) []:10.0.0.44
Email Address []:tech@ncad.fr



ICON Information.png

Pour un serveur en production on prendra son IP publique ou son nom de machine (champ Common Name).

  • Redémarrer le service Postfix pour appliquer la configuration
ICON Terminal.png

service postfix restart

Vérification

  • Se connecter au serveur Postfix depuis le port smtp 25 :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
ehlo ncad.fr
250-alice.lan
250-PIPELINING
250-SIZE 5120000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

On remarquera l'apparition de la ligne StartTLS qui indique que le serveur peut crypter les échanges si le client le souhaite.

  • Effectuer un test d'envoi en configurant le compte mail sur un client de messagerie en utilisant pour le serveur SMTP le port 25 et comme securité pour la connexion STARTTLS. L'adresse des serveurs POP/IMAP et SMTP correspond à l'adresse IP du serveur Postfix.
  • Lors de l'envoi d'un message on observe ceci dans les logs Postfix dans le fichier /var/log/mail.log :
Jan 30 20:17:54 alice postfix/smtpd[28407]: connect from oxtrode.net.ncad.fr[10.0.0.51]
Jan 30 20:17:54 alice postfix/smtpd[28407]: Anonymous TLS connection established from oxtrode.net.ncad.fr[10.0.0.51]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)
Jan 30 20:17:54 alice postfix/smtpd[28407]: 98A4163777: client=oxtrode.net.ncad.fr[10.0.0.51], sasl_method=PLAIN, sasl_username=alice@alice.lan
Jan 30 20:17:54 alice postfix/cleanup[28410]: 98A4163777: message-id=<52EAA55B.7090404@mail.glx>
Jan 30 20:17:54 alice postfix/smtpd[28407]: disconnect from oxtrode.net.ncad.fr[10.0.0.51]
Jan 30 20:17:54 alice postfix/qmgr[28182]: 98A4163777: from=<alice@mail.glx>, size=726, nrcpt=1 (queue active)
Jan 30 20:17:55 alice postfix/smtp[28411]: Untrusted TLS connection established to aspmx.l.google.com[173.194.78.27]:25: TLSv1.1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)
  • On peut également remarquer avec l'analyseur de trame que le dialogue entre le client de messagerie et le serveur SMTP est chiffré (cipher ECDHE-RSA-AES256-SHA):
Trame d'échanges SMTP entre Thundirbird et Postfix chiffrée

Forcer l'authentification chiffrée en StartTLS

  • Dans ce mode de configuration, deux types d'échanges cohabitent : sécurisés et non sécurisés. Ceci se vérifie facilement en accédant au serveur :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
ehlo ncad.fr
250-alice.lan
250-PIPELINING
250-SIZE 5120000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

  • On remarque que le serveur nous informe sur deux choses :
    • Il accepte l'authentification en clair dont il nous énonce les méthodes : PLAIN LOGIN.
    • Il accepte les échanges chiffrés en nous indiquant StartTLS.
  • Il est possible de forcer Postfix à n'accepter que les connexions chiffrées. Cependant, avec STARTTLS le serveur débutera sa conversation en clair jusqu'à ce que le client accepte STARTTLS (c.f Capture d'écran Vérification ligne 1 à 5). Pour cela, dans le fichier /etc/postfix/main.cf on va remplacer :
smtpd_tls_security_level = may
  • Par :
smtpd_tls_security_level = encrypt
  • On redémarre le service Postfix :
ICON Terminal.png

sudo service postfix restart

  • Puis on se connecter de nouveau au serveur :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
ehlo ncad.fr
250-alice.lan
250-PIPELINING
250-SIZE 5120000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

On remarque la disparition des lignes AUTH.

  • Cette fois, si on tente d'envoyer un message en connexion non chiffrée, le serveur nous refuse la requête dès le mail from: :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
mail from:<alice@mail.glx>
530 5.7.0 Must issue a STARTTLS command first

Sécuriser les échanges IMAP

Avertissement

Cette section à deux objectifs : vous montrer des méthodes de sécurisation pour votre serveur mail, mais aussi vous sensibiliser sur la sécurité en général des applications.

Vous observerez qu'à défaut d'une connexion sécurisée, toutes les données transitent en claires sur le réseau. Il est dès lors facile pour des personnes mal intentionnées de les récupérer et d'en faire mauvaise usage.

Défaut des échanges en clair

Tout comme pour le SMTP, tous les échanges s'effectuent en clair aussi bien la phase d'authentification que la consultation des différents dossiers. Voici, ci-dessous, une capture de trame lorsqu'on navigue dans les différents dossiers de son client de messagerie Imap.

Trame d'échanges Imap entre Thundirbird et Postfix

Il est important de constater que sur cette trame le login (alice) et le mot de passe (alice) sont visibles en clair sur la capture (à la 5ème ligne). Il est toujours plus facile pour des logiciels espions installés sur le PC ou le réseau de récupérer ces données afin de consulter les messages reçus et sauvegardés sur le serveur Imap.

ICON boxWarning.png

Les données transitent en clair de la machine ou est installé le client de messagerie jusqu'au serveur mail du fournisseur du service

Activer SSL

  • Installation du service courier-imap-ssl :
ICON Terminal.png

sudo apt-get install courier-imap-ssl

Le service courier-imap-ssl écoute sur le port 993. Bien que le certificat soit généré automatiquement, il est nécessaire de le recréer. Pour la génération du certificat on prendra l'IP privée du serveur.

ICON Information.png

Pour un serveur en production on prendra son IP publique ou son nom de machine (champ Common Name).

  • Génération du certificat :
ICON Terminal.png

cd /etc/courier/
openssl req -new -outform PEM -out imapd.cert -newkey rsa:2048 -nodes -keyout imap.key -keyform PEM -days 365 -x509
Generating a 2048 bit RSA private key
.................................................................................+++
..........................................................................+++
writing new private key to 'imap.key'
- - - - -
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
- - - - -
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Paris
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NCad Network
Organizational Unit Name (eg, section) []:Intranet Goulouxiou
Common Name (e.g. server FQDN or YOUR name) []:10.0.0.44
Email Address []:tech@ncad.fr

  • Création du fichier imapd.pem. Ce fichier est une fusion de imapd.cert et imapd.key :
ICON Terminal.png

cd /etc/courier
touch imapd.pem
cat imapd.cert > imapd.pem
cat imapd.key >> imapd.pem


  • Modification de la configuration de courier-imap-ssl. Pour cela, vérifier les paramètres suivants dans le fichier de configuration /etc/courier/imapd-ssl :
TLS_PROTOCOL="TLS1_1:TLS1:SSL3"
TLS_CERTFILE=/etc/courier/imap.pem
TLS_TRUSTCERTS=/etc/courier/imap.pem
TLS_VERIFYPEER=NONE
  • On redémarre le service pour prendre en compte les nouveaux paramètres :
ICON Terminal.png

service courier-imap-ssl restart

Vérification

  • Se connecter au serveur Postfix depuis le port smtp 25 :
ICON Terminal.png

telnet 10.0.0.44 993
Trying 10.0.0.44... Connected to 10.0.0.44. Escape character is '^]'.

Le serveur répond sur le port 993.

  • On peut remarquer avec l'analyseur de trames que le dialogue entre le client de messagerie et le serveur IMAP est chiffré :
Trame d'échanges IMAP entre Thundirbird et Courier-Imap-SSL chiffrée

Sécuriser les échanges POP

Avertissement

Cette section à deux objectifs : vous montrer des méthodes de sécurisation pour votre serveur mail, mais aussi vous sensibiliser sur la sécurité en général des applications.

Vous observerez qu'à défaut d'une connexion sécurisée, toutes les données transitent en claires sur le réseau. Il est dès lors facile pour des personnes mal intentionnées de les récupérer et d'en faire mauvaise usage.

Défaut des échanges en clair

À l'image de SMTP et IMAP vus précédemment, tous les échanges s'effectuent en clair quelques soit le type d'échange (signalisation, authentification, données). Voici, ci-dessous, une capture de trame lorsqu'on effectue une relève POP avec son client de messagerie.

Trame d'échanges POP entre Thundirbird et Postfix

Il est important de constater que sur cette trame le login (ligne 10 : USER alice) et le mot de passe (ligne 12 : PASS alice) sont visibles en clair sur la capture. Il est toujours plus facile pour des logiciels espions installés sur le PC ou le réseau de récupérer ces données afin de consulter les messages reçus et sauvegardés sur le serveur POP.

ICON boxWarning.png

Les données transitent en clair de la machine ou est installé le client de messagerie jusqu'au serveur mail du fournisseur du service

Activer SSL

  • Installation du service courier-pop-ssl :
ICON Terminal.png

sudo apt-get install courier-pop-ssl

Le service courier-pop-ssl écoute sur le port 995. Bien que le certificat soit généré automatiquement, il est nécessaire de le recréer. Pour la génération du certificat on prendra l'IP privée du serveur.

ICON Information.png

Pour un serveur en production on prendra son IP publique ou son nom de machine (champ Common Name).

  • Génération du certificat :
ICON Terminal.png

cd /etc/courier/
openssl req -new -outform PEM -out popd.cert -newkey rsa:2048 -nodes -keyout popd.key -keyform PEM -days 365 -x509
Generating a 2048 bit RSA private key
.................................................................................+++
..........................................................................+++
writing new private key to 'popd.key'
- - - - -
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
- - - - -
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Paris
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NCad Network
Organizational Unit Name (eg, section) []:Intranet Goulouxiou
Common Name (e.g. server FQDN or YOUR name) []:10.0.0.44
Email Address []:tech@ncad.fr

  • Création du fichier .pem. Ce fichier est une fusion de popd.cert et popd.key :
ICON Terminal.png

cd /etc/courier
touch imapd.pem
cat popd.cert > popd.pem
cat popd.key >> popd.pem


  • Modification de la configuration de courier-pop-ssl. Pour cela, vérifier les paramètres suivants dans le fichier de configuration /etc/courier/imapd-ssl :
TLS_PROTOCOL="TLS1_1:TLS1:SSL3"
TLS_CERTFILE=/etc/courier/imap.pem
TLS_TRUSTCERTS=/etc/courier/imap.pem
TLS_VERIFYPEER=NONE
  • On redémarre le service pour prendre en compte les nouveaux paramètres :
ICON Terminal.png

service courier-pop-ssl restart

Vérification

  • Se connecter au serveur Postfix depuis le port smtp 25 :
ICON Terminal.png

telnet 10.0.0.44 995
Trying 10.0.0.44... Connected to 10.0.0.44. Escape character is '^]'.

Le serveur répond sur le port 995.

  • On peut remarquer avec l'analyseur de trames que le dialogue entre le client de messagerie et le serveur POPs est chiffré :
Trame d'échanges POP entre Thundirbird et Courier-pop-SSL chiffrée

Restrictions SMTP

Familles de restrictions

  • Pour rappel, voici un exemple d'envoi de mail :
ICON Terminal.png

telnet 10.0.0.44 587
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
ehlo ncad.fr (smtpd_helo_restrictions)
250-alice.lan
250-PIPELINING
250-SIZE 5120000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH LOGIN YWxpY2U=
334 UGFzc3dvcmQ6
YWxpY2U=
235 2.7.0 Authentication successful
mail from:<alice@mail.glx> (smtpd_sender_restrictions)
250 2.1.0 Ok
rcpt to:<nicolas@cachelou.fr> (smtpd_recipient_restrictions)
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as EA0F262846
quit
221 2.0.0 Bye
Connection closed by foreign host.

  • En rouge, ce sont les paramètres qui vont permettre de restreindre l'utilisation des commandes (ehlo, mail from:, rcpt to:) en y appliquant des vérifications (adresses mail existantes, utilisateur authentifié, ...).
  • L'ordre d'apparition de ces paramètres dans le terminal de commande ci-dessus devra être respecté lorsqu'ils seront utilisés dans le fichier de configuration de Postfix :
[...]
smtpd_ehlo_restrictions = ...
smtpd_sender_restrictions = ...
smtpd_recipient_restrictions = ...
[...]

Restrictions sur le hello/ehlo

  • La commande ehlo permet de s'annoncer au serveur avec un nom de domaine. Les spammeurs utilisent souvent des noms inexistants ou encore des adresses IP sans reverse DNS valide.
smtpd_helo_required = yes
smtpd_helo_restrictions =
  reject_unknown_helo_hostname
  • On applique les paramètres :
ICON Terminal.png

service postfix restart

  • Maintenant on tente d'envoyer un mail sans commande ehlo au démarrage de la connexion :
ICON Terminal.png

telnet 10.0.0.44 587
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
mail from:<alice@mail.glx>
503 5.5.1 Error: send HELO/EHLO first

  • On essaye cette fois-ci en utilisant un nom de domaine fictif (filtre reject_unknown_helo_hostname):
ICON Terminal.png

telnet 10.0.0.44 587
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
ehlo quoi.tld
250-alice.lan
250-PIPELINING
250-SIZE 5120000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:<root@mail.glx>
250 2.1.0 Ok
rcpt to:<alice@mail.glx>
450 4.7.1 <quoi.tld>: Helo command rejected: Host not found

Restriction émetteur/sender

ICON Information.png

Les restrictions sur le destinataire s'effectuent grâce au paramètre smtpd_sender_restrictions qui est à insérer dans le fichier de configuration /etc/postfix/main.cf juste après le paramètre smtpd_helo_restrictions.

Contrôler l'adresse mail de l'émetteur

ICON boxWarning.png

Compatible uniquement avec les serveur smtp Postfix dont l'authentification est activée.

  • Par défaut les utilisateur peuvent envoyer des messages en utilisant n'importe quel adresse mail. Voici un exemple :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
AUTH LOGIN YWxpY2U=
334 UGFzc3dvcmQ6
YWxpY2U=
235 2.7.0 Authentication successful
mail from:<cache@fictif.tld>
250 2.1.0 Ok
rcpt to:<nicolas@cachelou.fr>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as 7CBDD62846
quit
221 2.0.0 Bye
Connection closed by foreign host.

Ici, nous avons envoyé un mail en utilisant le compte smtp de alice à nicolas @ cachelou.fr en présentant l'adresse mail émetteur cache@fictif.tld.

  • Tous d'abord, on va ajouter une base de correspondance logins utilisateurs et adresses mails. Pour cela il faudra ajouter le paramètre smtpd_sender_login_maps suivi du fichier contenant la table de correspondance. Ce paramètre devra être renseigné juste après les éléments de smtpd_helo_restrictions dans le fichier /etc/postfix/main.cf.
smtpd_sender_login_maps = hash:/etc/postfix/sender_login
  • Juste en dessous de ce paramètre, nous allons indiquer à Postfix de vérifier systématiquement la correspondance entre l'adresse de l'émetteur et le login du compte mail utilisé via la table de correspondance sender_login :
smtpd_sender_restrictions =
  reject_sender_login_mismatch
  • Nous allons renseigner dans le fichier sender_login les informations du compte alice comme ceci :
alice@mail.glx alice
  • Nous générons la base à l'aide de la commande postmap :
ICON Terminal.png

sudo postmap sender_login

  • Nous redémarrons Postfix pour appliquer les paramètres :
ICON Terminal.png

sudo service postfix restart

  • Maintenant, voici le même test avec les restrictions d'activées :
ICON Terminal.png

telnet 10.0.0.44 25
Trying 10.0.0.44...
Connected to 10.0.0.44.
Escape character is '^]'.
220 alice.lan ESMTP Postfix
AUTH LOGIN YWxpY2U=
334 UGFzc3dvcmQ6
YWxpY2U=
235 2.7.0 Authentication successful
mail from:<cache@fictif.tld>
250 2.1.0 Ok
rcpt to:<nicolas@cachelou.fr>
553 5.7.1 <cache@fictif.tld>: Sender address rejected: not owned by user alice@mail.glx

Restrictions destinataire/recipient

ICON Information.png

Les restrictions sur le destinataire s'effectuent grâce au paramètre smtpd_recipient_restrictions qui est à insérer dans le fichier de configuration /etc/postfix/main.cf juste après le paramètre smtpd_sender_restrictions.

Syntaxe adresse destinataire

  • On peut vérifier la validité d'un nom de domaine de messagerie selon divers degré de sévérité. Ici nous en distinguerons deux :
    • Un nom de domaine pleinement qualifié du type mon-domaine.tld;
    • Un nom de domaine pleinement qualifié et mais qui en plus existe.
  • Voici la syntaxe respective de ces filtres pour Postfix :
smtpd_recipient_restrictions =
  reject_non_fqdn_sender,
  reject_unknown_sender_domain,

Ces informations sont à insérer juste après la ligne du paramètre smtpd_sender_restriction.

  • Nous redémarrons Postfix pour appliquer les paramètres :
ICON Terminal.png

sudo service postfix restart

Pour mieux comprendre...
  • Vérifions le fonctionnement de ces filtres, déjà le respect de la syntaxe d'un nom de domaine. Pour cela, on envoie un message en mettant comme adresse émetteur inconnu@existe-pas.tld. Ici, le nom hote n'est pas un nom de domaine. Le serveur destinataire qui est notre Postfix refusera le nom de l'émetteur à cause du premier filtre : reject_non_fqdn_sender.
ICON Terminal.png

telnet 10.0.0.49 25
Trying 10.0.0.49...
Connected to 10.0.0.49.
Escape character is '^]'.
220 geocoucou.net.ncad.fr ESMTP Postfix (GLX-LNN46/Angius)
mail from:<inconnu@existe-pas>
250 2.1.0 Ok
rcpt to:<alice@mail.glx>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as 1EAF620F9E

  • Pour le serveur émetteur, le message est bien partit. Vérifions maintenant les logs du serveur destinataire qui est notre Postfix et plus particulièrement le fichier de log /var/log/mail.log :
Feb  2 14:22:05 alice postfix/smtpd[9659]: NOQUEUE: reject: RCPT from geocoucou.net.ncad.fr[10.0.0.49]: 504 5.5.2 
<inconnu@existe-pas>: Sender address rejected: need fully-qualified address; from=<inconnu@existe-pas> to=<alice@mail.glx> 
proto=ESMTP helo=<geocoucou.net.ncad.fr>

Le message a bien été refusé à cause du nom d'hôte existe-pas qui n'est pas un nom de domaine Sender address rejected: need fully-qualified address.

  • Maintenant, vérifions le fonctionnement du second filtre, le nom de domaine existe bien. Pour cela, on envoie un message en mettant comme adresse émetteur inconnu@existe-pas.tld. Ici, le nom de domaine n'existe pas. Le serveur destinataire qui est notre Postfix refusera le nom de l'émetteur à cause du second filtre : reject_unknown_sender_domain.
ICON Terminal.png

telnet 10.0.0.49 25
Trying 10.0.0.49...
Connected to 10.0.0.49.
Escape character is '^]'.
220 geocoucou.net.ncad.fr ESMTP Postfix (GLX-LNN46/Angius)
mail from:<inconnu@existe-pas.tld>
250 2.1.0 Ok
rcpt to:<alice@mail.glx>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as 1F99B20F7F

  • Le message est bien partit. Vérifions maintenant les logs du serveur destinataire depuis le fichier de log /var/log/mail.log :
Feb  2 13:38:14 alice postfix/smtpd[9319]: NOQUEUE: reject: RCPT from geocoucou.net.ncad.fr[10.0.0.49]: 450 4.1.8 
<inconnu@existe-pas.tld>: Sender address rejected: Domain not found; from=<inconnu@existe-pas.tld> to=<alice@mail.glx> 
proto=ESMTP helo=<geocoucou.net.ncad.fr>

Le message a bien été refusé à cause de la non résolution du nom de domaine existe-pas.tld.

Utilisation de blacklistes

  • Il existe des blacklistes listant des IPs ou des noms d'hôtes réputés spammeur. Cela permet de bloquer tous les mails en provenance de ces hôtes suspects.
  • Pour illustrer l'usage de tels blacklistes, nous utiliseront les blacklistes suivantes : sbl.spamhaus.org, cbl.abuseat.org et dul.dnsbl.sorbs.net. Il existe beaucoup plus de blacklistes et certaines sont payantes.
smtpd_recipient_restrictions =
  reject_rbl_client list.dsbl.org,
  reject_rbl_client sbl.spamhaus.org,
  reject_rbl_client cbl.abuseat.org,
  reject_rbl_client dul.dnsbl.sorbs.net,
  permit

Ces informations sont à insérer juste après la ligne du paramètre smtpd_sender_restriction.

  • Nous redémarrons Postfix pour appliquer les paramètres :
ICON Terminal.png

sudo service postfix restart

Pour mieux comprendre...
  • Dans la configuration ci-dessus, l'adresse IP va être vérifiée dans chacune de ces blacklistes. Si l'IP est présente dans l'une d'elle (présence d'un enregistrement A), alors le message ne sera pas relayé par Postfix à la boîte locale. Pour visualiser le fonctionnement de ce type de restriction, on utilisera la blackliste fictive bl.ncad.fr où l'IP 10.0.0.48 y est inscrite. Voici la résolution DNS :
ICON Terminal.png

nslookup 48.0.0.10.bl.ncad.fr
Server: 10.0.0.46
Address: 10.0.0.46#53

Name: 48.0.0.10.bl.ncad.fr
Address: 127.0.0.2

D'après le résultat ci-dessus, l'IP 10.0.0.48 est blacklisté. Dans la zone bl.ncad.fr, il y a un enregistrement DNS de type A avec le nom 48.0.0.10.bl.ncad.fr pointant sur l'IP 127.0.0.2.

ICON Information.png

48.0.0.10 est en faites l'écriture inversé de l'IP 10.0.0.48.

  • On ajoute la blackliste au fichier de configuration /etc/postfix/main.cf :
smtpd_recipient_restrictions =
  reject_rbl_client list.dsbl.org,
  reject_rbl_client sbl.spamhaus.org,
  reject_rbl_client cbl.abuseat.org,
  reject_rbl_client dul.dnsbl.sorbs.net,
  reject_rbl_client bl.ncad.fr
  permit
  • Nous redémarrons Postfix pour appliquer les paramètres :
ICON Terminal.png

sudo service postfix restart

  • Nous tentons d'envoyer un mail depuis le serveur mail blacklisté avec comme IP 10.0.0.48 sur le réseau local. On observe que le message part normalement :
ICON Terminal.png

telnet 10.0.0.48 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 geocoucou.net.ncad.fr ESMTP Postfix (GLX-LNN46/Angius)
ehlo ncad.fr
250-geocoucou.net.ncad.fr
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:<nicolas.cachelou@ncad.me>
250 2.1.0 Ok
rcpt to:<alice@mail.glx>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as 30BC120FB8

Feb  1 11:51:36 geocoucou postfix/smtpd[5826]: 30BC120FB8: client=localhost[127.0.0.1]
Feb  1 11:51:41 geocoucou postfix/cleanup[5831]: 30BC120FB8: message-id=<20140201105136.30BC120FB8@geocoucou.net.ncad.fr>
Feb  1 11:51:41 geocoucou postfix/qmgr[5823]: 30BC120FB8: from=<nicolas.cachelou@ncad.me>, size=320, nrcpt=1 (queue active)
Feb  1 11:51:41 geocoucou postfix/pipe[5833]: 30BC120FB8: to=<alice@mail.glx>, relay=dfilt, delay=18, delays=17/0.13/0/0.72, dsn=2.0.0, status=sent (delivered via dfilt service)
Feb  1 11:51:42 geocoucou postfix/qmgr[5823]: 30BC120FB8: removed
Feb  1 11:51:42 geocoucou postfix/cleanup[5831]: D0EF1210E5: message-id=<20140201105136.30BC120FB8@geocoucou.net.ncad.fr>
  • Cependant, si nous regardons dans les logs Postfix du serveur destinataire (10.0.0.44 / mail.glx), on observe que le message a été bloqué :
Feb  1 11:51:45 alice postfix/smtpd[29930]: NOQUEUE: reject: RCPT from geocoucou.net.ncad.fr[10.0.0.48]: 554 5.7.1 
Service unavailable; Client host [10.0.0.48] blocked using bl.ncad.fr; from=<nicolas.cachelou@ncad.me> 
to=<alice@mail.glx> proto=ESMTP helo=<geocoucou.net.ncad.fr>
ICON Information.png

L'émetteur recevra un mail d'échec de remise de la part de Mail Delivery System

This is the mail system at host geocoucou.net.ncad.fr.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                  The mail system

<alice@mail.glx>: host serveur.mail.glx[10.0.0.44] said: 554 5.7.1 Service
   unavailable; Client host [10.0.0.48] blocked using bl.ncad.fr (in reply to
   RCPT TO command)



Reporting-MTA: dns; geocoucou.net.ncad.fr
X-Postfix-Queue-ID: 9DB5720FB8
X-Postfix-Sender: rfc822; nicolas.cachelou@ncad.me
Arrival-Date: Sat,  1 Feb 2014 11:47:40 +0100 (CET)

Final-Recipient: rfc822; alice@mail.glx
Action: failed
Status: 5.7.1
Remote-MTA: dns; serveur.mail.glx
Diagnostic-Code: smtp; 554 5.7.1 Service unavailable; Client host [10.0.0.48]
   blocked using bl.ncad.fr


Ecoute sur le port 587

  • Par défaut le protocole smtp utilise le port 25. Cependant, il se peut que l'usage de ce port soit bloquer par le fournisseur d'accès à Internet. Dès lors, il faudra utiliser le port smtp 587. Pour cela, il suffit de rajouter la ligne suivante dans le fichier /etc/postfix/main.cf (juste en dessous de la 1er ligne smtp inet - - - - smtpd ...) :
587     inet    n       -       y       -       -       smtpd
  • Il faut redémarrer le service Postfix pour que les modifications soient prises en compte :
ICON Terminal.png

sudo service postfix restart

Liens