Serveur Mail · 6 min read · Dec 25, 2025
Un Serveur Mail Simple Sur Arch Linux (Postfix + Dovecot)
Un Serveur Mail Simple Sur Arch Linux (Postfix + Dovecot)
Auteur : Jeffrey Gelens
Version : 1.3
Date : 04-12-2009
Introduction
Ce tutoriel décrit comment installer un serveur mail complet en utilisant Postfix et Dovecot sur une machine Arch Linux ou un VPS. Ce tutoriel spécifique est basé sur mon VPS de 256 Mo. Des connaissances de base en linux sont requises car je ne décris pas chaque étape en détail.
Système de Base
L’image de base est Arch Linux 2008.06. Après le démarrage, il est préférable de désactiver les connexions root dans votre serveur SSH et de créer un nouvel utilisateur comme suit :
adduser
usermod -a -G wheel,users,nobody,mail Il est optionnel de classer les miroirs Arch Linux par vitesse, mais cela pourrait accélérer l’installation :
pacman -Sy
pacman -S python
sed -ie'' 's/^#S/S/g' /etc/pacman.d/mirrorlist
rankmirrors -v /etc/pacman.d/mirrorlist | tee /etc/pacman.d/mirrorlist.new && mv /etc/pacman.d/mirrorlist.new /etc/pacman.d/mirrorlistInstallez les paquets essentiels pour cette configuration :
pacman -Syu
pacman -S sudo base-devel absServeurs Email
Maintenant que nous avons installé les paquets de base, l’étape suivante consiste à installer les serveurs email. En tant que serveur SMTP, nous allons installer Postgrey, qui est l’un des meilleurs outils contre le spam, donc installons-les aussi. Le greylisting est actuellement un moyen très efficace de bloquer le spam sans scanner le message lui-même, donc cela ne gaspille aucun cycle CPU. Sur mon serveur, il bloque environ 95 % de tout le spam, les 5 % restants sont gérés par Spamassassin. Le seul inconvénient du greylisting est que les emails entrants sont retardés de quelques minutes.
pacman -S postfix dovecot spamassassin procmail
groupadd -g 5001 spamd
useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin -m spamd
chown spamd:spamd /var/lib/spamassassinSpamassassin
Modifiez le –max-children selon vos préférences. Spamassassin utilise beaucoup de mémoire, donc pour un serveur mail avec juste quelques utilisateurs, 1 enfant est suffisant.
/etc/conf.d/spamd
SAHOME="/var/lib/spamassassin/"
SPAMD_OPTS="-c --max-children 1 --username spamd -H ${SAHOME} -s ${SAHOME}spamd.log --pidfile /var/run/spamd.pid"Certificats
Tout d’abord, nous devons générer quelques certificats auto-signés pour Dovecot et Postfix. Il vous demandera une phrase secrète, n’importe quelle chaîne aléatoire convient, vous n’avez pas besoin de vous en souvenir.
cd /etc/ssl/certs
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout mail.key -out mail.crt
openssl rsa -in mail.key -out mail.key
mv mail.key /etc/ssl/privateDovecot
Nous allons configurer Dovecot et Postfix pour utiliser la structure Maildir pour stocker les emails. Cela stocke chaque email des utilisateurs dans leur répertoire personnel et non dans une base de données. Cela convient pour cette configuration, mais pour un plus grand nombre d’utilisateurs, il est préférable d’utiliser MySQL ou PostgreSQL pour le stockage. Dovecot sera configuré de sorte que les utilisateurs puissent utiliser IMAP et IMAPs (SSL). De plus, Dovecot a un serveur d’authentification SASL intégré, donc nous n’avons pas besoin de configurer un serveur SASL séparé, ce qui permet d’économiser de la mémoire.
/etc/dovecot/dovecot.conf
protocols = imap imaps
disable_plaintext_auth = yes
log_timestamp = "%b %d %H:%M:%S "
ssl = yes
ssl_cert_file = /etc/ssl/certs/mail.crt
ssl_key_file = /etc/ssl/private/mail.key
mail_location = maildir:~/Maildir
mail_access_groups = mail
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
protocol imap {
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}
auth default {
mechanisms = plain login
passdb pam {
}
userdb passwd {
}
user = root
socket listen {
client {
path = /var/run/dovecot/auth-client
user = postfix
group = postfix
mode = 0660
}
}
}Postfix
Ensuite, c’est Postfix, le fichier de configuration est très complexe. Heureusement pour vous, j’ai fait toutes les recherches, donc vous pouvez copier et coller presque tout. Les paramètres suivants doivent encore être modifiés :
myhostname C’est l’emplacement de vos serveurs mail (par exemple, mail.example.com). myorigin C’est le domaine après le @ dans les adresses email (par exemple, jeffrey@ example.com). virtual_alias_domains C’est la même chose que myorigin.
/etc/postfix/main.cf
# Chemins
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
# Paramètres de domaine
myhostname = mail.example.com
myorigin = example.com
mydestination = $myhostname, localhost.$mydomain, localhost
# Paramètres de délai et autres limites
delay_warning_time = 4h
unknown_local_recipient_reject_code = 450
minimal_backoff_time = 300s
maximal_backoff_time = 1200s
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d
smtp_helo_timeout = 60s
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
# Paramètres SMTP
smtpd_tls_cert_file=/etc/ssl/certs/mail.crt
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
smtpd_tls_loglevel = 1
smtpd_sasl_auth_enable = yes
#smtp_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10030
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_sasl_security_options = noanonymous
# SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
# Paramètres réseau
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8
relayhost =
# Paramètres email et boîte aux lettres
alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps
home_mailbox = Maildir/
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual
mailbox_size_limit = 0
# Divers
mailbox_command = /usr/bin/procmail
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
debug_peer_level = 2
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/man
sample_directory = /etc/postfix/sample
readme_directory = no
recipient_delimiter = +Modifiez master.cf pour que Postfix filtre les emails via Postgrey (dont nous parlerons dans le chapitre suivant) et Spamassassin.
/etc/postfix/master.cf
Remplacez la ligne suivante :
smtp inet n - n - - smtpdpar ces deux lignes :
smtp inet n - n - - smtpd
-o content_filter=spamassassinEt ajoutez les trois lignes suivantes à la fin du fichier :
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/perlbin/vendor/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}Définissez les règles de Spamassassin. Vous devrez peut-être ajuster un peu le required_score. Le 6.31 par défaut semble parfait pour moi.
/etc/mail/spamassassin/local.cf
rewrite_header Subject ***SPAM***
required_score 6.31
report_safe 1
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1/etc/procmailrc
Le spam peut être copié automatiquement dans le dossier Junk en créant ce fichier :
DROPPRIVS=yes
DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir/
:0:
* ^X-Spam-Status: Yes
.Junk/Créer des comptes utilisateurs
Pour chaque utilisateur email, créez les comptes appropriés, créez votre propre script si vous ne voulez pas tout faire manuellement.
useradd -m -G mail -s /sbin/nologin
cd ~
umask 077
mkdir -p Maildir/{cur,new,tmp}
mkdir -p Maildir/.Drafts/{cur,new,tmp}
mkdir -p Maildir/.Sent/{cur,new,tmp}
mkdir -p Maildir/.Trash/{cur,new,tmp}
chmod 0700 Maildir/{cur,new,tmp}
chmod 0700 Maildir/.Drafts/{cur,new,tmp}
chmod 0700 Maildir/.Sent/{cur,new,tmp}
chmod 0700 Maildir/.Trash/{cur,new,tmp}
chown -R :users * Assurez-vous que les adresses email des nouveaux utilisateurs sont ajoutées à la carte des utilisateurs virtuels.
/etc/postfix/virtual
[email protected] jeffrey@localhostExécutez
postmap /etc/postfix/virtualaprès avoir enregistré ce fichier.
Postgrey
Postgrey n’est pas dans les dépôts pacman par défaut, donc téléchargeons-le depuis AUR. Assurez-vous d’exécuter les commandes suivantes en tant qu’utilisateur normal et non en tant que root.
cd ~
wget http://aur.archlinux.org/packages/yaourt/yaourt.tar.gz
tar xzvf yaourt.tar.gz
cd yaourt
makepkg -i
yaourt --noconfirm -S postgreyOptionnellement, les fichiers /etc/postfix/postgrey_whitelist_recipients peuvent être modifiés pour mettre sur liste blanche les domaines et adresses email en qui vous avez confiance. Cela est utile car ces adresses ne seront pas retardées à cause du greylisting.
Démarrer les Serveurs
Enfin ! Nous avons terminé. Maintenant, lançons tous les serveurs et espérons qu’ils fonctionnent tous.
Modifiez /etc/rc.conf et assurez-vous d’ajouter les démons listés :
DAEMONS=(spamd postgrey dovecot postfix)Cela garantit que tous les démons seront démarrés automatiquement lors du redémarrage. Pour l’instant, démarrez-les manuellement :
/etc/rc.d/spamd start
/etc/rc.d/postgrey start
/etc/rc.d/dovecot start
/etc/rc.d/postfix startAjoutez mail.example.com à vos clients email préférés, entrez vos paramètres de compte utilisateur, activez éventuellement SSL et votre serveur mail personnel entièrement fonctionnel est prêt !
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.