Installation et configuration de Postfix et Courrier

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Postfix est un serveur de messagerie électronique et un logiciel libre développé par Wietse Venema. Il se charge de la livraison de messages électroniques. Il a été conçu comme une alternative plus rapide, plus facile à administrer et plus sécurisée que l'historique Sendmail.

Ce logiciel permet de gérer presque tous les cas d'une utilisation professionnelle. Utilisé avec les regexp dans un fichier junk et une liste publique antispam, il permet d'éviter bon nombre de spams sans même devoir scanner les contenus de message. Il remplace idéalement toutes sortes de solutions moins libres. On trouve quelques howto sur le site officiel de Postfix. Afin d'optimiser l'analyse de courriels, Postfix permet de déléguer la gestion de ceux-ci à un processus externe, qui se chargera de déterminer si le courriel est accepté ou refusé (très utile dans les systèmes anti-pourriel).

Le schéma suivant décrit l'architecture interne de postfix :

Postfix.png

2 Installation

2.1 Debian

Pour installer un serveur Postifx, voici le minimum à installer :

Command apt-get
apt-get install postfix courier-imap-ssl procmail spamc

2.2 OpenBSD

Sous OpenBSD, nous allons prendre la version packagée simple :

Command pkg_add
pkg_add -iv postfix

Après l'installation, il faut remplacer postfix à la place de sendmail. Il suffit de suivre les instructions données à la fin de l'installation de Postfix. Notamment, il faut supprimer les tâches cron de sendmail et configurer le système pour qu'il utilise postfix à la place de Sendmail.

C'est ce que fait le script postfix_enable !

2.3 FreeBSD

Sous FreeBSD, nous allons prendre la version packagée :

Command pkg_add
pkg_add -vr postfix

Après l'installation, il faut remplacer postfix à la place de sendmail. Il suffit de suivre les instructions données à la fin de l'installation de Postfix. Nous allons continuer ici en rajoutant cette ligne dans rc.conf :

Configuration File rc.conf
...
postfix_enable="YES"

Désactivons sendmail en rajoutant ces lignes :

Configuration File rc.conf
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

3 Configuration

Pour la configuration, il va falloir éditer puis adapter le fichier de configuration :

Configuration File /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Security
smtpd_banner = fire.deimos.fr - Microsoft Exchange (5.5)
biff = no
disable_vrfy_command = yes 
smtpd_helo_required = yes

# Reject unknow domain
reject_unknown_recipient_domain = yes 

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

myhostname = fire.deimos.fr
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases.db
myorigin = /etc/mailname
mydestination = deimos.fr, fire, localhost
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.0.0/24, 10.8.0.0
home_mailbox = Maildir/
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = all 
mailbox_command = procmail -a "$EXTENSION"

# Masquerade_domains hides hostnames from addresses
masquerade_domains = deimos.fr

# Virtual Domains
# virtual_alias_domains = mavrocordato.com mavro.fr deimos.servehttp.com
# virtual_alias_maps = hash:/etc/postfix/virtual

# Protection against Open Relay
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net 

# Protection against Spam
smtpd_recipient_restrictions =  permit_sasl_authenticated,
                                permit_mynetworks,
                                reject_unauth_destination,
                                reject_invalid_hostname,
                                reject_non_fqdn_sender,
                                reject_unknown_sender_domain,
                                reject_non_fqdn_recipient,
                                reject_unknown_recipient_domain,
                                reject_rhsbl_client blackhole.securitysage.com,
                                reject_rhsbl_sender blackhole.securitysage.com,
                                reject_rbl_client relays.ordb.org,
                                reject_rbl_client opm.blitzed.org,
                                reject_rbl_client list.dsbl.org,
                                reject_rbl_client cbl.abuseat.org,
                                reject_rbl_client dul.dnsbl.sorbs.net,
                                permit
smtpd_data_restrictions = reject_unauth_pipelining
mime_header_checks = regexp:/etc/postfix/mime_header_checks.regexp

# Use Amavis
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings

Comme vous pouvez le voir, la ligne "smtpd_recipient_restrictions" est assez longue. C'est parceque des RBL y sont intégrés. Voici une petite description :
Les RBLs ont comme mandat de fournir une liste de serveurs réputés comme grands envoyeurs de courriels, et de lister les grands pollupsteurs. Il s'agit en fait d'une grande liste noire généralisée. Le principe d'utilisation est fort simple : lorsqu'un filtre reçoit une courriel, il vérifie si le serveur d'envoi est contenu dans un RBL. Si oui, le courriel est catégorisé comme pourriel. Les RBLs qu'un filtre utilise comme sources de serveurs est habituellement déterminée par l'administrateur système. Cette méthode contient donc son lot de controverse, puisque certains RBLs sont réputés pour être plus efficaces que d'autres. Le choix des RBLs influence donc directement l'efficacité du système anti-pourriel. De plus, certains RBL ont des règles plus souples que d'autres quant à l'ajout d'un serveur dans leur liste, compliquant encore plus la situation. Parmi les RBLs connus, notons, entre autres, SpamHaus, DynaBlock, Sorbs, et DSBL. Il est également possible d'associer ROKSO aux RBLs. ROKSO (Register of Known Spam Operations) est une liste des polluposteurs les plus actifs. En fait, les membres de ROKSO sont responsables de près de 80% du pourriel sur le Net.

