Installation serveur Postfix

De Wiki_DR13
Aller à : navigation, rechercher

Introduction[modifier]

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 :

Fichier:Postfix.png

Installation[modifier]

Debian[modifier]

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

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



Configuration[modifier]

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

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

# Security
smtpd_banner = fire.nerdman.org - 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.nerdman.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases.db
myorigin = /etc/mailname
mydestination = nerdman.org, 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"

# Virtual Domains
# virtual_alias_domains = mavrocordato.com mavro.fr nerdman.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.

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

Config 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 :

Config File : /etc/mailname
nerdman.org


OpenBSD[modifier]

Pour OpenBSD, il y a ces lignes en plus :

Config 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 :

Config File : /etc/mailname
nerdman.org


Lancer Postfix[modifier]

Debian[modifier]

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


OpenBSD[modifier]

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

FreeBSD[modifier]

Nous allons donc killer sendmail et démarrer postfix :

Command :
pkill sendmail
postfix start


Postfix est maintenant démarré

Création de boites aux lettres[modifier]

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 :

Config 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=$?
        }   


Se protéger encore plus du spam[modifier]

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

Ressources[modifier]

Site officiel de Postfix
Documentation sur la mise en place de Postfix sur OpenBSD
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