Postfix

Et bien nous y sommes, après avoir créer votre serveur DNS, nous allons configurer un serveur de mail.
 
Pourquoi gérer ses mails en interne ?
 
Afin de ne plus dépendre de notre FAI. Par exemple Free impose que l’on puisse envoyer des mails (par Outlook, Thunderbird, ou tout autre client de messagerie…) depuis une connexion Free. Pas très pratique, surtout lorsque l’on est en déplacement.
 
Autre intérêt, avec Postfix nous pourrons déterminer la taille maximale pour envoyer des mails. Fini les contraintes de l’opérateur.
 
Postfix n’est pas une solution tout en un, plusieurs choses sont à comprendre.
 
Postfix est un serveur de mail, soit un MTA. Mail transfer agent, il est chargé de la transmission du courrier électronique et du stockage de ses derniers. Par exemple, si j’envoie un mail sur une adresse Free et que mon correspondant ne peut relever ses messages à ce moment, mon mail restera dans la queue du MTA de Free, jusqu’à ce que mon correspondant relève ses mails. Postfix stocke les mails pour vous.
 
Le protocole de Postfix est SMTP.
 
Définition : SMTP, Simple Mail Transfer Protocol est un protocole pour envoyer le courrier électronique. Son port de communication est le 25.
 
Postfix va nous permettre d’envoyer des mails, mais comment on fait pour en recevoir ?
 
C’est là qu’intervient Dovecot, le serveur POP/IMAP de l’environnement UNIX. C’est à lui que l’on va s’adresser pour récupérer ses mails.
 
Définition : POP, Post Office Protocol, est un protocole pour récupérer le courrier éléctronique d’un MTA. Son port de communication est le 110
 
Définition : IMAP, Internet Message Access Protocol, est un protocole similaire à POP pour récupérer le courrier électronique d’un MTA. Sa principale et seule différence, c’est que IMAP laisse les messages sur le serveur (MTA). POP récupère et supprime les messages sur le serveur. Son port de communication est le 143.
 
Vous utilisez, sans le savoir, tous ces protocoles réunis dans vos clients de messagerie. Outlook, Thunderbird, Foxmail, Evolution, etc…. Ce sont des MUA, Mail User Agent.
 
Ces derniers, une fois configurés, vous permettent de tout faire. Envoyer des mails via le SMTP de votre serveur, et de recevoir des mails via le POP de votre serveur.
 
Le seul problème c’est que Dovecot ne sait pas récupérer les mails tout seul tout simplement car pour récupérer ses mails il faut les identifiants, du coup il faut un logiciel pour aller les chercher. En anglais on traduit le terme « aller chercher » par to fetch.
 
C’est ainsi que FETCHMAIL intervient.
 
Nous y voyons un peu plus plus clair, néanmoins tout ne se fait pas tout seul. Le lien entre tous est un MDA, Mail Delivery Agent. Rien à voir avec les magasins ^^
 
Le rôle du MDA consiste à délivrer le message dans la bonne boite aux lettres, situé chez le MTA soit Postfix. Le meilleur d’entre-eux est PROCMAIL.
 
C’est grâce à lui que nous allons appliquer les filtres pour éliminer les Spams.
 
Voici le processus d’un serveur de mail, sous Linux :
 

 

  1. Envoie de mail par le PC1 via SMTP
  2. Le MTA 1 de son FAI le reçoit et le stock en attendant que le MTA 2 de son correspondant récupère le mail.
  3. Fetchmail du MTA 2 se connecte au MTA 1 pour savoir si il y a du courrier à lui transmettre.
  4. Fetchmail récupère les mails et Procmail applique les filtres, trie et délivre dans la boite aux lettres correspondante.
  5. Procmail s’adresse à Postifx pour stocker le mail dans la boite aux lettres du destinataire du mail.
  6. PC 2 lance Thunderbird et s’adresse à Dovecot en envoyant ses identifiants de connexion. L’identifiant est forcément identique au destinataire
  7. Thunderbird du PC 2 télécharge le mail dans la boite aux lettres de Postfix.

 