L'option "disable_dns_lookups = yes" sert a désactiver les requetes vers le DNS. lorsque le "relayhost" est entre "[ ]" cela implique que postfix n’essaiera pas de resoudre le MX.

Ensuite créez un fichier /etc/postfix/mime_header_checks.regexp :

Configuration File /etc/postfix/mime_header_checks.regexp
 /filename=\"?(.*)\.(bat|chm|cmd|com|cpl|do|exe|hta|jse|rm|scr|pif|vbe|vbs|vxd|xl)\"?$/
   REJECT For security reasons attachments of this type are rejected.
 /^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+\.(lnk|cpl|asd|hlp|ocx|reg|bat|c[ho]m|cmd|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|wav|mov|wmf|xl))"?\s*$/
      REJECT Attachment type not allowed. File "$2" has the unacceptable extension "$3"

Si certaines pièces jointes ne passent pas à l'envoie ou la réception, c'est ici qu'il faut faire des modifs (au niveau des extentions).

Editez le fichier /etc/mailname et mettez votre DNS :

Configuration File /etc/mailname
deimos.fr

3.1 OpenBSD

Pour OpenBSD, il y a ces lignes en plus :

Configuration File main.cf
 mail_owner = _postfix
 inet_protocols = all
 unknown_local_recipient_reject_code = 550
 debug_peer_level = 2
 debugger_command =
          PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
          xxgdb $daemon_directory/$process_name $process_id & sleep 5
 sendmail_path = /usr/local/sbin/sendmail
 newaliases_path = /usr/local/sbin/newaliases
 mailq_path = /usr/local/sbin/mailq
 setgid_group = _postdrop
 html_directory = /usr/local/share/doc/postfix/html
 manpage_directory = /usr/local/man
 sample_directory = /etc/postfix
 readme_directory = /usr/local/share/doc/postfix/readme

Editez le fichier /etc/mailname et mettez votre DNS :

Configuration File /etc/mailname
deimos.fr

4 Lancer Postfix

4.1 Debian

Une fois que tout ceci est terminé, il ne vous reste plus qu'à lancer la commande de redémarrage du service :

Command
/etc/init.d/postfix restart

4.2 OpenBSD

Postfix se lance avec la commande postfix start, mais d'abord il va falloir activer Postfix à la place de Sendmail :

Command
postfix-enable

Regarder dans les fichiers /var/log/messages et /var/log/maillog pour voir si tout s'est bien passé.

Arrêt et démarrage de Postfix, vérification de la configuration :

  • postfix check : vérification élémentaire de la configuration
  • postfix reload : rechargement des fichiers de configuration
  • postfix start : démarrage de postfix
  • postfix stop : arrêt de postfix

Gestion des files d'attente :

  • mailq : affichage du contenu des files
  • postqueue -p : affichage du contenu des files
  • postqueue -f : forcer le traiment des files
  • postfix flush : forcer le traiment des files

4.3 FreeBSD

Nous allons donc killer sendmail et démarrer postfix :

Command
pkill sendmail
postfix start

Postfix est maintenant démarré

5 Création de boites aux lettres

Pour créer ensuite une boite aux lettres, il suffit de se placer dans son home et de taper :

Command maildirmake
maildirmake Maildir

Ensuite, pour que les mails arrivent à destination, il faut placer dans un fichier ".procmailrc" ces quelques lignes :

Configuration File ~/.procmailrc
VERBOSE=ON
DROPPRIVS=YES
SHELL=/bin/sh
PATH=/usr/local/bin:/usr/bin:/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR/new
LOGFILE=/var/log/procmail.log
 
:0fw
* < 256000
        | /usr/bin/spamc -f
        :0e
        {   
                EXITCODE=$?
        }

6 Se protéger encore plus du spam

Je vous conseil un site qui répertorie toutes les adresses intéressantes. Faites en bon usage, mais attention à ne pas trop en mettre !

http://spamlinks.net/filter-dnsbl-lists.htm

7 Ressources

Site officiel de Postfix
Documentation sur la mise en place de Postfix sur OpenBSD
Postscreen : lutter un peu plus contre les spams
Installation rapide d'un serveur mail sécurisé
Configuration avancée de Postfix
Lutter contre le spam avec Postfix
Serveur SMTP Routage des mails avec Postfix
Les pratiques antispams
SMTP reject 554 : Eliminez le spam à la racine
Documentation sur la configuration du bounce mail sur Postfix
Anti-spam adaptable et performant avec OpenBSD et Spamd
Virtual Users And Domains With Postfix Courier MySQL And SquirrelMail
How To Whitelist Hosts IP Addresses In Postfix
Installation d’un serveur mail brique par brique