Après la théorie, passons maintenant à la pratique.
 
La première chose à faire est de vérifier votre MX, si il est déclaré dans votre zone BIND.
 
Définition : MX, Mail Exchanger est un type d’enregistrement qui fait correspondre un nom de domaine à un serveur de messagerie. Ces MX sont capitaux pour acheminer le courrier électronique vers un MTA via le protocole SMTP.
 

 
Sur la capture d’écran, je n’ai qu’un MX pour mon domaine. Si vous n’avez pas renseigné le MX, faites le ici, incrémenter le numéro de série de l’enregistrement. Sauvegarder votre zone et redémarrer BIND.
 
Dans un terminal, tapez :
 

# yum install postfix.i686 fetchmail.i686 dovecot.i686 procmail.i686

 
 

Configuration de Postfix

 
 
Pour Postfix, on doit configurer 2 fichiers.
 

# nano /etc/postfix/main.cf
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mydestination = samn0.samn0.fr, localhost.localdomain, samn0.fr
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
mailbox_command = /usr/bin/procmail -Y -a $DOMAIN
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.5.6/samples
readme_directory = /usr/share/doc/postfix-2.5.6/README_FILES
inet_protocols = all
myorigin = samn0.fr
mynetworks = all
disable_vrfy_command = yes
smtpd_delay_reject = yes
#header_checks = regexp:/etc/postfix/header-checks
message_size_limit = 31457280
smtpd_helo_required = yes
smtpd_client_restrictions =
reject_unknown_sender_domain,
permit_mynetworks,
permit
smtpd_recipient_restrictions =
reject_unknown_sender_domain,
permit_mynetworks,
reject_unauth_destination,
permit

### Tarpit those bots/clients/spammers who send errors or scan for accounts
#smtpd_error_sleep_time = 60
#smtpd_soft_error_limit = 60
#smtpd_hard_error_limit = 10
smtpd_banner = $samn0.samn0.fr ESMTP Service ready
mynetworks_style = class
smtpd_use_tls = no
smtpd_tls_auth_only = no
tls_random_source = dev:/dev/urandom
smtpd_sasl_auth_enable = no
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
# Add some security
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
relayhost = smtp.free.fr

 

  1. Ligne 4 : Renseignez votre nom d’hôte (hostname) et le nom de votre domaine. Laissez localhost.localdomain
  2. Ligne 7 : Mailbox command : Ici mettez celui qui s’occupera de délivrer les messages, on a décidé que PROCMAIL le ferait. Tapez exactement ceci : /usr/bin/procmail -Y -a $DOMAIN
  3. Ligne 12 : On va indiquer où Postfix doit stocker les mails, ici c’est : /usr/sbin/sendmail.postfix
  4. Ligne 20 : Ici on indique à Postfix le protocole d’adressage IP utilisé. All signifie que l’on accepte IPV4 et IPV6.
  5. Ligne 21 : Myorigin signifie simplement le domaine qui fait autorité à Postfix
  6. Ligne 22 : Mynetwork est très important, c’est ici que vous autorisez les IP à se connecter à Postfix. Si vous désirez envoyer des emails que depuis votre réseau local, mettez 192.168.0.0/24 (si votre réseau est 192.168.0)
  7. Ligne 26 : Ici on met la taille maximale des emails, en byte, donc faites la conversion !
  8. Ligne 42 : Smtp banner c’est le message qui s’affichera lorsqu’on testera Postfix en telnet.
  9. Ligne 54 : Relay Host : Si votre Postfix plante, mettez le smtp de votre FAI, comme ça vous pourrez toujours envoyer des mails.

 
CTRL+O puis CTRL+X
 

# nano /etc/postfix/master.cf

#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: « man 5 master »).
#
# Do not forget to execute « postfix reload » after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n – n – 3 smtpd
-o content_filter=spamassassin
spamassassin unix – n n – – pipe
user=nobody argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
#submission inet n – n – – smtpd
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#smtps inet n – n – – smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n – n – – qmqpd
pickup fifo n – n 60 1 pickup
cleanup unix n – n – 0 cleanup
qmgr fifo n – n 300 1 qmgr
#qmgr fifo n – n 300 1 oqmgr
tlsmgr unix – – n 1000? 1 tlsmgr
rewrite unix – – n – – trivial-rewrite
bounce unix – – n – 0 bounce
defer unix – – n – 0 bounce
trace unix – – n – 0 bounce
verify unix – – n – 1 verify
flush unix n – n 1000? 0 flush
proxymap unix – – n – – proxymap
proxywrite unix – – n – 1 proxymap
smtp unix – – n – – smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix – – n – – smtp
-o smtp_fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n – n – – showq
error unix – – n – – error
retry unix – – n – – error
discard unix – – n – – discard
local unix – n n – – local
virtual unix – n n – – virtual
lmtp unix – – n – – lmtp
anvil unix – – n – 1 anvil
scache unix – – n – 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
#maildrop unix – n n – – pipe
# flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
#old-cyrus unix – n n – – pipe
# flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix – n n – – pipe
# user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
#uucp unix – n n – – pipe
# flags=Fqhu user=uucp argv=uux -r -n -z -a$sender – $nexthop!rmail ($recipient)
#
# ====================================================================
#
# Other external delivery methods.
#
#ifmail unix – n n – – pipe
# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
#
#bsmtp unix – n n – – pipe
# flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
#
#scalemail-backend unix – n n – 2 pipe
# flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
# ${nexthop} ${user} ${extension}
#
#mailman unix – n n – – pipe
# flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
# ${nexthop} ${user}

 

  1. Ligne 4 : Il suffit juste de chrooté Postfix en lui indiquant n en dessous de chroot

 
CTRL+O puis CTRL+X
 
Chouette Postfix est configuré !
 
Nous allons démarrer le service :
 

# service postfix restart
Arrêt de postfix : [ OK ]
Démarrage de postfix : [ OK ]

 
Ouvrez le port 25 sur votre Firewall :
 

# iptable -A INPUT -p tcp -m tcp -m state -i eth0 –dport 25 –state NEW -j ACCEPT

 
Testons notre serveur !
 

# telnet samn0.fr 25

Trying 82.226.54.213…
Connected to samn0.fr.
Escape character is ‘^]’.
220 .samn0.fr ESMTP Service ready

 
Là si on découvre le message que nous avons rédigé dans le fichier main.cf ligne 42, c’est gagné !
 
 

Configuration de Dovecot

 
 
Pour Dovecot, on a qu’un fichier à configurer.
 

# nano /etc/dovecot.conf

## Dovecot configuration file

# If you’re in a hurry, see http://wiki.dovecot.org/QuickConfiguration

# « dovecot -n » command gives a clean output of the changed settings. Use it
# instead of copy&pasting this file when posting to the Dovecot mailing list.

# ‘#’ character and everything after it is treated as comments. Extra spaces
# and tabs are ignored. If you want to use either of these explicitly, put the
# value inside quotes, eg.: key = « # char and trailing whitespace  »

# Default values are shown for each setting, it’s not required to uncomment
# any of the lines.

# Base directory where to store runtime data.
#base_dir = /var/run/dovecot/

# Protocols we want to be serving: imap imaps pop3 pop3s managesieve
# If you only want to use dovecot-auth, you can set this to « none ».
#protocols = imap imaps pop3 pop3s
protocols = pop3

# A space separated list of IP or host addresses where to listen in for
# connections. « * » listens in all IPv4 interfaces. « [::] » listens in all IPv6
# interfaces. Use « *, [::] » for listening both IPv4 and IPv6.
#
# If you want to specify ports for each service, you will need to configure
# these settings inside the protocol imap/pop3/managesieve { … } section,
# so you can specify different ports for IMAP/POP3/MANAGESIEVE. For example:
# protocol imap {
# listen = *:10143
# ssl_listen = *:10943
# ..
# }
# protocol pop3 {
# listen = *:10100
# ..
# }
# protocol managesieve {
# listen = *:12000
# ..
# }
#listen = *, [::]
listen = 110

# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you’re connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
#disable_plaintext_auth = no

# Should all IMAP and POP3 processes be killed when Dovecot master process
# shuts down. Setting this to « no » means that Dovecot can be upgraded without
# forcing existing client connections to close (although that could also be
# a problem if the upgrade is eg. because of a security fix). This however
# means that after master process has died, the client processes can’t write
# to log files anymore.
#shutdown_clients = yes

# Config files can also be included:

#!include /etc/dovecot/conf.d/*.conf
# Optional configurations, don’t give an error if it’s not found:
#!include_try /etc/dovecot/extra.conf

 

  1. ligne 21 : Protocol, ici on choisit le protocole du serveur entrant
  2. ligne 44 : Listen, ici on choisit le port du serveur entrant
  3. ligne 181 : Ici on met le texte que Dovecot répondra pour tester le serveur
  4. ligne 227 : Mettez ici là ou vous voulez que Postfix stock les mails. Par défaut c’est /var/mail/%u ou %u signifie user

 
Faites un CRTL+O puis CTRL+X
 
Chouette Dovecot est configuré !
 
Nous allons démarrer le service :
 

# service dovecot restart
Arrêt de dovecot : [ OK ]
Démarrage de dovecot : [ OK ]

 
Ouvrez le port 110 (si c’est bien celui que vous avez mis ligne 44) sur votre Firewall :
 

# iptable -A INPUT -p tcp -m tcp -m state -i eth0 –dport 110 –state NEW -j ACCEPT

 
Testons notre serveur !
 

# telnet samn0.fr 110

Trying 82.226.54.213…
Connected to samn0.fr.
Escape character is ‘^]’.
+OK POP3 SaMN0.samn0.fr ready.

 
Là si on découvre le message que vous avons rédigé dans le fichier dovecot.conf ligne 181, c’est gagné !
 
 

Configuration de Procmail

 
 
Nous devons créer le fichier PROCMAILRC et nous devons le mettre dans /etc
 

# nano /etc/procmailrc
DROPPRIVS=yes
LOGFILE=/var/log/procmail/procmail.log
VERBOSE=on
{
EXITCODE=$?
}

 
Assurez vous que ce fichier ait comme propriétaire root et comme groupe root. Côté droit il lui faut 644 en octal, soit -rw-r–r–
 
Procmail a la particularité de ne pas être un service, du coup pas de démon à lancer.
 
 

Configuration de Fetchmail

 
 
Avant cela nous devons créer un utilisateur, celui qui va nous servir pour créer notre adresse mail. Souvenez-vous avec notre serveur DNS, nous avons juste @mondomaine.fr
 

# useradd jean.dupont
# passwd jean.dupont

 
Pour Fetchmail, nous allons le configurer dans Webmin.
 

 

  1. Server name : Votre serveur pop déclaré dans votre zone BIND
  2. Protocol : Mettre celui déterminé dans dovecot.conf ligne 21
  3. Remote user : Mettez ici le nom que vous désirez avant @. Par exemple jean.dupont vu qu’on l’a crée à l’instant
  4. Remote password : Mettez ici le password de votre utilisateur
  5. Local user : Il faut mettre un utilisateur local, par exemple votre utilisateur principal

 
Sauvegarder.
 
 
Nous allons planifier Fetchmail afin qu’il se connecte à intervalle régulier pour récupérer les mails. Dans l’index du module clique sur Scheduled Checking. Planifier comme bon vous semble.
 
Vous pouvez de même avec votre adresse fournie par votre FAI.
 
Et voila le tour est joué !
 

Configuration du client mail

 
J’ai choisi Thunderbird. Aller dans Outils, Paramètres de gestion des comptes, puis création d’un compte courrier.
 

 
Paramétrons le serveur POP
 

 
Et le serveur SMTP
 

 
Reste plus qu’à tester en s’envoyant un mail.
 
Il n’a rien de bien difficile, néanmoins c’est un serveur de mail standard, sans sécurité SSL. Ce sera l’objet d’un prochain chapitre.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.