SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
De Linux Server Wiki.
Ce tutoriel va vous expliquer comment mettre en place un serveur mail complet pour plusieurs domaines et supportant l'ipv6 sous debian lenny. Les éléments suivants seront
utilisés :
un serveur smtp : postfix
un mail delivery agent (mda) : maildrop
un serveur pop/imap : courier
un scanneur de contenu : amavis
un antispam : spamassassin
un antivirus : ClamAV
un gestionnaire de mailing list : mailman
des webmails : Squirrelmail et roundcube
Afin de gérer facilement les domaines, certains services seront couplés avec MySQL. Pour ceux qui veulent bénéficier du filtrage pour les boites imaps, je vous montrerais aussi
comment coupler postfix avec maildrop. En dernier lieu, nous verront rapidement comment configurer un serveur mx secondaire pour vos domaines.
Nous allons mettre en place un service email pour deux domaines : core.csnu.org et csnu.org core.csnu.org représente le serveur en lui-même, et permet de délivrer les mails aux
utilisateurs locaux du serveur. csnu.org est ce qu'on appel un domaine virtuel. Nous gèrerons les mails de ce domaine via MySQL.
Au niveau dns, core.csnu.org est le domaine identifiant la machine. Il possède l'adresse ipv4 213.186.47.110 et l'adresse ipv6 2001:41d0:1:d6e::110. csnu.org est un alias pour
core.csnu.org.
Les changements de permissions effectués dans ce howto supposent que vous êtes en umask 0027
1 Champs dns MX
2 Postfix
2.1 Configuration de postfix pour le support MySQL des domaines virtuels
2.2 Configuration du smtp-auth
2.3 Ajout du support SSL/TLS.
2.4 Ajout d'un utilisateur virtuel et lancement des services.
2.5 Commandes utiles
2.6 Support du quota.
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
1 sur 37 05/07/2012 12:19
2.7 Problèmes possibles.
3 Courier
3.1 Ajout du support SSL/TLS
3.1.1 utiliser les scripts de courier
3.1.2 Créer son propre certificat signé par son autorité de certification.
3.2 Lancement
4 maildrop
4.1 maildroprc
4.2 Quota
4.3 Intégration à postfix
4.4 Vérification et redémarrage
5 amavis
5.1 Taguer les mails contenant un virus
6 spamassassin
6.1 Mise en place de spamassassin
6.2 Le problème de la cohabitation entre Sender Policy Framework (SPF) et l'envoi de mails
6.3 Sender Policy Framework (SPF) et ipv6
7 clamav
8 Mailman
9 Des scripts de gestion de la base de donnée MySQL
10 Installation de webmails
10.1 Squirrelmail
10.2 Ajout du support des langues
10.3 Plugins utiles
10.3.1 Ajout de votre favicon personnalisé
10.4 RoundCube
10.5 wapreader
11 Mise en place d'un MX secondaire
Pour que les mails a destination de vos deux domaines arrivent bien sur votre serveur, il faut configurer des champs dns MX. Pour cela, éditez la zone dns de votre domaine
(/srv/bind/csnu.org.hosts dans mon cas) et ajoutez/modifiez les lignes suivantes:
core.csnu.org. IN MX 1 core.csnu.org.
csnu.org. IN MX 1 core.csnu.org.
core.csnu.org. IN A 213.186.47.110
core.csnu.org. IN AAAA 2001:41d0:1:d6e::110
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
2 sur 37 05/07/2012 12:19
list.csnu.org. IN CNAME core.csnu.org.
Si vous n'avez pas d'adresse ipv6 configuré sur votre serveur, vous n'aurez pas besoin du champ AAAA.
Vous pouvez aussi configurer un champ spf. Le spf (Sender Policy Framework) est une mesure antispam permettant aux autres serveurs de savoir quels serveurs ont le droit
d'envoyer des mails pour votre domaine. Voici mes champs dns spf :
core.csnu.org. IN TXT "v=spf1 mx -all"
csnu.org. IN TXT "v=spf1 mx ~all"
mx signifie que seules les serveurs mx ont le droit d'envoyer des mails pour le domaine en question.
~all signifie que toutes les autres ips n'ont probablement pas le droit d'envoyer de mails.
-all signifie que toutes les autres ips n'ont pas le droit d'envoyer de mails.
Commençons par installer les différents composants de postfix ainsi que sasl qui nous permettra de gérer le smtp-auth histoire de ne pas laisser notre serveur en open-relay et
servir de relai pour le spam.
aptitude install postfix postfix-mysql libsasl2-2 libsasl2-modules sasl2-bin libpam-mysql procmail
Debian vous laissera choisir entre plusieurs configurations pour postfix. Choisissez pas de configuration.
Stoppez les services inutiles pour le moment :
/etc/init.d/postfix stop
/etc/init.d/saslauthd stop
Le fichier de configuration principal de postfix est /etc/postfix/main.cf. Ouvrez le avec votre éditeur de texte et modifiez les lignes suivantes:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes
#strict_rfc821_envelopes = yes
mydomain = core.csnu.org
# ajoute .$mydomain si quelqu'un envoi un mail sans préciser le domaine (utile en local quand vous utilisez la fonction mail)
append_dot_mydomain = yes
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
myhostname = core.csnu.org
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
3 sur 37 05/07/2012 12:19
alias_maps = proxy:hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = core.csnu.org, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8, [::1]/128, 213.186.47.110, [2001:41d0:1:d6e::110]
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
message_size_limit = 10240000
inet_interfaces = 127.0.0.1, [::1], 213.186.47.110, [2001:41d0:1:d6e::110]
inet_protocols = ipv4, ipv6
#ips à binder pour envoyer des mails via smtp
#smtp_bind_address=213.186.47.110
#smtp_bind_address6=2001:41d0:1:d6e::110
Nous venons de définir la directive myorigin de postfix comme étant le fichier /etc/mailname. Cette directive défini de qui provient les mails envoyés par les utilisateurs
locaux. Dans notre cas, les mails doivent provenir du domaine de notre machine, à savoir, core.csnu.org. Tapez donc :
echo "core.csnu.org" > /etc/mailname
chmod o+r /etc/mailname
Une autre directive importante que nous avons défini est mydestination. Cette directive défini quels domaines postfix doit considérer comme locaux. Lorsque postfix reçoit un
mail pour l'un de ces domaines, il les délivre dans la boite locale correspondante. Techniquement, postfix est maintenant déjà près à recevoir des mails destinés à @core.csnu.org.
Il reste donc à configurer le domaine virtuel et à ne pas relayer les spams.
Pensez à créer la base de donnée des alias :
postalias /etc/aliases
Dernière chose à faire : vous assurer que le fichier /etc/postfix/main.cf est lisible par tous le monde :
chmod o+r /etc/postfix/main.cf
Créez une base de donné nommée postfix:
mysqladmin -u root --password='motdepasse' create postfix
motdepasse correspond au mot-de-passe MySQL de l'utilisateur root
Ensuite, créez l'utilisateur postfix ayant pour mot-de-passe 'password' et attribuez lui les droits sur la base de donné postfix :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
4 sur 37 05/07/2012 12:19
$ mysql -u root -p
Enter password:
GRANT ALL PRIVILEGES ON postfix.* TO "postfix"@"localhost" IDENTIFIED BY 'password';
quit;
Puis créez les tables dans la base de donné postfix :
# mysql -u root -p
Enter password:
USE postfix;
CREATE TABLE `alias` (
`address` varchar(255) NOT NULL default '',
`goto` text NOT NULL,
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (address)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';
USE postfix;
CREATE TABLE `domain` (
`domain` varchar(255) NOT NULL default '',
`description` varchar(255) NOT NULL default '',
`aliases` int(10) NOT NULL default '0',
`mailboxes` int(10) NOT NULL default '0',
`maxquota` int(10) NOT NULL default '0',
`transport` varchar(255) default NULL,
`backupmx` tinyint(1) NOT NULL default '0',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (domain)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains';
USE postfix;
CREATE TABLE `mailbox` (
`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`name` varchar(255) NOT NULL default '',
`maildir` varchar(255) NOT NULL default '',
`quota` int(10) NOT NULL default '0',
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes';
quit;
Nous avons donc créé 3 tables :
alias qui contiendra les alias, c'est-à-dire, les redirections de mails.
domain qui contiendra les domaines virtuels gérés par postfix.
mailbox qui contiendra les boites mails virtuels.
Maintenant, nous allons créer l'utilisateur vmail et son groupe vmail. C'est cet utilisateur qui centralisera les boites mails virtuels. Dans ce exemple, le répertoire personnel de cet
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
5 sur 37 05/07/2012 12:19
utilisateur est /srv/vmail. C'est dans ce répertoire que les comptes mails seront stockés.
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /srv/vmail -m
Éditez encore une fois le fichier /etc/postfix/main.cf et ajoutez y les lignes suivantes :
#mysql
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /srv/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 5000
virtual_transport = virtual
virtual_uid_maps = static:5000
# Support du quota (il n'est pas compilé sur le postfix de debian).
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = The user you are trying to reach is over quota. Please, try again later.
virtual_overquota_bounce = yes
#Pour les domaines à relayer:
#relay_domains = proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf
Petite explication pour, par exemple, la ligne virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf :
mysql: spécifie que le fichier qui suit est la configuration pour accéder à la base MySQL des alias virtuels.
proxy: spécifie qu'il faudra lire le fichier en utilisant le mécanisme proxy de postfix. En effet, par défaut, pour des raisons de sécurité, postfix est chrooté et ne pourra donc
pas avoir accès aux fichiers de configurations MySQL une fois lancé. Pour palier à ce problème, postfix inclut un démon "proxy" qui ne sera pas chrooté et qui pourra donc
lire les fichiers nécessaires.
Plus généralement :
virtual_alias_maps défini les alias virtuels
virtual_mailbox_base défini le répertoire où seront stockés les boites mails. C'est typiquement le homedir de l'utilisateur défini par virtual_uid_maps.
virtual_mailbox_domains défini les domaines pour lesquels postfix sera la destination finale. L'agent utilisé pour délivrer les mails sera celui de virtual_transport.
virtual_mailbox_maps défini les utilisateurs virtuels.
virtual_transport défini avec quel logiciel postfix doit délivrer les mails. Par défaut, c'est le démon virtual inclut avec postfix qui s'en charge
Il va maintenant falloir créer les différents fichiers de configuration pour MySQL.
Créez le fichier /etc/postfix/mysql_virtual_alias_maps.cf contenant:
user = postfix
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
6 sur 37 05/07/2012 12:19
password = password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
Créez le fichier /etc/postfix/mysql_virtual_domains_maps.cf contenant:
user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'
Créez le fichier /etc/postfix/mysql_virtual_mailbox_maps.cf contenant:
user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
Créez le fichier /etc/postfix/mysql_virtual_mailbox_limit_maps.cf contenant:
user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s'
Créez le fichier /etc/postfix/mysql_relay_domains_maps.cf contenant:
user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1' and active = '1'
Soyez très attentif à la ligne hosts de chacun de ces fichiers. Comme je l'ai déjà dit, étant donné que postfix est chrooté, on passe par le proxy postfix qui permet à postfix de se
servir directement du fichier socket de MySQL pour accéder aux bases. Dans ce cas, il faut laisser hosts = localhost. Une autre méthode serait de ne pas utiliser le système
proxy, mais d'entrer 127.0.0.1 en tant qu'host. Dans ce cas, il faudra veiller à ce que mysql n'ait pas l'option skip-networking d'activée.
Dernière chose à faire ici : il faut utiliser postmap sur chacun des fichiers afin de les transformer en table que postfix affectionne :
cd /etc/postfix
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
7 sur 37 05/07/2012 12:19
postmap mysql_virtual_alias_maps.cf
postmap mysql_virtual_domains_maps.cf
postmap mysql_virtual_mailbox_maps.cf
postmap mysql_virtual_mailbox_limit_maps.cf
postmap mysql_relay_domains_maps.cf
Cette opération est à recommencer après chaque modification de l'un de ces fichiers.
Pour finir, modifiez les permissions étant donné que les mot-de-passes mysql sont stockés en clair. Veilliez bien à conserver le fichier main.cf accessible à tous le monde étant
donné que sendmail a besoin d'y accéder pour envoyer des mails.
chown root:postfix /etc/postfix/*
chmod 640 /etc/postfix/*
chmod o+r /etc/postfix/main.cf
chmod +x /etc/postfix/postfix-script
Nous allons maintenant configurer le support SASL afin de ne pas laisser notre serveur en open-relay et servir ainsi comme relai pour les spams. Ajoutez les lignes suivantes dans
le fichier /etc/postfix/main.cf :
# Support SASL
broken_sasl_auth_clients = yes
smtpd_sender_restrictions =
reject_unknown_sender_domain,
reject_non_fqdn_sender
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname
# reject_rbl_client dnsbl.dronebl.org,
# reject_rbl_client list.dsbl.org,
# reject_rbl_client bl.spamcop.net,
# reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
Créez le fichier /etc/postfix/sasl/smtpd.conf et ajoutez y les lignes suivantes:
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
8 sur 37 05/07/2012 12:19
Comme précédemment, veillez à bien utiliser localhost comme hostname afin d'utiliser le socket mysql si le skip-networking est activé sur votre serveur MySQL. Notez qu'il est
impossible d'utiliser les méthodes d'authentification CRAM-MD5 et DIGEST-MD5 si les mot-de-passes sont cryptés dans la base mysql (ce qui est le cas ici). Nous nous
contenterons donc de plain.
Éditez le fichier /etc/default/saslauthd de façon à ce qu'il ait la configuration suivante:
START=yes
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Il faut encore créé le dossier qui contiendra le socket de sasl:
mkdir -p /var/spool/postfix/var/run/saslauthd
Créez le fichier /etc/pam.d/smtp (il faudra peut-être le nommer smtpd) et ajoutez y les lignes suivantes:
auth required pam_mysql.so user=postfix passwd=password host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=postfix passwd=password host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1
Une fois de plus, soyez attentif à l'argument host= A titre d'information, voici les différentes options possibles pour l'argument crypt= :
0 (ou "plain") = Pas de cryptage. Ceci n'est pas recommandé.
1 (ou "Y") = utilise la fonction crypt() de linux. Celà correspond à la fonction ENCRYPT() de MySQL. C'est la solution que nous avons choisi ici. Attention cependant,
seul les huits premiers caractères du mot-de-passe seront pris en compte.
2 (ou "mysql") = Utilise la fonction MySQL PASSWORD().
3 (or "md5") = Utilise la fonction MySQL MD5().
Il ne reste plus qu'à ajouter l'utilisateur postfix au groupe sasl :
adduser postfix sasl
Un petit point à propos des permissions :
/var/spool/postfix/, /var/spool/postfix/var/ et /var/spool/postfix/var/run/ doivent être o+x
/var/spool/postfix/var/run/saslauthd doit appartenir à root:sasl
Comme pour tous les serveurs, il est interessant de mettre en place un cryptage SSL/TLS afin de sécuriser les transactions. En admettant que vous avez suivi mon guide
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
9 sur 37 05/07/2012 12:19
concernant la mise en place d'une autorité de certification, voici ce qu'il reste à faire.
Commencez par ajouter les lignes suivantes dans votre fichier /etc/ssl/openssl.cnf :
[POSTFIX]
nsComment = "SMTP Server Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
issuerAltName = issuer:copy
basicConstraints = critical,CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment
nsCertType = server
extendedKeyUsage = serverAuth
Puis créés le certificat et signés le avec votre autorité :
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req
openssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions POSTFIX -in postfix.req -out postfix.pem
Si jamais vous possédez déjà vos clés mais qu'elles sont chiffrés par une passphrase, voici comment supprimer la passphrase :
openssl rsa -in key.pem -text
openssl rsa -in key.pem -out key_unlocked.pem
mv key.pem key_locked.pem
mv key_unlocked.pem key.pem
Postfix ne permet pas d'utiliser des clés vérouillés par une passphrase, veillez donc bien à spécifier l'option -nodes de la première ligne. Personnellement, je stock les fichiers du
certificat dans /etc/postfix/ssl/:
mkdir /etc/postfix/ssl
mv smtpd.key /etc/postfix/ssl/
mv smtpd.pem /etc/postfix/ssl/
chmod 600 /etc/postfix/ssl/*
Créez le fichier contenant la chaine de certification :
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/core_ca/core_ca.pem > /etc/postfix/ssl/ca_chain.pem
Il faut encore modifier /etc/postfix/main.cf :
smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.pem
smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
10 sur 37 05/07/2012 12:19
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem
smtpd_tls_security_level=may
smtp_tls_security_level=may
smtpd_tls_loglevel = 1
smtp_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600
smtp_tls_session_cache_timeout = 3600
Note : Les directives smtp_tls_cert_file et smtp_tls_key_file sont quant-à-elle destiné à l'authentification de votre client smtp (le certificat précisé à ces directives doit
passer le test openssl verify -purpose sslclient. Le certificat que nous avons généré est un certificat server uniquement.
Désormais, vous pourrez configurer votre logiciel de messagerie afin d'utiliser le chiffrement TLS. Si vous souhaitez permettre les connexions SSL, il faut décommenter les
quatres lignes suivantes du fichier /etc/postfix/master.cf :
#smtps inet n - - - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
Notez qu'ici, nous ne forçons ni l'utilisation du tls sur le serveur smtp, ni la vérification tls en mode client smtp. Cela signifie que le serveur annoncera supporter le TLS, mais ne
forcera pas son utilisation ; de même pour le client.
Pour votre réseau interne, vous pouvez forcez la vérification TLS du le client grâce à smtp_tls_policy_maps. Par exemple voici la ligne à ajouter dans main.cf:
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
Et le fichier /etc/postfix/tls_policy :
csnu.org verify
N'oubliez pas de formater ce fichier pour postfix et de le rendre accessible en lecture :
postmap /etc/postfix/tls_policy
chgrp postfix /etc/postfix/tls_policy*
Pour des informations complémentaires, rendez-vous ici (http://www.postfix.org/TLS_README.html) .
Pour ajouter un utilisateur test@csnu.org ainsi qu'un alias alias@csnu.org renvoyant vers notre utilisateur:
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
11 sur 37 05/07/2012 12:19
# mysql -u root -p
Enter password:
use postfix;
INSERT INTO domain (domain,description) VALUES ('csnu.org','Test Domain');
INSERT INTO alias (address,goto) VALUES ('alias@csnu.org', 'test@csnu.org');
INSERT INTO mailbox (username,password,name,maildir) VALUES ('test@csnu.org',ENCRYPT('userpassword'),'Mailbox User','test@csnu.org/');
Les mots-de-passe sont cryptés avec la fonction ENCRYPT() de MySQL. Comme je l'ai dit précédemment, cette fonction limite la taille des passwords à huit caractères. Si vous
souhaitez utiliser des passwords de plus de huit caractères vous pouvez utiliser l'une des autres fonctions de cryptage de Mysql (http://dev.mysql.com/doc/refman/5.0/en
/encryption-functions.html) . Pensez cependant à ajuster la configuration du fichier /etc/pam.d/smtp comme décrit ici.
Vous pouvez maintenant lancer vos services :
/etc/init.d/saslauthd start
/etc/init.d/postfix start
Pour tester si l'authentification fonctionne bien :
testsaslauthd -u test@csnu.org -p userpassword -s smtp -f /var/spool/postfix/var/run/saslauthd/mux
Vous pouvez vérifier que postfix ne détecte aucun problème avec :
postfix check
La queue de postfix peut être géré en ligne de commande avec la commande postqueue. Pour afficher la queue, tapez :
postqueue -p
Pour forcer postfix à traiter sa queue, tapez :
postqueue -f
vous aurez peut-être la nécessité de supprimer un message de la queue. Pour celà, il faut utiliser la commande postsuper :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
12 sur 37 05/07/2012 12:19
postsuper -d ID
L'ID correspond au Queue ID renvoyé par la commande postqueue -p
La commande postalias permet de générer les fichiers d'alias de postfix :
postalias /etc/aliases
La commande postconf permet de manipuler la configuration en ligne de commande
La commande postcat permet de lire un mail en queue. Par exemple, pour récupérer sous forme lisible le mail en queue situé dans /var/spool/postfix/deferred/B/B9C791
il suffit d'utiliser :
postcat /var/spool/postfix/deferred/B/B9C791
Il est aussi possible de passer directement via le Queue ID du mail :
postcat -q B9C791
Vous l'aurez peut-être remarqué : postfix ne supporte pas le quota par défaut. Le patch VDA (http://vda.sourceforge.net/) permet d'activer le support du quota pour le MDA
virtual de postfix. Vous pouvez trouver une version postfix-vda pour debian sur http://debian.home-dn.net/ si vous souhaitez continuer d'utiliser le démon virtual fournit avec
postfix pour délivrer les mails de vos domaines virtuels. Une autre méthode consiste à utiliser un autre MDA pour transporter les mails, par exemple, maildrop.
Si vous utilisez un noyau avec le patch grsecurity, j'ai remarqué un comportement étrange. En effet, lorsque j'essayais d'envoyer un mail avec sendmail avec un autre
utilisateur que root (www-data par exemple) il me renvoyait une erreur. C'est un problème de droit : /proc/net n'était pas lisible et exécutable par tous le monde (o+rx) ce qui
empêchait sendmail d'envoyer les mails.
Nous allons maintenant installer courier pour ses fonctionnalités de serveur pop et imap. Installer les paquets nécessaires :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
13 sur 37 05/07/2012 12:19
aptitude install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl
Éditez le fichier /etc/courier/authdaemonrc :
authmodulelist="authmysql"
Éditez le fichier /etc/courier/authmysqlrc :
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD password
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
#MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
#DEFAULT_DOMAIN domain.tld
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD "/srv/vmail"
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
#MYSQL_QUOTA_FIELD quota
#MYSQL_WHERE_CLAUSE server='exemple.domain.tld'
Je préfère ne pas binder mes services sur toutes les ips configurés sur la machine. Il faut donc configurer courier pour qu'il ne bind que les ips voulus.
Pour courier-pop éditez le fichier /etc/courier/pop3d et modifiez la ligne PORT=110 par :
PORT=127.0.0.1.110,::1.110,213.186.47.110.110,2001:41d0:1:d6e::110.110
Pour courier-pop-ssl éditez le fichier /etc/courier/pop3d-ssl et modifiez la ligne SSLPORT=995 par :
SSLPORT=127.0.0.1.995,::1.995,213.186.47.110.995,2001:41d0:1:d6e::110.995
Pour courier-imap éditez le fichier /etc/courier/imapd et modifiez la ligne PORT=143 par :
PORT=127.0.0.1.143,::1.143,213.186.47.110.143,2001:41d0:1:d6e::110.143
Pour courier-imap-ssl éditez le fichier /etc/courier/imapd-ssl et modifiez la ligne SSLPORT=993 par :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
14 sur 37 05/07/2012 12:19
SSLPORT=127.0.0.1.993,::1.993,213.186.47.110.993,2001:41d0:1:d6e::110.993
utiliser les scripts de courier
courier inclut des scripts qui permettent de générer automatiquement ces certificats SSL. Pour cela, il faut éditer les fichiers /etc/courier/pop3d.cnf et /etc/courier
/imapd.cnf puis lancer les commandes suivantes :
mkpop3dcert
mkimapdcert
Créer son propre certificat signé par son autorité de certification.
Éditez votre fichier /etc/ssl/openssl.cnf et ajoutez les lignes suivantes :
[IMAP]
nsComment = "SSL Imap Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
issuerAltName = issuer:copy
basicConstraints = critical,CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment
nsCertType = server
extendedKeyUsage = serverAuth
[POP]
nsComment = "SSL Pop Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
issuerAltName = issuer:copy
basicConstraints = critical,CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment
nsCertType = server
extendedKeyUsage = serverAuth
Encore une fois, les clés ne devront pas être chiffré avec une passphrase car courier ne les gère pas.
Pour créer le certificat du serveur pop :
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout pop.key -out pop.req
openssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions POP -in pop.req -out pop.pem
cat pop.key pop.pem > pop3d.pem
openssl gendh >> pop3d.pem
mv pop3d.pem /etc/courier/
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
15 sur 37 05/07/2012 12:19
rm -rf pop.*
Pour créer le certificat du serveur imap:
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:1024 -keyout imap.key -out imap.req
openssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions IMAP -in imap.req -out imap.pem
cat imap.key imap.pem > imapd.pem
openssl gendh >> imapd.pem
mv imapd.pem /etc/courier/
rm -rf imap.*
Et comme d'habitude, on modifie les droits :
chmod 600 /etc/courier/*.pem
Il ne reste plus qu'à lancer courier et à le tester:
/etc/init.d/courier-authdaemon start
/etc/init.d/courier-imap start
/etc/init.d/courier-imap-ssl start
/etc/init.d/courier-pop start
/etc/init.d/courier-pop-ssl start
Avec le temps, vous en aurez peut-être assez de devoir relancer chacun de ces scripts. C'est pourquoi j'ai fait un script abrégé :
#! /bin/sh
case "$1" in
start)
/etc/init.d/courier-authdaemon start
/etc/init.d/courier-pop start
/etc/init.d/courier-pop-ssl start
/etc/init.d/courier-imap start
/etc/init.d/courier-imap-ssl start
exit 0
;;
stop)
/etc/init.d/courier-authdaemon stop
/etc/init.d/courier-pop stop
/etc/init.d/courier-pop-ssl stop
/etc/init.d/courier-imap stop
/etc/init.d/courier-imap-ssl stop
exit 0
;;
restart)
$0 stop
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
16 sur 37 05/07/2012 12:19
$0 start
exit 0
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
maildrop est un mail delivery agent (MDA). Son rôle est de délivrer les messages reçus par un serveur smtp dans les boites mails des utilisateurs. Nous allons mettre en place
maildrop pour remplacer le démon virtual de postfix parce qu'il permet de gérer les quotas et les filtres.
Le paquet maildrop de debian lenny fournit maildrop 2.0.4 qui a un comportement étrange dans la gestion des quotas. Pour régler ce problème il faut compiler soit même
maildrop 2.0.4.
Pour commencer il faut installer g++ ainsi que les paquets courier-authlib-dev et libpcre3-dev :
aptitude install g++ courier-authlib-dev libpcre3-dev
Téléchargez maildrop et extrayez le :
wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2
tar jxf maildrop-2.0.4.tar.bz2
il faut maintenant configurer maildrop :
cd maildrop-2.0.4
./configure -prefix=/usr/local/courier --enable-maildrop-uid=5000 --enable-maildrop-gid=5000 --enable-maildirquota --without-db
Ici, on installe maildrop avec l'utilisateur d'uid 5000 et de gid 5000 ce qui correspond à notre utilisateur vmail. maildrop sera installé dans /usr/local/courier
Compilons et installons maildrop :
make
make install
Une erreur de compilation peut apparaître sur l'un des composants. Cela n'empêchera pas maildrop de fonctionner mais vous pouvez régler le problème comme ceci :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
17 sur 37 05/07/2012 12:19
cd makedat
ln -s makedatprog.c makedatprog
cd ..
make install
Il faut adapter les droits de /usr/local/courier/bin/ :
chown vmail: /usr/local/courier/bin/*
chmod o+rx /usr/local/courier/
Pour que maildrop fonctionne il faut qu'il puisse accéder au socket de courier situé dans /var/run/courier/authdaemon/ :
chgrp vmail /var/run/courier/authdaemon/
Le fichier /etc/maildroprc contient la configuration ainsi que les règles de filtrage par défaut de maildrop.
Pour commencer nous allons activer les logs de maildrop. Ajoutez la ligne suivante dans /etc/maildroprc :
logfile "/var/log/maildroprc.log"
Créez le fichier de log et attribuez le à l'utilisateur vmail :
touch /var/log/maildroprc.log
chown vmail:vmail /var/log/maildroprc.log
Vous voudrez peut-être ajouter maildrop à la rotation des logs. Éditez le fichier /etc/logrotate.d/maildrop et ajoutez y les lignes suivantes :
/var/log/maildroprc.log {
weekly
missingok
rotate 12
compress
delaycompress
notifempty
create 640 vmail vmail
sharedscripts
postrotate
endscript
}
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
18 sur 37 05/07/2012 12:19
Pour créer automatiquement la mailbox si elle n'existe pas lors de la réception d'un message ajoutez les lignes suivantes à /etc/maildroprc :
# Si la mailbox représenté par $DEFAULT n'existe pas
`test -e $DEFAULT/`
if ( $RETURNCODE != 0 )
{
# On la crée
`maildirmake $DEFAULT`
# ainsi que les quelques sous-répertoire de base
`maildirmake -f Junk $DEFAULT`
`maildirmake -f Sent $DEFAULT`
`maildirmake -f Trash $DEFAULT`
# Puis on change les droits
`chmod -R go-rwx $DEFAULT`
}
Enfin nous allons configurer un fichier de filtre local à chaque utilisateur virtuel :
# On load les filtres spécifiques de l'utilisateur $DEFAULT s'ils existent
`test -r $DEFAULT/mailfilter`
if( $RETURNCODE == 0 )
{
log "(==) Including $DEFAULT/mailfilter"
exception {
include $DEFAULT/mailfilter
}
}
Par exemple, voici comment je filtre les spams dans mon fichier /srv/vmail/pfoo@csnu.org/mailfilter :
if (/^X-Spam-Flag:.*YES/)
{
exception {
to $DEFAULT/.Junk/
}
}
Pour le support du quota il faut créer les fichiers nécessaires avec maildirmake. Si la mailbox n'existe pas encore tapez :
maildirmake /srv/vmail/test@csnu.org
chown -R vmail:vmail /srv/vmail/test@csnu.org
Pour activer le quota pour la mailbox il faut utiliser l'option -q de maildirmake. Pour créer une boite de 512 000 000 bytes tapez :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
19 sur 37 05/07/2012 12:19
maildirmake -q 512000000S /srv/vmail/test@csnu.org
chown -R vmail:vmail /srv/vmail/test@csnu.org
Pour créer une boite pouvant contenir un maximum de 1000 fichiers tapez :
maildirmake -q 1000C /srv/vmail/test@csnu.org
chown -R vmail:vmail /srv/vmail/test@csnu.org
maildrop délivrera un message d'erreur lorsqu'une boite est pleine à un certain pourcentage (défini dans la configuration de postfix). Placez le texte suivant dans /usr/local
/courier/etc/quotawarnmsg et assurez vous qu'il soit lisible par vmail :
From: Postmaster csnu.org <postmaster@csnu.org>
Reply-To: postmaster@csnu.org
To: Valued Customer:;
Subject: Mail quota warning
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
Your mailbox on the server is now more than 90% full. So that you can continue to receive mail you need to remove some messages from your mailbox.
Il faut commencer par remplacer <code<virtual par <code>maildrop dans /etc/postfix/main.cf :
virtual_transport = maildrop
maildrop_destination_recipient_limit=1
Ensuite il faut modifier la configuration de maildrop du fichier /etc/postfix/master.cf :
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/courier/bin/maildrop -w 90 -d ${recipient}
L'option -w 90 défini qu'il faut avertir l'utilisateur lorsque sa boite mail est pleine à 90%.
authtest permet de vérifier si l'authentification de courier fonctionne bien :
$ authtest test@csnu.org
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
20 sur 37 05/07/2012 12:19
Authentication succeeded.
Authenticated: test@csnu.org (uid 5000, gid 5000)
Home Directory: /srv/vmail
Maildir: test@csnu.org/
Quota: (none)
Encrypted Password: ZHJghD45/gfFDH42
Cleartext Password: (none)
Options: (none)
Ensuite testez maildrop :
# /usr/local/courier/bin/maildrop -V 7 -d test@csnu.org
maildrop: authlib: groupid=5000
maildrop: authlib: userid=5000
maildrop: authlib: logname=test@csnu.org, home=/srv/vmail, mail=test@csnu.org/
maildrop: Changing to /srv/vmail
Si vous n'avez eu aucune erreur vous pouvez relancer postfix :
/etc/init.d/postfix restart
Amavis permet de scanner facilement les mails avec toutes sortes d'outils externes tel que spamassassin et clamav. Installez amavis :
aptitude install amavisd-new
Il est possible que vous rencontriez l'erreur suivante :
Paramétrage de amavisd-new (2.4.2-6.1) ...
Creating/updating amavis user account...
Starting amavisd: The value of variable $myhostname is "CSNU", but should have been
a fully qualified domain name; perhaps uname(3) did not provide such.
You must explicitly assign a FQDN of this host to variable $myhostname
in amavisd.conf, or fix what uname(3) provides as a host's network name!
(failed).
invoke-rc.d: initscript amavis, action "start" failed.
dpkg : erreur de traitement de amavisd-new (--configure) :
le sous-processus post-installation script a retourné une erreur de sortie d'état 1
Des erreurs ont été rencontrées pendant l'exécution :
amavisd-new
E: Sub-process /usr/bin/dpkg returned an error code (1)
Échec de l'installation d'un paquet. Tentative de réparation :
Paramétrage de amavisd-new (2.4.2-6.1) ...
Creating/updating amavis user account...
addgroup: Starting amavisd: The value of variable $myhostname is "CSNU", but should have been
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
21 sur 37 05/07/2012 12:19
a fully qualified domain name; perhaps uname(3) did not provide such.
You must explicitly assign a FQDN of this host to variable $myhostname
in amavisd.conf, or fix what uname(3) provides as a host's network name!
(failed).
invoke-rc.d: initscript amavis, action "start" failed.
dpkg : erreur de traitement de amavisd-new (--configure) :
le sous-processus post-installation script a retourné une erreur de sortie d'état 1
Des erreurs ont été rencontrées pendant l'exécution :
amavisd-new
Cette erreur survient parce que votre fichier /etc/hostname ne contient pas un domaine FQDN (un domaine écrit correctement). Deux possibilités s'offrent à vous : modifier le
fichier hostname pour que le domaine soit FQDN (exemple : csnu.org), ou alors, ajoutez la ligne suivante dans /etc/amavis/conf.d/50-user :
$myhostname = "csnu.org";
Il va maintenant falloir modifier /etc/postfix/main.cf pour que postfix fasse transiter ses mails par amavis. Ajoutez y les lignes suivantes :
# Use amavis
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
De cette manière, postfix va adresser tous les mails entrant à amavis sur le port local 10024. Il faut encore modifier le fichier /etc/postfix/master.cf afin d'y configurer
amavis et de définir le port sur lequel postfix va recevoir les mails provenant de amavis :
# Amavis filter
amavis unix - - - - 10 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
-o smtp_bind_address=127.0.0.1
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
22 sur 37 05/07/2012 12:19
Amavis est configuré. Il ne reste plus qu'à relancer les services :
/etc/init.d/amavis restart
/etc/init.d/postfix restart
Si amavis semble utiliser trop de ressource, vous pouvez diminuer le nombre maximum de child. Ajoutez la directive $max_servers = 2; dans la configuration de amavis
Par défaut, amavis renvoi les mails contenant un virus vers l'adresse définie par $virus_admin (dans le fichier /etc/amavis/conf.d/20-debian_defaults). Vous voudrez
peut-être comme moi que les utilisateurs reçoivent tout de même le message avec une alerte. Pour que les mails contenant un virus arrivent jusqu'aux utilisateurs, il suffit de
modifier la directive $final_virus_destiny du fichier /etc/amavis/conf.d/20-debian_defaults comme suit:
$final_virus_destiny = D_PASS;
Enfin, ajoutez la ligne suivante dans /etc/amavis/conf.d/20-debian_defaults :
$subject_tag_maps_by_ccat{+CC_VIRUS} = [ '***INFECTED*** ' ];
Commencez par installer spamassassin et les quelques outils antispams suivants :
aptitude install spamassassin razor pyzor
Mettez à jour les règles de spamassassin :
sa-update
Configurez le fichier /etc/spamassassin/local.cf :
report_safe 0
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
23 sur 37 05/07/2012 12:19
lock_method flock
# Bayes-related operations
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
bayes_auto_expire 1
bayes_auto_learn_threshold_spam 8.0
bayes_path /var/lib/amavis/.spamassassin/bayes
# External network tests
dns_available yes
skip_rbl_checks 0
use_razor2 1
use_pyzor 1
# dcc
#use_dcc 1
#dcc_path /usr/bin/dccproc
#dcc_add_header 1
#dcc_dccifd_path /var/lib/dcc/dccifd
# Use URIBL (http://www.uribl.com/about.shtml)
urirhssub URIBL_BLACK multi.uribl.com. A 2
body URIBL_BLACK eval:check_uridnsbl('URIBL_BLACK')
describe URIBL_BLACK Contains an URL listed in the URIBL blacklist
tflags URIBL_BLACK net
score URIBL_BLACK 3.0
urirhssub URIBL_GREY multi.uribl.com. A 4
body URIBL_GREY eval:check_uridnsbl('URIBL_GREY')
describe URIBL_GREY Contains an URL listed in the URIBL greylist
tflags URIBL_GREY net
score URIBL_GREY 0.25
# Use SURBL (http://www.surbl.org/)
urirhssub URIBL_JP_SURBL multi.surbl.org. A 64
body URIBL_JP_SURBL eval:check_uridnsbl('URIBL_JP_SURBL')
describe URIBL_JP_SURBL Has URI in JP at http://www.surbl.org/lists.html
tflags URIBL_JP_SURBL net
score URIBL_JP_SURBL 3.0
# Optional Score Increases
score DCC_CHECK 4.000
score SPF_FAIL 10.000
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score BAYES_99 4.300
score BAYES_95 3.500
score BAYES_80 3.000
internal_networks 213.186.47.110 87.98.136.217
trusted_networks 213.186.47.110 87.98.136.217
Les directives internal_networks et trusted_networks sont très importantes pour la pertinence des résultats. Elles permettent à spamassassin de savoir à quels headers il peut
faire confiance dans le mail scanné. trusted networks doit contenir les mêmes entrées que internal_networks.
Les différents modules chargés par spamassassin se situent dans les fichier /etc/spamassassin/init.pre, /etc/spamassassin/v310.pre et /etc/spamassassin/v312.pre.
Certains sont commentés par défaut. Pour les activer, dé-commentez les simplement.
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
24 sur 37 05/07/2012 12:19
Nous allons maintenant configurer razor en utilisant l'utilisateur amavis :
su - amavis
razor-admin -d --create
razor-admin -d --register
exit
Si jamais vous avez eu une erreur lors du register précédent, procédez comme cela :
su - amavis
razor-admin -discover
razor-admin -create
razor-admin -register
exit
L'identité sera stockée dans /var/lib/amavis/.razor/
Il faut aussi configurer pyzor avec l'utilisateur amavis :
su - amavis
pyzor discover
exit
Ceci enregistrera la liste des serveurs du projet pyzor dans /var/lib/amavis/.pyzor/
Il faut encore activer le support anti-spam de amavis dans /etc/amavis/conf.d/15-content_filter_mode :
@bypass_spam_checks_maps = (
%bypass_spam_checks, @bypass_spam_checks_acl, $bypass_spam_checks_re);
Puis modifiez le fichier /etc/amavis/conf.d/20-debian_defaults comme suit :
$sa_spam_subject_tag = '***SPAM*** ';
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_BOUNCE;
$final_spam_destiny = D_PASS;
$final_bad_header_destiny = D_PASS;
De cette manière, amavis tagera le sujet des mails considérés comme spam, mais les délivrera quand même dans la boite mail. Les virus sont quant-à-eux supprimés directement
et un rapport de détection est envoyé à $virus_admin.
/etc/init.d/amavis restart
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
25 sur 37 05/07/2012 12:19
Notez qu'il n'est pas nécessaire de lancer spamassassin dans le cas présent.
Si il semble que amavis ne tag pas les spams, allez faire un tour dans le fichier /etc/amavis/conf.d/05-domain_id. Par défaut, ce fichier charge en tant que $mydomain le
fichier /etc/mailname. Ensuite, il défini @local_domains_acl comme étant la variable $mydomain. Seuls les domaines contenu dans @local_domains_acl seront scannés.
Pour mes tests, j'ai simplement commenté la ligne @local_domains_acl et j'ai ajouté @local_domains_acl = ( ".csnu.org" ); à la place. Pour simplement scanner tous les
domaines, utilisez @local_domains_acl = ( "." );
Vous pouvez trouver un exemple de spam dans /usr/share/doc/spamassassin/examples/sample-spam.txt
Actuellement lorsque vous envoyez un mail, il est scanné par spamassassin. en temps normal, cela ne pose aucun problème étant donné que vos mails ne devraient pas être
reconnu comme spam. Cependant, le fichier /etc/spamassassin/init.pre charge par défaut le plugin SPF de spamassassin (ligne loadplugin
Mail::SpamAssassin::Plugin::SPF). Si vous avez configuré des champs spf dans la zone dns de votre domaine, vous remarquerez très vite que vos mails sortant seront tagués
spams et positifs au test du spf. C'est normal étant donné que votre ip ne fait pas partie des ips autorisées à envoyer des mails pour le domaine. Pour régler ce problème, il va
falloir modifier la configuration de postfix afin d'avoir un port sur lequel on peut envoyer des emails qui ne seront pas scannés par spamassassin.
Ouvrez le fichier /etc/postfix/master.cf et ajoutez les lignes suivantes :
submission inet n - - - - smtpd
# -o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o content_filter=amavis:[127.0.0.1]:10026
Désormais, le port 587 est aussi écouté par postfix. Pour envoyer des mails sur ce port, il faut être authentifié par SASL (donc on n'est pas un relai pour le spam) et les mails sont
passés à amavis sur le port 10026.
Il faut ensuite modifier le fichier /etc/amavis/conf.d/20-debian_defaults (attention un champ $inet_socket_port existe déjà et il faudra le commenter/modifier):
$inet_socket_port = [10024,10026]; # écoute sur les ports tcp 10024 et 10026
$interface_policy{'10026'} = 'SASLBYPASS';
$policy_bank{'SASLBYPASS'} = { # mail provenant des ports submission et smtps
bypass_spam_checks_maps => [1], # ne pas vérifier le spam
bypass_banned_checks_maps => [0], # ne pas vérifier le ban
bypass_header_checks_maps => [1], # ne pas vérifier les headers
};
Ainsi, les mails reçus sur le port 587 passeront par amavis mais ne subiront aucun test de la part de spamassassin et le problème est réglé. La vérification antivirus est réalisée
normalement. Notez qu'il faudra configurer votre logiciel de messagerie pour qu'il envoi les mails sur le port 587.
Par la même occasion vous pouvez désactiver l'authentification sur le port smtp (25) en modifiant la ligne smtp de votre master.cf :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
26 sur 37 05/07/2012 12:19
smtp inet n - - - - smtpd
-o smtpd_sasl_auth_enable=no
Cela vous permettra par la suite de bloquer facilement une ip (iptables, ...) qui fait du brute-forcing sur votre smtp tout en lui permettant toujours de vous envoyer des mails.
Notez cependant qu'il faudra adapter la configuration de votre webmail afin qu'il utilise le port 587
Depuis la version 3.2 de SpamAssassin le nouveau plugin Mail::SPF est utilisé pour la vérification des champs SPF. Ce plugin gère l'ipv6. Cependant, il semblerait que certains
scripts perl de SpamAssassin ne gère pas ou mal l'ipv6. Il semble par exemple impossible d'ajouter une ipv6 aux directives internal_networks ou trusted_networks (ce qui est
important vis-à-vis de la vérification SPF). D'après un message d'une mailing-list, ce problème devrait être corrigé pour la version 3.3.0.
Commencez par installer ClamAV ainsi que quelques librairies de compressions afin d'analyser les archives:
aptitude install clamav clamav-daemon gzip bzip2 unzip unrar zoo arj
Ajoutez l'utilisateur clamav au groupe amavis:
adduser clamav amavis
Pour activer le support de clamav de amavis, modifiez le fichier /etc/amavis/conf.d/15-content_filter_mode comme suit :
@bypass_virus_checks_maps = (
%bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re);
Et redémarrez les services :
/etc/init.d/clamav-daemon restart
/etc/init.d/amavis restart
Mailman est un très bon gestionnaire de mailing list. Il possède notamment une interface d'administration web ce qui facilite grandement la gestion des listes, aussi bien du côté
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
27 sur 37 05/07/2012 12:19
admin que du côté utilisateur. Pour commencer, installez mailman :
aptitude install mailman
Puis ajoutez l'utilisateur postfix au groupe list
adduser postfix list
Ensuite, modifiez le fichier /etc/mailman/mm_cfg.py comme suit :
MTA='Postfix'
#permet d'activer le https par défaut (si on ne précise pas https, les POST se passeront mal en https, et on ne pourra rien modifier par l'interface web !)
DEFAULT_URL_PATTERN = 'https://%s/cgi-bin/mailman/'
DEFAULT_EMAIL_HOST = 'list.csnu.org'
DEFAULT_URL_HOST = 'list.csnu.org'
# Are archives public or private by default?
# 0=public, 1=private
DEFAULT_ARCHIVE_PRIVATE = 1
# SUBSCRIBE POLICY
# 0 - open list (only when ALLOW_OPEN_SUBSCRIBE is set to 1) **
# 1 - confirmation required for subscribes
# 2 - admin approval required for subscribes
# 3 - both confirmation and admin approval required
#
# ** please do not choose option 0 if you are not allowing open
# subscribes (next variable)
DEFAULT_SUBSCRIBE_POLICY = 3
Notez que j'ai spécifié https à la ligne DEFAULT_URL_PATTERN. Il est en effet conseillé d'utiliser une connexion sécurisée étant donné que les mots-de-passes transitent en clair. Si
vous ne spécifiez pas https ici, il sera impossible de modifier des données via l'interface web. DEFAULT_EMAIL_HOST et DEFAULT_URL_HOST définissent simplement les domaines
gérés par défaut par mailman. Lorsque vous ajouterez une mailing list sans spécifier de domaine, ces domaines seront utilisés.
Éditez le fichier /usr/lib/mailman/Mailman/Defaults.py et vérifiez que les lignes POSTFIX_ALIAS_CMD et POSTFIX_MAP_CMD précise bien les binaires correspondant de
postfix. Théoriquement :
POSTFIX_ALIAS_CMD = '/usr/sbin/postalias'
POSTFIX_MAP_CMD = '/usr/sbin/postmap'
Note: si vous devez opérer des changements, n'éditez pas ce fichier, mais plutôt /etc/mailman/mm_cfg.py qui est lu après celui ci et dont les valeurs écrasent celles par défaut.
Ajoutez les lignes suivantes à votre fichier /etc/postfix/main.cf :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
28 sur 37 05/07/2012 12:19
owner_request_special = no
Créez la liste mailman qui est la liste par défaut de mailman :
/var/lib/mailman/bin/newlist mailman
Maintenant, générez les alias qui serviront à mailman et permettez au groupe list d'y écrire :
/var/lib/mailman/bin/genaliases
chmod g+w /var/lib/mailman/data/aliases*
Ceci a pour effet de créer les fichiers /var/lib/mailman/data/aliases et /var/lib/mailman/data/aliases.db qui contiennent les alias nécessaire au fonctionnement de
mailman. Lorsque mailman est en fonctionnement, la création des alias se fait automatiquement.
Pour que les alias soient reconnus par postfix, il faut modifier la ligne alias_maps du fichier /etc/postfix/main.cf :
alias_maps = proxy:hash:/etc/aliases,proxy:hash:/var/lib/mailman/data/aliases
Ajoutez l'hostname de la mailing list (list.csnu.org dans mon cas) dans le mydestination de /etc/postfix/main.cf :
mydestination = core.csnu.org, list.csnu.org, localhost.localdomain, localhost
Pour activer l'interface web, ajoutez les lignes suivantes à votre vhost apache :
Include /etc/mailman/apache.conf
Il faut aussi définir le mot-de-passe administratif de mailman, qui permettra en particulier d'utiliser la page web de création de liste :
/usr/lib/mailman/bin/mmsitepass
Nous allons maintenant ajouter notre domaine virtuel csnu.org dans la configuration de mailman. Ajoutez les lignes suivantes dans /etc/mailman/mm_cfg.py :
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['csnu.org']
add_virtualhost('www.csnu.org', 'csnu.org')
Et comme précédemment, il faut préciser à postfix où trouver les alias pour les listes @csnu.org. Modifiez le fichier /etc/postfix/main.cf :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
29 sur 37 05/07/2012 12:19
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,proxy:hash:/var/lib/mailman/data/virtual-mailman
Il ne reste plus qu'a redémarrer les services
/etc/init.d/postfix restart
/etc/init.d/apache restart
/etc/init.d/mailman restart
Pour ajouter une liste, il ne reste plus qu'a utiliser le binaire /usr/lib/mailman/bin/newlist. Par exemple :
/usr/lib/mailman/bin/newlist --urlhost='list.csnu.org' --emailhost='csnu.org' test@csnu.org
Notez qu'il faut laisser le site comme étant list.csnu.org sinon vous ne pourrez pas administrer la liste.
N'oubliez pas de générer la liste des alias :
/var/lib/mailman/bin/genaliases
Si vous n'avez pas de dossier "fr" dans /etc/mailman, téléchargez mailman sur http://www.gnu.org/software/mailman/ et copiez le dossier "fr" situé dans le répertoire templates de
l'archive.
Si vous voulez limiter l'accès aux pages des listes avec un htaccess vous devrez ajouter les lignes nécessaires dans le fichier /etc/mailman/apache.conf de cette manière :
<Directory /usr/lib/cgi-bin/mailman/>
AllowOverride None
Options ExecCGI
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
#auth de type digest
AuthType Digest
AuthName "un realm"
AuthDigestProvider file
AuthDigestDomain /
AuthUserFile /chemin/vers/votre/.htpasswd
AuthGroupFile /chemin/vers/votre/.htgroup
<Limit GET POST>
require valid-user
</Limit>
</Directory>
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
30 sur 37 05/07/2012 12:19
J'en ais vite eu marre de devoir retaper des lignes mysql relativement longues pour ajouter et modifier des utilisateurs. J'ai donc créé quelques scripts bash histoire de me simplifier
la vie. Les voici (http://wiki.csnu.org/upload/mail_scripts.tar.bz2) .
Vous n'aurez peut-être pas toujours accès à votre client mail, particulièrement lorsque vous êtes en déplacement. Il devient alors très intéressant de pouvoir relever son courrier
électronique par une interface web. J'ai retenu deux clients : Squirrelmail pour sa clarté et sa simplicité, et RoundCube pour son côté esthétique.
Téléchargez la dernière version de squirrelmail sur http://www.squirrelmail.org/download.php. Transférez la sur votre serveur (ou utilisez wget pour la télécharger directement sur
votre serveur). Pour ma part, j'ai téléchargé l'archive dans le dossier root. Je vais donc la déplacer dans le dossier de ma vhost webmail, puis l'extraire:
mv /root/squirrelmail-1.4.13.tar.gz /srv/http/csnu.org/webmail.csnu.org/
cd /srv/http/csnu.org/webmail.csnu.org/
tar zxvf squirrelmail-1.4.13.tar.gz
mv squirrelmail-1.4.13 squirrel
chown -R root:www-data squirrel/
chmod -R g-w,o-rx squirrel/
Pour la configuration, squirrelmail dispose d'un outil de configuration graphique. Pour le lancer, utilisez :
squirrel/config/conf.pl
Bien-sur, vous pouvez aussi modifier la configuration à la main si vous le souhaitez. Il faut alors éditer le fichier squirrel/config/config.php. Voici les lignes importantes à
modifier :
$domain = 'csnu.org';
$imap_server_type = 'courier';
#Par défaut, les données de squirrel sont stockés dans un autre répertoire. Je préfère les avoir dans la même arborescence.
$data_dir = '/srv/http/csnu.org/webmail-data/squirrel/data/';
$attachment_dir = '/srv/http/csnu.org/webmail-data/squirrel/attach/';
#Cette ligne est très importante. Si elle est à false, lorsque quelqu'un se log une première fois avec pfoo@csnu.org et une seconde fois avec PFOO@csnu.org, les préférence
$force_username_lowercase = true;
#Etant donné qu'on se connecte en local, nous n'avons pas besoin de nous authentifier et d'utiliser le port submission (587).
$smtpServerAddress = 'localhost';
$smtpPort = 25;
$smtp_auth_mech = 'none';
$imap_auth_mech = 'login';
#Par défaut, on se connecte en local. Le TLS n'est donc pas nécessaire. Vous pouvez l'activer en passant ces lignes à true. Notez que le mécanisme STARTTLS n'est supporté
$use_imap_tls = false;
$use_smtp_tls = false;
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
31 sur 37 05/07/2012 12:19
Il faut créer les dossiers /srv/http/csnu.org/webmail-data/squirrel/data/ et /srv/http/csnu.org/webmail-data/squirrel/attach/ et modifier leurs droits car
squirrel aura besoin de lire et d'écrire dans ces dossiers.
mkdir -p /srv/http/csnu.org/webmail-data/squirrel/data/
mkdir /srv/http/csnu.org/webmail-data/squirrel/attach/
chown -R root:www-data /srv/http/csnu.org/webmail-data/
chmod 770 /srv/http/csnu.org/webmail-data/squirrel/attach/
chmod 770 /srv/http/csnu.org/webmail-data/squirrel/attach/
Vous pouvez maintenant tester squirrelmail. Vous pouvez vérifier que vous n'avez pas fait d'erreur de configuration en allant à l'adresse https://votre-webmail/squirrel
/src/configtest.php
Par défaut, seule la langue anglaise est disponible. Téléchargez le fichier all_locales sur http://squirrelmail.org/download.php
$ tar zxvf all_locales-1.4.13-20071220.tar.gz
$ ./install
Please enter path to your squirrelmail installation: /srv/http/csnu.org/webmail.csnu.org/squirrel/
$ chgrp -R /srv/http/csnu.org/webmail.csnu.org/squirrel/
Téléchargez le plugin voulu dans le dossier plugins/ de votre installation de squirrelmail. Extrayez l'archive avec tar. Lisez le fichier INSTALL fournit avec le plugin, et
configurez le si nécessaire (fichier config.php). Enfin, pour activer le plugin, utilisez le script de configuration config/conf.pl.
Voici les plugins que j'utilise
Squirrel Logger
Addressbook Import-Export
Show User and IP
JavaScript Clock
Tous les plugins peuvent être trouvés sur le site officiel de squirrelmail (http://squirrelmail.org/plugins.php) .
Ajout de votre favicon personnalisé
Si vous voulez utiliser un favicon pour squirrelmail, il faut modifier les sources.
Modifiez le fichier functions/page_header.php et recherchez la ligne echo "n<title>$title</title>$xtran";. Ajoutez en dessous d'elle la ligne suivante :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
32 sur 37 05/07/2012 12:19
echo "n<link rel="icon" type="image/png" href="favicon.png">n";
Modifiez le fichier src/webmail.php et recherchez la ligne <meta name="robots" content="noindex,nofollow">n .. Ajoutez en dessous d'elle la ligne suivante :
"<link rel="icon" type="image/png" href="favicon.png" />n" .
Modifiez le fichier src/signout.php et recherchez la ligne <title><?php echo $org_title . ' - ' . _("Signout"); ?></title>. Ajoutez en dessous d'elle la ligne
suivante :
<link rel="icon" type="image/png" href="favicon.png">
Téléchargez la dernière version de roundcube sur http://roundcube.net/downloads. Transférez la sur votre serveur (ou utilisez wget pour la télécharger directement sur votre
serveur). Pour ma part, j'ai téléchargé l'archive dans le dossier root. Je vais donc la déplacer dans le dossier de ma vhost webmail, puis l'extraire:
mv /root/roundcubemail-0.3.1.tar.gz /srv/http/csnu.org/webmail.csnu.org/
cd /srv/http/csnu.org/webmail.csnu.org/
tar xf roundcubemail-0.3.1.tar.gz
mv roundcubemail-0.3.1/ roundcubemail
chown -R root:www-data roundcubemail
Les dossiers temp et logs doivent pouvoir être écrit par le serveur web:
chmod g+w roundcube/temp/
chmod g+w roundcube/logs/
Nous allons maintenant créer la base de donnée mysql roundcubemail ainsi que l'utilisateur roundcube identifié par le mot-de-passe "password" :
$ mysql -u root -p
CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcubemail@localhost
IDENTIFIED BY 'password';
quit
Si vous utilisez open-basedir sur la vhost, ajoutez le chemin /srv/http/csnu.org/webmail.csnu.org/www/roundcubemail/program/lib/ à la liste des chemins autorisés par
open-basedir.
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
33 sur 37 05/07/2012 12:19
La suite de l'installation se passe par le web. Il suffit d'aller à l'adresse http:///url-de-roundcube/installer/ et de suivre les instructions.
Si a la première étape, il vous manque l'extension fileinfo de php, installez la puis recommencer la première étape :
aptitude install php-pear php5-dev libmagic-dev
pecl install fileinfo
echo "extension=fileinfo.so" > /etc/php5/conf.d/fileinfo.ini
/etc/init.d/apache2 restart
S'il vous indique un problème au niveau de date.timezone, éditez votre php.ini et vérifiez que la directive date.timezone est bien dé-commentée (pas de ;) et est bien
définie. Pour un serveur en France :
date.timezone = Europe/Paris
Petite aide pour l'étape de configuration des ports :
Dans Database setup : indiquez le mot-de-passe de la base de donnée dans Database password
Dans IMAP Settings : indiquez tls://localhost dans default_host
Dans SMTP Settings : indiquez localhost dans smtp_server et 587 dans smtp_port (il n'est pas nécessaire de préciser tls://, si tls est disponible, il l'utilisera
automatiquement)
Dans SMTP Settings : cochez la case Use the current IMAP username and password for SMTP authentication pour smtp_user/smtp_
Dans Display settings & user prefs : indiquez fr_FR dans locale_string
Quand vous aurez validé l'étape 2, l'interface vous demandera de copier des lignes dans roundcubemail/config/main.inc.php et roundcubemail/config/db.inc.php. Après
avoir copié les lignes avec votre éditeur de texte, modifiez les droits de ces fichiers :
chgrp www-data roundcube/config/*
A l'étape 3, roundcube vous propose de tester la configuration smtp et imap. Faites le. Après avoir testé la configuration, n'oubliez pas de supprimer roundcube/installer:
rm -rf roundcube/installer
Pour ma part, j'ai eu un bug avec la configuration imap. Malgré avoir défini tls://localhost et le port 143, roundcube essayait de se connecter en tls sur le port 993. La
solution a été de préciser le port 143 dans la ligne de l'hostname comme ceci (fichier roundcubemail/config/main.inc.php) :
$rcmail_config['default_host'] = 'tls://localhost:143';
Si vous avez configuré le port smtp sur 587 (submission), le test de configuration de marchera pas, mais cela fonctionne quand même.
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
34 sur 37 05/07/2012 12:19
Un beau jour, je me suis posé la question de comment consulter des mails par le wap de mon téléphone portable. Eh bien, c'est possible avec wapreader. Je ne l'utilise
actuellement pas mais voici ce que j'ai du faire :
installer php5-imap (aptitude install php5-imap)
Suivre les instructions du fichier d'installation
J'ai du modifier le fichier .php de la manière suivante :
if($_REQUEST["mode"]=="html") {
//@header("Content-type: text/xml; charset=utf-8");
echo "<?xml version="1.0" encoding="utf-8"?>n";
echo "<?xml-stylesheet type="text/xsl" href="wapreader.xsl"?>";
}
Si vous avez un second serveur il devient très intéressant d'installer un serveur mx secondaire pour votre domaine. En effet, si pour une raison ou une autre, votre serveur smtp
fraichement configuré venait à être inaccessible pendant quelques heures, toutes les personnes essayant de vous envoyer un mail durant ce labs de temps verraient leurs mails
revenir en erreur. Un mx secondaire règle ce problème : si le serveur principal ne répond pas, les mails seront adressés au mx secondaire qui se chargera de les transférer au mx
principal dès que possible.
Il faut commencer par ajouter le nouveau serveur de mail dans la configuration de la zone dns. Dans mon cas :
core.csnu.org. IN A 213.186.47.110
core.csnu.org. IN AAAA 2001:41d0:1:d6e::110
core.csnu.org. IN MX 1 core.csnu.org.
core.csnu.org. IN MX 10 onyx.csnu.org.
csnu.org. IN MX 1 core.csnu.org.
csnu.org. IN MX 10 onyx.csnu.org.
onyx.csnu.org. IN A 217.70.189.92
Le mx secondaire est onyx.csnu.org. Le chiffre 10 avant le nom du serveur est ce qu'on appel le priorité. Les serveurs smtp voulant vous envoyer des mails essaieront en priorité
le mx ayant la priorité la plus basse.
Ensuite, installez postfix si votre second serveur :
aptitude install postfix
La configuration de /etc/postfix/main.cf est beaucoup plus simple :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
35 sur 37 05/07/2012 12:19
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes
mydomain = onyx.csnu.org
append_dot_mydomain = yes
myhostname = onyx.csnu.org
myorigin = /etc/mailname
mydestination = onyx.csnu.org, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
message_size_limit = 10240000
inet_interfaces = 127.0.0.1, 217.70.189.92
inet_protocols = ipv4
alias_maps = proxy:hash:/etc/aliases
relay_domains = core.csnu.org, csnu.org
smtpd_sender_restrictions =
reject_unknown_sender_domain,
reject_non_fqdn_sender
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
La directive relay_domains défini les domaines pour lesquels postfix est un mx secondaire. Les mails reçus pour ces domaines seront stockés et redirigés dès que possible vers le
mx de priorité la plus basse.
Si vous utilisez un champ spf du même type que celui dont j'ai donné l'exemple au début de ce howto vous n'avez rien à modifier car tous les serveurs mx des domaines sont
considérés comme valide.
Il peut être intéressant d'ajouter une directive relay_recipient_maps à la configuration afin de bloquer directement les mails destiné à un utilisateur qui n'existe pas sur le
serveur principal. Il faudra cependant veiller à bien garder synchronisé les listes d'utilisateur entre le serveur principal et le serveur secondaire.
Assurez vous que le fichier de configuration de postfix est accessible en lecture :
chmod o+r /etc/postfix/main.cf
N'oubliez pas de créer la base de donnée des alias avant de lancer postfix :
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
36 sur 37 05/07/2012 12:19
postalias /etc/aliases
Récupérée de « http://wiki.csnu.org/index.php?title=Mise_en_place_d%27un_serveur_de_mail_complet »
Catégories : Serveur | Debian
Dernière modification de cette page le 17 août 2011 à 14:11.
Cette page a été consultée 1 250 fois.
Contenu disponible sous GNU Free Documentation License 1.3.
Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet
37 sur 37 05/07/2012 12:19

Mais conteúdo relacionado

Mais procurados

Installation et configuration du serveur exchange2016 sous windows server 2012
Installation et configuration du serveur exchange2016 sous windows server 2012Installation et configuration du serveur exchange2016 sous windows server 2012
Installation et configuration du serveur exchange2016 sous windows server 2012Yaya N'Tyeni Sanogo
 
Installation et configuration d'apache tomcat
Installation et configuration d'apache tomcatInstallation et configuration d'apache tomcat
Installation et configuration d'apache tomcatManassé Achim kpaya
 
Genma - Comment sécuriser sa messagerie mail?
Genma  - Comment sécuriser sa messagerie mail?Genma  - Comment sécuriser sa messagerie mail?
Genma - Comment sécuriser sa messagerie mail?Jérôme aka "Genma" Kun
 
Comment désinstaller oracle sous windows 7 et 8
Comment désinstaller oracle sous windows 7 et 8Comment désinstaller oracle sous windows 7 et 8
Comment désinstaller oracle sous windows 7 et 8Manassé Achim kpaya
 
Mise en place d'un système de messagerie roundcube sous cent os 7
Mise en place d'un système de messagerie roundcube sous cent os 7Mise en place d'un système de messagerie roundcube sous cent os 7
Mise en place d'un système de messagerie roundcube sous cent os 7Ousmane BADJI
 
Translation d'adresse réseau (NAT)
Translation d'adresse réseau (NAT)Translation d'adresse réseau (NAT)
Translation d'adresse réseau (NAT)Manassé Achim kpaya
 
Rapport installation round cube centos 7
Rapport installation round cube centos 7Rapport installation round cube centos 7
Rapport installation round cube centos 7Mame Cheikh Ibra Niang
 
VPN NOMADE AVEC AUTHENTIFICATIO AD SOUS CISCO ASA
VPN NOMADE AVEC AUTHENTIFICATIO AD SOUS CISCO ASAVPN NOMADE AVEC AUTHENTIFICATIO AD SOUS CISCO ASA
VPN NOMADE AVEC AUTHENTIFICATIO AD SOUS CISCO ASAManassé Achim kpaya
 
Amazon web services fonctionnement de quelques services
Amazon web services   fonctionnement de quelques servicesAmazon web services   fonctionnement de quelques services
Amazon web services fonctionnement de quelques servicesPape Moussa SONKO
 
Rapport d'installation de Linux Engine X MariaDB PHP5
Rapport d'installation de Linux Engine X MariaDB PHP5Rapport d'installation de Linux Engine X MariaDB PHP5
Rapport d'installation de Linux Engine X MariaDB PHP5Mame Cheikh Ibra Niang
 
Active directory Intégration machine
Active directory Intégration machine Active directory Intégration machine
Active directory Intégration machine Yaya N'Tyeni Sanogo
 
Installation de systemes d'exploitation via reseau avec serva
Installation de systemes d'exploitation via reseau avec servaInstallation de systemes d'exploitation via reseau avec serva
Installation de systemes d'exploitation via reseau avec servaPape Moussa SONKO
 
Mis en place d'un serveur web avec herbergement multiple sous centos 6.
Mis en place d'un serveur web avec herbergement multiple sous centos 6.Mis en place d'un serveur web avec herbergement multiple sous centos 6.
Mis en place d'un serveur web avec herbergement multiple sous centos 6.Manassé Achim kpaya
 
Rapport DVWA: File Upload
Rapport DVWA: File UploadRapport DVWA: File Upload
Rapport DVWA: File UploadAyoub Rouzi
 
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...Ayoub Rouzi
 
L’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en PratiqueL’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en PratiqueAmadou Dia
 
Authentification par certificat (clear box)
Authentification par certificat (clear box)Authentification par certificat (clear box)
Authentification par certificat (clear box)Ousmane BADJI
 

Mais procurados (20)

Installation et configuration du serveur exchange2016 sous windows server 2012
Installation et configuration du serveur exchange2016 sous windows server 2012Installation et configuration du serveur exchange2016 sous windows server 2012
Installation et configuration du serveur exchange2016 sous windows server 2012
 
Expozimbra
ExpozimbraExpozimbra
Expozimbra
 
Installation et configuration d'apache tomcat
Installation et configuration d'apache tomcatInstallation et configuration d'apache tomcat
Installation et configuration d'apache tomcat
 
Rapport sp
Rapport spRapport sp
Rapport sp
 
Genma - Comment sécuriser sa messagerie mail?
Genma  - Comment sécuriser sa messagerie mail?Genma  - Comment sécuriser sa messagerie mail?
Genma - Comment sécuriser sa messagerie mail?
 
Comment désinstaller oracle sous windows 7 et 8
Comment désinstaller oracle sous windows 7 et 8Comment désinstaller oracle sous windows 7 et 8
Comment désinstaller oracle sous windows 7 et 8
 
Mise en place d'un système de messagerie roundcube sous cent os 7
Mise en place d'un système de messagerie roundcube sous cent os 7Mise en place d'un système de messagerie roundcube sous cent os 7
Mise en place d'un système de messagerie roundcube sous cent os 7
 
Translation d'adresse réseau (NAT)
Translation d'adresse réseau (NAT)Translation d'adresse réseau (NAT)
Translation d'adresse réseau (NAT)
 
Rapport installation round cube centos 7
Rapport installation round cube centos 7Rapport installation round cube centos 7
Rapport installation round cube centos 7
 
VPN NOMADE AVEC AUTHENTIFICATIO AD SOUS CISCO ASA
VPN NOMADE AVEC AUTHENTIFICATIO AD SOUS CISCO ASAVPN NOMADE AVEC AUTHENTIFICATIO AD SOUS CISCO ASA
VPN NOMADE AVEC AUTHENTIFICATIO AD SOUS CISCO ASA
 
Amazon web services fonctionnement de quelques services
Amazon web services   fonctionnement de quelques servicesAmazon web services   fonctionnement de quelques services
Amazon web services fonctionnement de quelques services
 
Rapport d'installation de Linux Engine X MariaDB PHP5
Rapport d'installation de Linux Engine X MariaDB PHP5Rapport d'installation de Linux Engine X MariaDB PHP5
Rapport d'installation de Linux Engine X MariaDB PHP5
 
Active directory Intégration machine
Active directory Intégration machine Active directory Intégration machine
Active directory Intégration machine
 
Installation de systemes d'exploitation via reseau avec serva
Installation de systemes d'exploitation via reseau avec servaInstallation de systemes d'exploitation via reseau avec serva
Installation de systemes d'exploitation via reseau avec serva
 
Mis en place d'un serveur web avec herbergement multiple sous centos 6.
Mis en place d'un serveur web avec herbergement multiple sous centos 6.Mis en place d'un serveur web avec herbergement multiple sous centos 6.
Mis en place d'un serveur web avec herbergement multiple sous centos 6.
 
Messagerie
MessagerieMessagerie
Messagerie
 
Rapport DVWA: File Upload
Rapport DVWA: File UploadRapport DVWA: File Upload
Rapport DVWA: File Upload
 
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
NFS, MPI, Programmation Sérial & Parallèle avec Condor Scénarios et Simulatio...
 
L’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en PratiqueL’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en Pratique
 
Authentification par certificat (clear box)
Authentification par certificat (clear box)Authentification par certificat (clear box)
Authentification par certificat (clear box)
 

Destaque

04 2 procédure de configuration du routeur linux ubuntu server 14.04 de nom r...
04 2 procédure de configuration du routeur linux ubuntu server 14.04 de nom r...04 2 procédure de configuration du routeur linux ubuntu server 14.04 de nom r...
04 2 procédure de configuration du routeur linux ubuntu server 14.04 de nom r...ronanlebalch
 
Messagerie Collaborative Zimbra Maroc
Messagerie Collaborative Zimbra MarocMessagerie Collaborative Zimbra Maroc
Messagerie Collaborative Zimbra MarocTech-IT Maroc
 
Server Hardening Primer - Eric Vanderburg - JURINNOV
Server Hardening Primer - Eric Vanderburg - JURINNOVServer Hardening Primer - Eric Vanderburg - JURINNOV
Server Hardening Primer - Eric Vanderburg - JURINNOVEric Vanderburg
 
Les protocoles de messagerie
Les protocoles de messagerie Les protocoles de messagerie
Les protocoles de messagerie Abde Kemrani
 
Hardening Linux Server Security
Hardening Linux Server SecurityHardening Linux Server Security
Hardening Linux Server SecurityIlham Kurniawan
 
Rapport de stage à l’IUFM de Versailles
Rapport de stage à l’IUFM de VersaillesRapport de stage à l’IUFM de Versailles
Rapport de stage à l’IUFM de VersaillesFrédéric Sagez
 
Guide pfsense
Guide pfsenseGuide pfsense
Guide pfsenser_sadoun
 
Hardening Linux and introducing Securix Linux
Hardening Linux and introducing Securix LinuxHardening Linux and introducing Securix Linux
Hardening Linux and introducing Securix LinuxSecurity Session
 
Linux Server Hardening - Steps by Steps
Linux Server Hardening - Steps by StepsLinux Server Hardening - Steps by Steps
Linux Server Hardening - Steps by StepsSunil Paudel
 
Ux074 formation-unix-linux-bind-mise-en-oeuvre-de-serveurs-dns
Ux074 formation-unix-linux-bind-mise-en-oeuvre-de-serveurs-dnsUx074 formation-unix-linux-bind-mise-en-oeuvre-de-serveurs-dns
Ux074 formation-unix-linux-bind-mise-en-oeuvre-de-serveurs-dnsCERTyou Formation
 
Transférer, exporter ses mails
Transférer, exporter ses mailsTransférer, exporter ses mails
Transférer, exporter ses mailsStéphane Métral
 
Samuel: God's Voice and Covenant
Samuel: God's Voice and CovenantSamuel: God's Voice and Covenant
Samuel: God's Voice and CovenantJonathan Denney
 
Configuration des services web sous CentOS
Configuration des services web sous CentOSConfiguration des services web sous CentOS
Configuration des services web sous CentOSSarah
 
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?Alexandre Zermati
 

Destaque (20)

04 2 procédure de configuration du routeur linux ubuntu server 14.04 de nom r...
04 2 procédure de configuration du routeur linux ubuntu server 14.04 de nom r...04 2 procédure de configuration du routeur linux ubuntu server 14.04 de nom r...
04 2 procédure de configuration du routeur linux ubuntu server 14.04 de nom r...
 
Messagerie Instantanée avec Jabber
Messagerie Instantanée avec JabberMessagerie Instantanée avec Jabber
Messagerie Instantanée avec Jabber
 
Linux Hardening - nullhyd
Linux Hardening - nullhydLinux Hardening - nullhyd
Linux Hardening - nullhyd
 
Messagerie Collaborative Zimbra Maroc
Messagerie Collaborative Zimbra MarocMessagerie Collaborative Zimbra Maroc
Messagerie Collaborative Zimbra Maroc
 
Formulaires SAP
Formulaires SAPFormulaires SAP
Formulaires SAP
 
Server Hardening Primer - Eric Vanderburg - JURINNOV
Server Hardening Primer - Eric Vanderburg - JURINNOVServer Hardening Primer - Eric Vanderburg - JURINNOV
Server Hardening Primer - Eric Vanderburg - JURINNOV
 
Les protocoles de messagerie
Les protocoles de messagerie Les protocoles de messagerie
Les protocoles de messagerie
 
Hardening Linux Server Security
Hardening Linux Server SecurityHardening Linux Server Security
Hardening Linux Server Security
 
Rapport de stage à l’IUFM de Versailles
Rapport de stage à l’IUFM de VersaillesRapport de stage à l’IUFM de Versailles
Rapport de stage à l’IUFM de Versailles
 
Guide pfsense
Guide pfsenseGuide pfsense
Guide pfsense
 
La virtualisation
La virtualisationLa virtualisation
La virtualisation
 
Hardening Linux and introducing Securix Linux
Hardening Linux and introducing Securix LinuxHardening Linux and introducing Securix Linux
Hardening Linux and introducing Securix Linux
 
Linux Server Hardening - Steps by Steps
Linux Server Hardening - Steps by StepsLinux Server Hardening - Steps by Steps
Linux Server Hardening - Steps by Steps
 
Ux074 formation-unix-linux-bind-mise-en-oeuvre-de-serveurs-dns
Ux074 formation-unix-linux-bind-mise-en-oeuvre-de-serveurs-dnsUx074 formation-unix-linux-bind-mise-en-oeuvre-de-serveurs-dns
Ux074 formation-unix-linux-bind-mise-en-oeuvre-de-serveurs-dns
 
Transférer, exporter ses mails
Transférer, exporter ses mailsTransférer, exporter ses mails
Transférer, exporter ses mails
 
Samuel: God's Voice and Covenant
Samuel: God's Voice and CovenantSamuel: God's Voice and Covenant
Samuel: God's Voice and Covenant
 
Configuration des services web sous CentOS
Configuration des services web sous CentOSConfiguration des services web sous CentOS
Configuration des services web sous CentOS
 
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
 
Rapport bluetooth
Rapport bluetooth Rapport bluetooth
Rapport bluetooth
 
Installation de fedora 11
Installation de fedora 11Installation de fedora 11
Installation de fedora 11
 

Semelhante a Mise en place d'un serveur de mail complet linux server wiki

installation et configuration Squirremail
installation et configuration Squirremailinstallation et configuration Squirremail
installation et configuration Squirremailiferis
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linuxKhalid ALLILI
 
Reseau entreprise
Reseau entrepriseReseau entreprise
Reseau entrepriseSAIDRAISS2
 
Rapport TME_semaine_7_KAID_NHEK
Rapport TME_semaine_7_KAID_NHEKRapport TME_semaine_7_KAID_NHEK
Rapport TME_semaine_7_KAID_NHEKBelkacem KAID
 
Installation et configuration asterisk
Installation et configuration asteriskInstallation et configuration asterisk
Installation et configuration asteriskGilles Samba
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderMohamed Ben Bouzid
 
Premiers pas avec snort
Premiers pas avec snortPremiers pas avec snort
Premiers pas avec snortFathi Ben Nasr
 
Dhcp3
Dhcp3Dhcp3
Dhcp3TECOS
 
Ssl et certification electronique - (construction de certification)
Ssl et certification electronique  - (construction de certification)Ssl et certification electronique  - (construction de certification)
Ssl et certification electronique - (construction de certification)achraf_ing
 
Guide pratique openssl sous debian
Guide pratique openssl sous debianGuide pratique openssl sous debian
Guide pratique openssl sous debianyahyaf10
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdfbibouechristian
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdfbibouechristian
 
Activer les connexions à distance my sql
Activer les connexions à distance my sqlActiver les connexions à distance my sql
Activer les connexions à distance my sqlEnnakhli Said
 
Mise en place d’un système de détection
Mise en place d’un système de détectionMise en place d’un système de détection
Mise en place d’un système de détectionManassé Achim kpaya
 

Semelhante a Mise en place d'un serveur de mail complet linux server wiki (20)

installation et configuration Squirremail
installation et configuration Squirremailinstallation et configuration Squirremail
installation et configuration Squirremail
 
Samba 4
Samba 4Samba 4
Samba 4
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
Reseau entreprise
Reseau entrepriseReseau entreprise
Reseau entreprise
 
Rapport TME_semaine_7_KAID_NHEK
Rapport TME_semaine_7_KAID_NHEKRapport TME_semaine_7_KAID_NHEK
Rapport TME_semaine_7_KAID_NHEK
 
Installation et configuration asterisk
Installation et configuration asteriskInstallation et configuration asterisk
Installation et configuration asterisk
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey Spider
 
Presentation
PresentationPresentation
Presentation
 
Premiers pas avec snort
Premiers pas avec snortPremiers pas avec snort
Premiers pas avec snort
 
Hmailserver
HmailserverHmailserver
Hmailserver
 
Dhcp3
Dhcp3Dhcp3
Dhcp3
 
Ssl et certification electronique - (construction de certification)
Ssl et certification electronique  - (construction de certification)Ssl et certification electronique  - (construction de certification)
Ssl et certification electronique - (construction de certification)
 
Guide pratique openssl sous debian
Guide pratique openssl sous debianGuide pratique openssl sous debian
Guide pratique openssl sous debian
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf
 
05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf05 - creation-playbook-ansible-stack-lamp.pdf
05 - creation-playbook-ansible-stack-lamp.pdf
 
Implémentation d'openvpn
Implémentation d'openvpnImplémentation d'openvpn
Implémentation d'openvpn
 
Resume SGBDR
Resume SGBDRResume SGBDR
Resume SGBDR
 
Activer les connexions à distance my sql
Activer les connexions à distance my sqlActiver les connexions à distance my sql
Activer les connexions à distance my sql
 
Openfire
OpenfireOpenfire
Openfire
 
Mise en place d’un système de détection
Mise en place d’un système de détectionMise en place d’un système de détection
Mise en place d’un système de détection
 

Mise en place d'un serveur de mail complet linux server wiki

  • 1. De Linux Server Wiki. Ce tutoriel va vous expliquer comment mettre en place un serveur mail complet pour plusieurs domaines et supportant l'ipv6 sous debian lenny. Les éléments suivants seront utilisés : un serveur smtp : postfix un mail delivery agent (mda) : maildrop un serveur pop/imap : courier un scanneur de contenu : amavis un antispam : spamassassin un antivirus : ClamAV un gestionnaire de mailing list : mailman des webmails : Squirrelmail et roundcube Afin de gérer facilement les domaines, certains services seront couplés avec MySQL. Pour ceux qui veulent bénéficier du filtrage pour les boites imaps, je vous montrerais aussi comment coupler postfix avec maildrop. En dernier lieu, nous verront rapidement comment configurer un serveur mx secondaire pour vos domaines. Nous allons mettre en place un service email pour deux domaines : core.csnu.org et csnu.org core.csnu.org représente le serveur en lui-même, et permet de délivrer les mails aux utilisateurs locaux du serveur. csnu.org est ce qu'on appel un domaine virtuel. Nous gèrerons les mails de ce domaine via MySQL. Au niveau dns, core.csnu.org est le domaine identifiant la machine. Il possède l'adresse ipv4 213.186.47.110 et l'adresse ipv6 2001:41d0:1:d6e::110. csnu.org est un alias pour core.csnu.org. Les changements de permissions effectués dans ce howto supposent que vous êtes en umask 0027 1 Champs dns MX 2 Postfix 2.1 Configuration de postfix pour le support MySQL des domaines virtuels 2.2 Configuration du smtp-auth 2.3 Ajout du support SSL/TLS. 2.4 Ajout d'un utilisateur virtuel et lancement des services. 2.5 Commandes utiles 2.6 Support du quota. Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 1 sur 37 05/07/2012 12:19
  • 2. 2.7 Problèmes possibles. 3 Courier 3.1 Ajout du support SSL/TLS 3.1.1 utiliser les scripts de courier 3.1.2 Créer son propre certificat signé par son autorité de certification. 3.2 Lancement 4 maildrop 4.1 maildroprc 4.2 Quota 4.3 Intégration à postfix 4.4 Vérification et redémarrage 5 amavis 5.1 Taguer les mails contenant un virus 6 spamassassin 6.1 Mise en place de spamassassin 6.2 Le problème de la cohabitation entre Sender Policy Framework (SPF) et l'envoi de mails 6.3 Sender Policy Framework (SPF) et ipv6 7 clamav 8 Mailman 9 Des scripts de gestion de la base de donnée MySQL 10 Installation de webmails 10.1 Squirrelmail 10.2 Ajout du support des langues 10.3 Plugins utiles 10.3.1 Ajout de votre favicon personnalisé 10.4 RoundCube 10.5 wapreader 11 Mise en place d'un MX secondaire Pour que les mails a destination de vos deux domaines arrivent bien sur votre serveur, il faut configurer des champs dns MX. Pour cela, éditez la zone dns de votre domaine (/srv/bind/csnu.org.hosts dans mon cas) et ajoutez/modifiez les lignes suivantes: core.csnu.org. IN MX 1 core.csnu.org. csnu.org. IN MX 1 core.csnu.org. core.csnu.org. IN A 213.186.47.110 core.csnu.org. IN AAAA 2001:41d0:1:d6e::110 Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 2 sur 37 05/07/2012 12:19
  • 3. list.csnu.org. IN CNAME core.csnu.org. Si vous n'avez pas d'adresse ipv6 configuré sur votre serveur, vous n'aurez pas besoin du champ AAAA. Vous pouvez aussi configurer un champ spf. Le spf (Sender Policy Framework) est une mesure antispam permettant aux autres serveurs de savoir quels serveurs ont le droit d'envoyer des mails pour votre domaine. Voici mes champs dns spf : core.csnu.org. IN TXT "v=spf1 mx -all" csnu.org. IN TXT "v=spf1 mx ~all" mx signifie que seules les serveurs mx ont le droit d'envoyer des mails pour le domaine en question. ~all signifie que toutes les autres ips n'ont probablement pas le droit d'envoyer de mails. -all signifie que toutes les autres ips n'ont pas le droit d'envoyer de mails. Commençons par installer les différents composants de postfix ainsi que sasl qui nous permettra de gérer le smtp-auth histoire de ne pas laisser notre serveur en open-relay et servir de relai pour le spam. aptitude install postfix postfix-mysql libsasl2-2 libsasl2-modules sasl2-bin libpam-mysql procmail Debian vous laissera choisir entre plusieurs configurations pour postfix. Choisissez pas de configuration. Stoppez les services inutiles pour le moment : /etc/init.d/postfix stop /etc/init.d/saslauthd stop Le fichier de configuration principal de postfix est /etc/postfix/main.cf. Ouvrez le avec votre éditeur de texte et modifiez les lignes suivantes: smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no disable_vrfy_command = yes smtpd_helo_required = yes #strict_rfc821_envelopes = yes mydomain = core.csnu.org # ajoute .$mydomain si quelqu'un envoi un mail sans préciser le domaine (utile en local quand vous utilisez la fonction mail) append_dot_mydomain = yes # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h myhostname = core.csnu.org Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 3 sur 37 05/07/2012 12:19
  • 4. alias_maps = proxy:hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = core.csnu.org, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8, [::1]/128, 213.186.47.110, [2001:41d0:1:d6e::110] mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + message_size_limit = 10240000 inet_interfaces = 127.0.0.1, [::1], 213.186.47.110, [2001:41d0:1:d6e::110] inet_protocols = ipv4, ipv6 #ips à binder pour envoyer des mails via smtp #smtp_bind_address=213.186.47.110 #smtp_bind_address6=2001:41d0:1:d6e::110 Nous venons de définir la directive myorigin de postfix comme étant le fichier /etc/mailname. Cette directive défini de qui provient les mails envoyés par les utilisateurs locaux. Dans notre cas, les mails doivent provenir du domaine de notre machine, à savoir, core.csnu.org. Tapez donc : echo "core.csnu.org" > /etc/mailname chmod o+r /etc/mailname Une autre directive importante que nous avons défini est mydestination. Cette directive défini quels domaines postfix doit considérer comme locaux. Lorsque postfix reçoit un mail pour l'un de ces domaines, il les délivre dans la boite locale correspondante. Techniquement, postfix est maintenant déjà près à recevoir des mails destinés à @core.csnu.org. Il reste donc à configurer le domaine virtuel et à ne pas relayer les spams. Pensez à créer la base de donnée des alias : postalias /etc/aliases Dernière chose à faire : vous assurer que le fichier /etc/postfix/main.cf est lisible par tous le monde : chmod o+r /etc/postfix/main.cf Créez une base de donné nommée postfix: mysqladmin -u root --password='motdepasse' create postfix motdepasse correspond au mot-de-passe MySQL de l'utilisateur root Ensuite, créez l'utilisateur postfix ayant pour mot-de-passe 'password' et attribuez lui les droits sur la base de donné postfix : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 4 sur 37 05/07/2012 12:19
  • 5. $ mysql -u root -p Enter password: GRANT ALL PRIVILEGES ON postfix.* TO "postfix"@"localhost" IDENTIFIED BY 'password'; quit; Puis créez les tables dans la base de donné postfix : # mysql -u root -p Enter password: USE postfix; CREATE TABLE `alias` ( `address` varchar(255) NOT NULL default '', `goto` text NOT NULL, `domain` varchar(255) NOT NULL default '', `created` datetime NOT NULL default '0000-00-00 00:00:00', `modified` datetime NOT NULL default '0000-00-00 00:00:00', `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (address) ) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases'; USE postfix; CREATE TABLE `domain` ( `domain` varchar(255) NOT NULL default '', `description` varchar(255) NOT NULL default '', `aliases` int(10) NOT NULL default '0', `mailboxes` int(10) NOT NULL default '0', `maxquota` int(10) NOT NULL default '0', `transport` varchar(255) default NULL, `backupmx` tinyint(1) NOT NULL default '0', `created` datetime NOT NULL default '0000-00-00 00:00:00', `modified` datetime NOT NULL default '0000-00-00 00:00:00', `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (domain) ) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains'; USE postfix; CREATE TABLE `mailbox` ( `username` varchar(255) NOT NULL default '', `password` varchar(255) NOT NULL default '', `name` varchar(255) NOT NULL default '', `maildir` varchar(255) NOT NULL default '', `quota` int(10) NOT NULL default '0', `domain` varchar(255) NOT NULL default '', `created` datetime NOT NULL default '0000-00-00 00:00:00', `modified` datetime NOT NULL default '0000-00-00 00:00:00', `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (`username`) ) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes'; quit; Nous avons donc créé 3 tables : alias qui contiendra les alias, c'est-à-dire, les redirections de mails. domain qui contiendra les domaines virtuels gérés par postfix. mailbox qui contiendra les boites mails virtuels. Maintenant, nous allons créer l'utilisateur vmail et son groupe vmail. C'est cet utilisateur qui centralisera les boites mails virtuels. Dans ce exemple, le répertoire personnel de cet Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 5 sur 37 05/07/2012 12:19
  • 6. utilisateur est /srv/vmail. C'est dans ce répertoire que les comptes mails seront stockés. groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /srv/vmail -m Éditez encore une fois le fichier /etc/postfix/main.cf et ajoutez y les lignes suivantes : #mysql virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_gid_maps = static:5000 virtual_mailbox_base = /srv/vmail virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_limit = 51200000 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 5000 virtual_transport = virtual virtual_uid_maps = static:5000 # Support du quota (il n'est pas compilé sur le postfix de debian). virtual_create_maildirsize = yes virtual_mailbox_extended = yes virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf virtual_mailbox_limit_override = yes virtual_maildir_limit_message = The user you are trying to reach is over quota. Please, try again later. virtual_overquota_bounce = yes #Pour les domaines à relayer: #relay_domains = proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf Petite explication pour, par exemple, la ligne virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf : mysql: spécifie que le fichier qui suit est la configuration pour accéder à la base MySQL des alias virtuels. proxy: spécifie qu'il faudra lire le fichier en utilisant le mécanisme proxy de postfix. En effet, par défaut, pour des raisons de sécurité, postfix est chrooté et ne pourra donc pas avoir accès aux fichiers de configurations MySQL une fois lancé. Pour palier à ce problème, postfix inclut un démon "proxy" qui ne sera pas chrooté et qui pourra donc lire les fichiers nécessaires. Plus généralement : virtual_alias_maps défini les alias virtuels virtual_mailbox_base défini le répertoire où seront stockés les boites mails. C'est typiquement le homedir de l'utilisateur défini par virtual_uid_maps. virtual_mailbox_domains défini les domaines pour lesquels postfix sera la destination finale. L'agent utilisé pour délivrer les mails sera celui de virtual_transport. virtual_mailbox_maps défini les utilisateurs virtuels. virtual_transport défini avec quel logiciel postfix doit délivrer les mails. Par défaut, c'est le démon virtual inclut avec postfix qui s'en charge Il va maintenant falloir créer les différents fichiers de configuration pour MySQL. Créez le fichier /etc/postfix/mysql_virtual_alias_maps.cf contenant: user = postfix Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 6 sur 37 05/07/2012 12:19
  • 7. password = password hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = 1 Créez le fichier /etc/postfix/mysql_virtual_domains_maps.cf contenant: user = postfix password = password hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1' Créez le fichier /etc/postfix/mysql_virtual_mailbox_maps.cf contenant: user = postfix password = password hosts = localhost dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1 Créez le fichier /etc/postfix/mysql_virtual_mailbox_limit_maps.cf contenant: user = postfix password = password hosts = localhost dbname = postfix query = SELECT quota FROM mailbox WHERE username='%s' Créez le fichier /etc/postfix/mysql_relay_domains_maps.cf contenant: user = postfix password = password hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1' and active = '1' Soyez très attentif à la ligne hosts de chacun de ces fichiers. Comme je l'ai déjà dit, étant donné que postfix est chrooté, on passe par le proxy postfix qui permet à postfix de se servir directement du fichier socket de MySQL pour accéder aux bases. Dans ce cas, il faut laisser hosts = localhost. Une autre méthode serait de ne pas utiliser le système proxy, mais d'entrer 127.0.0.1 en tant qu'host. Dans ce cas, il faudra veiller à ce que mysql n'ait pas l'option skip-networking d'activée. Dernière chose à faire ici : il faut utiliser postmap sur chacun des fichiers afin de les transformer en table que postfix affectionne : cd /etc/postfix Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 7 sur 37 05/07/2012 12:19
  • 8. postmap mysql_virtual_alias_maps.cf postmap mysql_virtual_domains_maps.cf postmap mysql_virtual_mailbox_maps.cf postmap mysql_virtual_mailbox_limit_maps.cf postmap mysql_relay_domains_maps.cf Cette opération est à recommencer après chaque modification de l'un de ces fichiers. Pour finir, modifiez les permissions étant donné que les mot-de-passes mysql sont stockés en clair. Veilliez bien à conserver le fichier main.cf accessible à tous le monde étant donné que sendmail a besoin d'y accéder pour envoyer des mails. chown root:postfix /etc/postfix/* chmod 640 /etc/postfix/* chmod o+r /etc/postfix/main.cf chmod +x /etc/postfix/postfix-script Nous allons maintenant configurer le support SASL afin de ne pas laisser notre serveur en open-relay et servir ainsi comme relai pour les spams. Ajoutez les lignes suivantes dans le fichier /etc/postfix/main.cf : # Support SASL broken_sasl_auth_clients = yes smtpd_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname # reject_rbl_client dnsbl.dronebl.org, # reject_rbl_client list.dsbl.org, # reject_rbl_client bl.spamcop.net, # reject_rbl_client sbl-xbl.spamhaus.org smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_security_options = noanonymous Créez le fichier /etc/postfix/sasl/smtpd.conf et ajoutez y les lignes suivantes: pwcheck_method: saslauthd mech_list: plain login allow_plaintext: true Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 8 sur 37 05/07/2012 12:19
  • 9. Comme précédemment, veillez à bien utiliser localhost comme hostname afin d'utiliser le socket mysql si le skip-networking est activé sur votre serveur MySQL. Notez qu'il est impossible d'utiliser les méthodes d'authentification CRAM-MD5 et DIGEST-MD5 si les mot-de-passes sont cryptés dans la base mysql (ce qui est le cas ici). Nous nous contenterons donc de plain. Éditez le fichier /etc/default/saslauthd de façon à ce qu'il ait la configuration suivante: START=yes MECHANISMS="pam" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" Il faut encore créé le dossier qui contiendra le socket de sasl: mkdir -p /var/spool/postfix/var/run/saslauthd Créez le fichier /etc/pam.d/smtp (il faudra peut-être le nommer smtpd) et ajoutez y les lignes suivantes: auth required pam_mysql.so user=postfix passwd=password host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 account sufficient pam_mysql.so user=postfix passwd=password host=localhost db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 Une fois de plus, soyez attentif à l'argument host= A titre d'information, voici les différentes options possibles pour l'argument crypt= : 0 (ou "plain") = Pas de cryptage. Ceci n'est pas recommandé. 1 (ou "Y") = utilise la fonction crypt() de linux. Celà correspond à la fonction ENCRYPT() de MySQL. C'est la solution que nous avons choisi ici. Attention cependant, seul les huits premiers caractères du mot-de-passe seront pris en compte. 2 (ou "mysql") = Utilise la fonction MySQL PASSWORD(). 3 (or "md5") = Utilise la fonction MySQL MD5(). Il ne reste plus qu'à ajouter l'utilisateur postfix au groupe sasl : adduser postfix sasl Un petit point à propos des permissions : /var/spool/postfix/, /var/spool/postfix/var/ et /var/spool/postfix/var/run/ doivent être o+x /var/spool/postfix/var/run/saslauthd doit appartenir à root:sasl Comme pour tous les serveurs, il est interessant de mettre en place un cryptage SSL/TLS afin de sécuriser les transactions. En admettant que vous avez suivi mon guide Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 9 sur 37 05/07/2012 12:19
  • 10. concernant la mise en place d'une autorité de certification, voici ce qu'il reste à faire. Commencez par ajouter les lignes suivantes dans votre fichier /etc/ssl/openssl.cnf : [POSTFIX] nsComment = "SMTP Server Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always issuerAltName = issuer:copy basicConstraints = critical,CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment nsCertType = server extendedKeyUsage = serverAuth Puis créés le certificat et signés le avec votre autorité : openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req openssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions POSTFIX -in postfix.req -out postfix.pem Si jamais vous possédez déjà vos clés mais qu'elles sont chiffrés par une passphrase, voici comment supprimer la passphrase : openssl rsa -in key.pem -text openssl rsa -in key.pem -out key_unlocked.pem mv key.pem key_locked.pem mv key_unlocked.pem key.pem Postfix ne permet pas d'utiliser des clés vérouillés par une passphrase, veillez donc bien à spécifier l'option -nodes de la première ligne. Personnellement, je stock les fichiers du certificat dans /etc/postfix/ssl/: mkdir /etc/postfix/ssl mv smtpd.key /etc/postfix/ssl/ mv smtpd.pem /etc/postfix/ssl/ chmod 600 /etc/postfix/ssl/* Créez le fichier contenant la chaine de certification : cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/core_ca/core_ca.pem > /etc/postfix/ssl/ca_chain.pem Il faut encore modifier /etc/postfix/main.cf : smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.pem smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 10 sur 37 05/07/2012 12:19
  • 11. smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem smtpd_tls_security_level=may smtp_tls_security_level=may smtpd_tls_loglevel = 1 smtp_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600 smtp_tls_session_cache_timeout = 3600 Note : Les directives smtp_tls_cert_file et smtp_tls_key_file sont quant-à-elle destiné à l'authentification de votre client smtp (le certificat précisé à ces directives doit passer le test openssl verify -purpose sslclient. Le certificat que nous avons généré est un certificat server uniquement. Désormais, vous pourrez configurer votre logiciel de messagerie afin d'utiliser le chiffrement TLS. Si vous souhaitez permettre les connexions SSL, il faut décommenter les quatres lignes suivantes du fichier /etc/postfix/master.cf : #smtps inet n - - - - smtpd # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject Notez qu'ici, nous ne forçons ni l'utilisation du tls sur le serveur smtp, ni la vérification tls en mode client smtp. Cela signifie que le serveur annoncera supporter le TLS, mais ne forcera pas son utilisation ; de même pour le client. Pour votre réseau interne, vous pouvez forcez la vérification TLS du le client grâce à smtp_tls_policy_maps. Par exemple voici la ligne à ajouter dans main.cf: smtp_tls_policy_maps = hash:/etc/postfix/tls_policy Et le fichier /etc/postfix/tls_policy : csnu.org verify N'oubliez pas de formater ce fichier pour postfix et de le rendre accessible en lecture : postmap /etc/postfix/tls_policy chgrp postfix /etc/postfix/tls_policy* Pour des informations complémentaires, rendez-vous ici (http://www.postfix.org/TLS_README.html) . Pour ajouter un utilisateur test@csnu.org ainsi qu'un alias alias@csnu.org renvoyant vers notre utilisateur: Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 11 sur 37 05/07/2012 12:19
  • 12. # mysql -u root -p Enter password: use postfix; INSERT INTO domain (domain,description) VALUES ('csnu.org','Test Domain'); INSERT INTO alias (address,goto) VALUES ('alias@csnu.org', 'test@csnu.org'); INSERT INTO mailbox (username,password,name,maildir) VALUES ('test@csnu.org',ENCRYPT('userpassword'),'Mailbox User','test@csnu.org/'); Les mots-de-passe sont cryptés avec la fonction ENCRYPT() de MySQL. Comme je l'ai dit précédemment, cette fonction limite la taille des passwords à huit caractères. Si vous souhaitez utiliser des passwords de plus de huit caractères vous pouvez utiliser l'une des autres fonctions de cryptage de Mysql (http://dev.mysql.com/doc/refman/5.0/en /encryption-functions.html) . Pensez cependant à ajuster la configuration du fichier /etc/pam.d/smtp comme décrit ici. Vous pouvez maintenant lancer vos services : /etc/init.d/saslauthd start /etc/init.d/postfix start Pour tester si l'authentification fonctionne bien : testsaslauthd -u test@csnu.org -p userpassword -s smtp -f /var/spool/postfix/var/run/saslauthd/mux Vous pouvez vérifier que postfix ne détecte aucun problème avec : postfix check La queue de postfix peut être géré en ligne de commande avec la commande postqueue. Pour afficher la queue, tapez : postqueue -p Pour forcer postfix à traiter sa queue, tapez : postqueue -f vous aurez peut-être la nécessité de supprimer un message de la queue. Pour celà, il faut utiliser la commande postsuper : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 12 sur 37 05/07/2012 12:19
  • 13. postsuper -d ID L'ID correspond au Queue ID renvoyé par la commande postqueue -p La commande postalias permet de générer les fichiers d'alias de postfix : postalias /etc/aliases La commande postconf permet de manipuler la configuration en ligne de commande La commande postcat permet de lire un mail en queue. Par exemple, pour récupérer sous forme lisible le mail en queue situé dans /var/spool/postfix/deferred/B/B9C791 il suffit d'utiliser : postcat /var/spool/postfix/deferred/B/B9C791 Il est aussi possible de passer directement via le Queue ID du mail : postcat -q B9C791 Vous l'aurez peut-être remarqué : postfix ne supporte pas le quota par défaut. Le patch VDA (http://vda.sourceforge.net/) permet d'activer le support du quota pour le MDA virtual de postfix. Vous pouvez trouver une version postfix-vda pour debian sur http://debian.home-dn.net/ si vous souhaitez continuer d'utiliser le démon virtual fournit avec postfix pour délivrer les mails de vos domaines virtuels. Une autre méthode consiste à utiliser un autre MDA pour transporter les mails, par exemple, maildrop. Si vous utilisez un noyau avec le patch grsecurity, j'ai remarqué un comportement étrange. En effet, lorsque j'essayais d'envoyer un mail avec sendmail avec un autre utilisateur que root (www-data par exemple) il me renvoyait une erreur. C'est un problème de droit : /proc/net n'était pas lisible et exécutable par tous le monde (o+rx) ce qui empêchait sendmail d'envoyer les mails. Nous allons maintenant installer courier pour ses fonctionnalités de serveur pop et imap. Installer les paquets nécessaires : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 13 sur 37 05/07/2012 12:19
  • 14. aptitude install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl Éditez le fichier /etc/courier/authdaemonrc : authmodulelist="authmysql" Éditez le fichier /etc/courier/authmysqlrc : MYSQL_SERVER localhost MYSQL_USERNAME postfix MYSQL_PASSWORD password MYSQL_SOCKET /var/run/mysqld/mysqld.sock #MYSQL_PORT 0 MYSQL_OPT 0 MYSQL_DATABASE postfix MYSQL_USER_TABLE mailbox MYSQL_CRYPT_PWFIELD password #DEFAULT_DOMAIN domain.tld MYSQL_UID_FIELD 5000 MYSQL_GID_FIELD 5000 MYSQL_LOGIN_FIELD username MYSQL_HOME_FIELD "/srv/vmail" MYSQL_NAME_FIELD name MYSQL_MAILDIR_FIELD maildir #MYSQL_QUOTA_FIELD quota #MYSQL_WHERE_CLAUSE server='exemple.domain.tld' Je préfère ne pas binder mes services sur toutes les ips configurés sur la machine. Il faut donc configurer courier pour qu'il ne bind que les ips voulus. Pour courier-pop éditez le fichier /etc/courier/pop3d et modifiez la ligne PORT=110 par : PORT=127.0.0.1.110,::1.110,213.186.47.110.110,2001:41d0:1:d6e::110.110 Pour courier-pop-ssl éditez le fichier /etc/courier/pop3d-ssl et modifiez la ligne SSLPORT=995 par : SSLPORT=127.0.0.1.995,::1.995,213.186.47.110.995,2001:41d0:1:d6e::110.995 Pour courier-imap éditez le fichier /etc/courier/imapd et modifiez la ligne PORT=143 par : PORT=127.0.0.1.143,::1.143,213.186.47.110.143,2001:41d0:1:d6e::110.143 Pour courier-imap-ssl éditez le fichier /etc/courier/imapd-ssl et modifiez la ligne SSLPORT=993 par : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 14 sur 37 05/07/2012 12:19
  • 15. SSLPORT=127.0.0.1.993,::1.993,213.186.47.110.993,2001:41d0:1:d6e::110.993 utiliser les scripts de courier courier inclut des scripts qui permettent de générer automatiquement ces certificats SSL. Pour cela, il faut éditer les fichiers /etc/courier/pop3d.cnf et /etc/courier /imapd.cnf puis lancer les commandes suivantes : mkpop3dcert mkimapdcert Créer son propre certificat signé par son autorité de certification. Éditez votre fichier /etc/ssl/openssl.cnf et ajoutez les lignes suivantes : [IMAP] nsComment = "SSL Imap Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always issuerAltName = issuer:copy basicConstraints = critical,CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment nsCertType = server extendedKeyUsage = serverAuth [POP] nsComment = "SSL Pop Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always issuerAltName = issuer:copy basicConstraints = critical,CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment nsCertType = server extendedKeyUsage = serverAuth Encore une fois, les clés ne devront pas être chiffré avec une passphrase car courier ne les gère pas. Pour créer le certificat du serveur pop : openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout pop.key -out pop.req openssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions POP -in pop.req -out pop.pem cat pop.key pop.pem > pop3d.pem openssl gendh >> pop3d.pem mv pop3d.pem /etc/courier/ Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 15 sur 37 05/07/2012 12:19
  • 16. rm -rf pop.* Pour créer le certificat du serveur imap: openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:1024 -keyout imap.key -out imap.req openssl ca -config /etc/ssl/openssl.cnf -name core_ca -extensions IMAP -in imap.req -out imap.pem cat imap.key imap.pem > imapd.pem openssl gendh >> imapd.pem mv imapd.pem /etc/courier/ rm -rf imap.* Et comme d'habitude, on modifie les droits : chmod 600 /etc/courier/*.pem Il ne reste plus qu'à lancer courier et à le tester: /etc/init.d/courier-authdaemon start /etc/init.d/courier-imap start /etc/init.d/courier-imap-ssl start /etc/init.d/courier-pop start /etc/init.d/courier-pop-ssl start Avec le temps, vous en aurez peut-être assez de devoir relancer chacun de ces scripts. C'est pourquoi j'ai fait un script abrégé : #! /bin/sh case "$1" in start) /etc/init.d/courier-authdaemon start /etc/init.d/courier-pop start /etc/init.d/courier-pop-ssl start /etc/init.d/courier-imap start /etc/init.d/courier-imap-ssl start exit 0 ;; stop) /etc/init.d/courier-authdaemon stop /etc/init.d/courier-pop stop /etc/init.d/courier-pop-ssl stop /etc/init.d/courier-imap stop /etc/init.d/courier-imap-ssl stop exit 0 ;; restart) $0 stop Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 16 sur 37 05/07/2012 12:19
  • 17. $0 start exit 0 ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac maildrop est un mail delivery agent (MDA). Son rôle est de délivrer les messages reçus par un serveur smtp dans les boites mails des utilisateurs. Nous allons mettre en place maildrop pour remplacer le démon virtual de postfix parce qu'il permet de gérer les quotas et les filtres. Le paquet maildrop de debian lenny fournit maildrop 2.0.4 qui a un comportement étrange dans la gestion des quotas. Pour régler ce problème il faut compiler soit même maildrop 2.0.4. Pour commencer il faut installer g++ ainsi que les paquets courier-authlib-dev et libpcre3-dev : aptitude install g++ courier-authlib-dev libpcre3-dev Téléchargez maildrop et extrayez le : wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2 tar jxf maildrop-2.0.4.tar.bz2 il faut maintenant configurer maildrop : cd maildrop-2.0.4 ./configure -prefix=/usr/local/courier --enable-maildrop-uid=5000 --enable-maildrop-gid=5000 --enable-maildirquota --without-db Ici, on installe maildrop avec l'utilisateur d'uid 5000 et de gid 5000 ce qui correspond à notre utilisateur vmail. maildrop sera installé dans /usr/local/courier Compilons et installons maildrop : make make install Une erreur de compilation peut apparaître sur l'un des composants. Cela n'empêchera pas maildrop de fonctionner mais vous pouvez régler le problème comme ceci : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 17 sur 37 05/07/2012 12:19
  • 18. cd makedat ln -s makedatprog.c makedatprog cd .. make install Il faut adapter les droits de /usr/local/courier/bin/ : chown vmail: /usr/local/courier/bin/* chmod o+rx /usr/local/courier/ Pour que maildrop fonctionne il faut qu'il puisse accéder au socket de courier situé dans /var/run/courier/authdaemon/ : chgrp vmail /var/run/courier/authdaemon/ Le fichier /etc/maildroprc contient la configuration ainsi que les règles de filtrage par défaut de maildrop. Pour commencer nous allons activer les logs de maildrop. Ajoutez la ligne suivante dans /etc/maildroprc : logfile "/var/log/maildroprc.log" Créez le fichier de log et attribuez le à l'utilisateur vmail : touch /var/log/maildroprc.log chown vmail:vmail /var/log/maildroprc.log Vous voudrez peut-être ajouter maildrop à la rotation des logs. Éditez le fichier /etc/logrotate.d/maildrop et ajoutez y les lignes suivantes : /var/log/maildroprc.log { weekly missingok rotate 12 compress delaycompress notifempty create 640 vmail vmail sharedscripts postrotate endscript } Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 18 sur 37 05/07/2012 12:19
  • 19. Pour créer automatiquement la mailbox si elle n'existe pas lors de la réception d'un message ajoutez les lignes suivantes à /etc/maildroprc : # Si la mailbox représenté par $DEFAULT n'existe pas `test -e $DEFAULT/` if ( $RETURNCODE != 0 ) { # On la crée `maildirmake $DEFAULT` # ainsi que les quelques sous-répertoire de base `maildirmake -f Junk $DEFAULT` `maildirmake -f Sent $DEFAULT` `maildirmake -f Trash $DEFAULT` # Puis on change les droits `chmod -R go-rwx $DEFAULT` } Enfin nous allons configurer un fichier de filtre local à chaque utilisateur virtuel : # On load les filtres spécifiques de l'utilisateur $DEFAULT s'ils existent `test -r $DEFAULT/mailfilter` if( $RETURNCODE == 0 ) { log "(==) Including $DEFAULT/mailfilter" exception { include $DEFAULT/mailfilter } } Par exemple, voici comment je filtre les spams dans mon fichier /srv/vmail/pfoo@csnu.org/mailfilter : if (/^X-Spam-Flag:.*YES/) { exception { to $DEFAULT/.Junk/ } } Pour le support du quota il faut créer les fichiers nécessaires avec maildirmake. Si la mailbox n'existe pas encore tapez : maildirmake /srv/vmail/test@csnu.org chown -R vmail:vmail /srv/vmail/test@csnu.org Pour activer le quota pour la mailbox il faut utiliser l'option -q de maildirmake. Pour créer une boite de 512 000 000 bytes tapez : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 19 sur 37 05/07/2012 12:19
  • 20. maildirmake -q 512000000S /srv/vmail/test@csnu.org chown -R vmail:vmail /srv/vmail/test@csnu.org Pour créer une boite pouvant contenir un maximum de 1000 fichiers tapez : maildirmake -q 1000C /srv/vmail/test@csnu.org chown -R vmail:vmail /srv/vmail/test@csnu.org maildrop délivrera un message d'erreur lorsqu'une boite est pleine à un certain pourcentage (défini dans la configuration de postfix). Placez le texte suivant dans /usr/local /courier/etc/quotawarnmsg et assurez vous qu'il soit lisible par vmail : From: Postmaster csnu.org <postmaster@csnu.org> Reply-To: postmaster@csnu.org To: Valued Customer:; Subject: Mail quota warning Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit Your mailbox on the server is now more than 90% full. So that you can continue to receive mail you need to remove some messages from your mailbox. Il faut commencer par remplacer <code<virtual par <code>maildrop dans /etc/postfix/main.cf : virtual_transport = maildrop maildrop_destination_recipient_limit=1 Ensuite il faut modifier la configuration de maildrop du fichier /etc/postfix/master.cf : maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/local/courier/bin/maildrop -w 90 -d ${recipient} L'option -w 90 défini qu'il faut avertir l'utilisateur lorsque sa boite mail est pleine à 90%. authtest permet de vérifier si l'authentification de courier fonctionne bien : $ authtest test@csnu.org Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 20 sur 37 05/07/2012 12:19
  • 21. Authentication succeeded. Authenticated: test@csnu.org (uid 5000, gid 5000) Home Directory: /srv/vmail Maildir: test@csnu.org/ Quota: (none) Encrypted Password: ZHJghD45/gfFDH42 Cleartext Password: (none) Options: (none) Ensuite testez maildrop : # /usr/local/courier/bin/maildrop -V 7 -d test@csnu.org maildrop: authlib: groupid=5000 maildrop: authlib: userid=5000 maildrop: authlib: logname=test@csnu.org, home=/srv/vmail, mail=test@csnu.org/ maildrop: Changing to /srv/vmail Si vous n'avez eu aucune erreur vous pouvez relancer postfix : /etc/init.d/postfix restart Amavis permet de scanner facilement les mails avec toutes sortes d'outils externes tel que spamassassin et clamav. Installez amavis : aptitude install amavisd-new Il est possible que vous rencontriez l'erreur suivante : Paramétrage de amavisd-new (2.4.2-6.1) ... Creating/updating amavis user account... Starting amavisd: The value of variable $myhostname is "CSNU", but should have been a fully qualified domain name; perhaps uname(3) did not provide such. You must explicitly assign a FQDN of this host to variable $myhostname in amavisd.conf, or fix what uname(3) provides as a host's network name! (failed). invoke-rc.d: initscript amavis, action "start" failed. dpkg : erreur de traitement de amavisd-new (--configure) : le sous-processus post-installation script a retourné une erreur de sortie d'état 1 Des erreurs ont été rencontrées pendant l'exécution : amavisd-new E: Sub-process /usr/bin/dpkg returned an error code (1) Échec de l'installation d'un paquet. Tentative de réparation : Paramétrage de amavisd-new (2.4.2-6.1) ... Creating/updating amavis user account... addgroup: Starting amavisd: The value of variable $myhostname is "CSNU", but should have been Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 21 sur 37 05/07/2012 12:19
  • 22. a fully qualified domain name; perhaps uname(3) did not provide such. You must explicitly assign a FQDN of this host to variable $myhostname in amavisd.conf, or fix what uname(3) provides as a host's network name! (failed). invoke-rc.d: initscript amavis, action "start" failed. dpkg : erreur de traitement de amavisd-new (--configure) : le sous-processus post-installation script a retourné une erreur de sortie d'état 1 Des erreurs ont été rencontrées pendant l'exécution : amavisd-new Cette erreur survient parce que votre fichier /etc/hostname ne contient pas un domaine FQDN (un domaine écrit correctement). Deux possibilités s'offrent à vous : modifier le fichier hostname pour que le domaine soit FQDN (exemple : csnu.org), ou alors, ajoutez la ligne suivante dans /etc/amavis/conf.d/50-user : $myhostname = "csnu.org"; Il va maintenant falloir modifier /etc/postfix/main.cf pour que postfix fasse transiter ses mails par amavis. Ajoutez y les lignes suivantes : # Use amavis content_filter = amavis:[127.0.0.1]:10024 receive_override_options = no_address_mappings De cette manière, postfix va adresser tous les mails entrant à amavis sur le port local 10024. Il faut encore modifier le fichier /etc/postfix/master.cf afin d'y configurer amavis et de définir le port sur lequel postfix va recevoir les mails provenant de amavis : # Amavis filter amavis unix - - - - 10 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_bind_address=127.0.0.1 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 22 sur 37 05/07/2012 12:19
  • 23. Amavis est configuré. Il ne reste plus qu'à relancer les services : /etc/init.d/amavis restart /etc/init.d/postfix restart Si amavis semble utiliser trop de ressource, vous pouvez diminuer le nombre maximum de child. Ajoutez la directive $max_servers = 2; dans la configuration de amavis Par défaut, amavis renvoi les mails contenant un virus vers l'adresse définie par $virus_admin (dans le fichier /etc/amavis/conf.d/20-debian_defaults). Vous voudrez peut-être comme moi que les utilisateurs reçoivent tout de même le message avec une alerte. Pour que les mails contenant un virus arrivent jusqu'aux utilisateurs, il suffit de modifier la directive $final_virus_destiny du fichier /etc/amavis/conf.d/20-debian_defaults comme suit: $final_virus_destiny = D_PASS; Enfin, ajoutez la ligne suivante dans /etc/amavis/conf.d/20-debian_defaults : $subject_tag_maps_by_ccat{+CC_VIRUS} = [ '***INFECTED*** ' ]; Commencez par installer spamassassin et les quelques outils antispams suivants : aptitude install spamassassin razor pyzor Mettez à jour les règles de spamassassin : sa-update Configurez le fichier /etc/spamassassin/local.cf : report_safe 0 Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 23 sur 37 05/07/2012 12:19
  • 24. lock_method flock # Bayes-related operations use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 bayes_auto_expire 1 bayes_auto_learn_threshold_spam 8.0 bayes_path /var/lib/amavis/.spamassassin/bayes # External network tests dns_available yes skip_rbl_checks 0 use_razor2 1 use_pyzor 1 # dcc #use_dcc 1 #dcc_path /usr/bin/dccproc #dcc_add_header 1 #dcc_dccifd_path /var/lib/dcc/dccifd # Use URIBL (http://www.uribl.com/about.shtml) urirhssub URIBL_BLACK multi.uribl.com. A 2 body URIBL_BLACK eval:check_uridnsbl('URIBL_BLACK') describe URIBL_BLACK Contains an URL listed in the URIBL blacklist tflags URIBL_BLACK net score URIBL_BLACK 3.0 urirhssub URIBL_GREY multi.uribl.com. A 4 body URIBL_GREY eval:check_uridnsbl('URIBL_GREY') describe URIBL_GREY Contains an URL listed in the URIBL greylist tflags URIBL_GREY net score URIBL_GREY 0.25 # Use SURBL (http://www.surbl.org/) urirhssub URIBL_JP_SURBL multi.surbl.org. A 64 body URIBL_JP_SURBL eval:check_uridnsbl('URIBL_JP_SURBL') describe URIBL_JP_SURBL Has URI in JP at http://www.surbl.org/lists.html tflags URIBL_JP_SURBL net score URIBL_JP_SURBL 3.0 # Optional Score Increases score DCC_CHECK 4.000 score SPF_FAIL 10.000 score SPF_HELO_FAIL 10.000 score RAZOR2_CHECK 2.500 score BAYES_99 4.300 score BAYES_95 3.500 score BAYES_80 3.000 internal_networks 213.186.47.110 87.98.136.217 trusted_networks 213.186.47.110 87.98.136.217 Les directives internal_networks et trusted_networks sont très importantes pour la pertinence des résultats. Elles permettent à spamassassin de savoir à quels headers il peut faire confiance dans le mail scanné. trusted networks doit contenir les mêmes entrées que internal_networks. Les différents modules chargés par spamassassin se situent dans les fichier /etc/spamassassin/init.pre, /etc/spamassassin/v310.pre et /etc/spamassassin/v312.pre. Certains sont commentés par défaut. Pour les activer, dé-commentez les simplement. Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 24 sur 37 05/07/2012 12:19
  • 25. Nous allons maintenant configurer razor en utilisant l'utilisateur amavis : su - amavis razor-admin -d --create razor-admin -d --register exit Si jamais vous avez eu une erreur lors du register précédent, procédez comme cela : su - amavis razor-admin -discover razor-admin -create razor-admin -register exit L'identité sera stockée dans /var/lib/amavis/.razor/ Il faut aussi configurer pyzor avec l'utilisateur amavis : su - amavis pyzor discover exit Ceci enregistrera la liste des serveurs du projet pyzor dans /var/lib/amavis/.pyzor/ Il faut encore activer le support anti-spam de amavis dans /etc/amavis/conf.d/15-content_filter_mode : @bypass_spam_checks_maps = ( %bypass_spam_checks, @bypass_spam_checks_acl, $bypass_spam_checks_re); Puis modifiez le fichier /etc/amavis/conf.d/20-debian_defaults comme suit : $sa_spam_subject_tag = '***SPAM*** '; $final_virus_destiny = D_DISCARD; $final_banned_destiny = D_BOUNCE; $final_spam_destiny = D_PASS; $final_bad_header_destiny = D_PASS; De cette manière, amavis tagera le sujet des mails considérés comme spam, mais les délivrera quand même dans la boite mail. Les virus sont quant-à-eux supprimés directement et un rapport de détection est envoyé à $virus_admin. /etc/init.d/amavis restart Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 25 sur 37 05/07/2012 12:19
  • 26. Notez qu'il n'est pas nécessaire de lancer spamassassin dans le cas présent. Si il semble que amavis ne tag pas les spams, allez faire un tour dans le fichier /etc/amavis/conf.d/05-domain_id. Par défaut, ce fichier charge en tant que $mydomain le fichier /etc/mailname. Ensuite, il défini @local_domains_acl comme étant la variable $mydomain. Seuls les domaines contenu dans @local_domains_acl seront scannés. Pour mes tests, j'ai simplement commenté la ligne @local_domains_acl et j'ai ajouté @local_domains_acl = ( ".csnu.org" ); à la place. Pour simplement scanner tous les domaines, utilisez @local_domains_acl = ( "." ); Vous pouvez trouver un exemple de spam dans /usr/share/doc/spamassassin/examples/sample-spam.txt Actuellement lorsque vous envoyez un mail, il est scanné par spamassassin. en temps normal, cela ne pose aucun problème étant donné que vos mails ne devraient pas être reconnu comme spam. Cependant, le fichier /etc/spamassassin/init.pre charge par défaut le plugin SPF de spamassassin (ligne loadplugin Mail::SpamAssassin::Plugin::SPF). Si vous avez configuré des champs spf dans la zone dns de votre domaine, vous remarquerez très vite que vos mails sortant seront tagués spams et positifs au test du spf. C'est normal étant donné que votre ip ne fait pas partie des ips autorisées à envoyer des mails pour le domaine. Pour régler ce problème, il va falloir modifier la configuration de postfix afin d'avoir un port sur lequel on peut envoyer des emails qui ne seront pas scannés par spamassassin. Ouvrez le fichier /etc/postfix/master.cf et ajoutez les lignes suivantes : submission inet n - - - - smtpd # -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o content_filter=amavis:[127.0.0.1]:10026 Désormais, le port 587 est aussi écouté par postfix. Pour envoyer des mails sur ce port, il faut être authentifié par SASL (donc on n'est pas un relai pour le spam) et les mails sont passés à amavis sur le port 10026. Il faut ensuite modifier le fichier /etc/amavis/conf.d/20-debian_defaults (attention un champ $inet_socket_port existe déjà et il faudra le commenter/modifier): $inet_socket_port = [10024,10026]; # écoute sur les ports tcp 10024 et 10026 $interface_policy{'10026'} = 'SASLBYPASS'; $policy_bank{'SASLBYPASS'} = { # mail provenant des ports submission et smtps bypass_spam_checks_maps => [1], # ne pas vérifier le spam bypass_banned_checks_maps => [0], # ne pas vérifier le ban bypass_header_checks_maps => [1], # ne pas vérifier les headers }; Ainsi, les mails reçus sur le port 587 passeront par amavis mais ne subiront aucun test de la part de spamassassin et le problème est réglé. La vérification antivirus est réalisée normalement. Notez qu'il faudra configurer votre logiciel de messagerie pour qu'il envoi les mails sur le port 587. Par la même occasion vous pouvez désactiver l'authentification sur le port smtp (25) en modifiant la ligne smtp de votre master.cf : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 26 sur 37 05/07/2012 12:19
  • 27. smtp inet n - - - - smtpd -o smtpd_sasl_auth_enable=no Cela vous permettra par la suite de bloquer facilement une ip (iptables, ...) qui fait du brute-forcing sur votre smtp tout en lui permettant toujours de vous envoyer des mails. Notez cependant qu'il faudra adapter la configuration de votre webmail afin qu'il utilise le port 587 Depuis la version 3.2 de SpamAssassin le nouveau plugin Mail::SPF est utilisé pour la vérification des champs SPF. Ce plugin gère l'ipv6. Cependant, il semblerait que certains scripts perl de SpamAssassin ne gère pas ou mal l'ipv6. Il semble par exemple impossible d'ajouter une ipv6 aux directives internal_networks ou trusted_networks (ce qui est important vis-à-vis de la vérification SPF). D'après un message d'une mailing-list, ce problème devrait être corrigé pour la version 3.3.0. Commencez par installer ClamAV ainsi que quelques librairies de compressions afin d'analyser les archives: aptitude install clamav clamav-daemon gzip bzip2 unzip unrar zoo arj Ajoutez l'utilisateur clamav au groupe amavis: adduser clamav amavis Pour activer le support de clamav de amavis, modifiez le fichier /etc/amavis/conf.d/15-content_filter_mode comme suit : @bypass_virus_checks_maps = ( %bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re); Et redémarrez les services : /etc/init.d/clamav-daemon restart /etc/init.d/amavis restart Mailman est un très bon gestionnaire de mailing list. Il possède notamment une interface d'administration web ce qui facilite grandement la gestion des listes, aussi bien du côté Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 27 sur 37 05/07/2012 12:19
  • 28. admin que du côté utilisateur. Pour commencer, installez mailman : aptitude install mailman Puis ajoutez l'utilisateur postfix au groupe list adduser postfix list Ensuite, modifiez le fichier /etc/mailman/mm_cfg.py comme suit : MTA='Postfix' #permet d'activer le https par défaut (si on ne précise pas https, les POST se passeront mal en https, et on ne pourra rien modifier par l'interface web !) DEFAULT_URL_PATTERN = 'https://%s/cgi-bin/mailman/' DEFAULT_EMAIL_HOST = 'list.csnu.org' DEFAULT_URL_HOST = 'list.csnu.org' # Are archives public or private by default? # 0=public, 1=private DEFAULT_ARCHIVE_PRIVATE = 1 # SUBSCRIBE POLICY # 0 - open list (only when ALLOW_OPEN_SUBSCRIBE is set to 1) ** # 1 - confirmation required for subscribes # 2 - admin approval required for subscribes # 3 - both confirmation and admin approval required # # ** please do not choose option 0 if you are not allowing open # subscribes (next variable) DEFAULT_SUBSCRIBE_POLICY = 3 Notez que j'ai spécifié https à la ligne DEFAULT_URL_PATTERN. Il est en effet conseillé d'utiliser une connexion sécurisée étant donné que les mots-de-passes transitent en clair. Si vous ne spécifiez pas https ici, il sera impossible de modifier des données via l'interface web. DEFAULT_EMAIL_HOST et DEFAULT_URL_HOST définissent simplement les domaines gérés par défaut par mailman. Lorsque vous ajouterez une mailing list sans spécifier de domaine, ces domaines seront utilisés. Éditez le fichier /usr/lib/mailman/Mailman/Defaults.py et vérifiez que les lignes POSTFIX_ALIAS_CMD et POSTFIX_MAP_CMD précise bien les binaires correspondant de postfix. Théoriquement : POSTFIX_ALIAS_CMD = '/usr/sbin/postalias' POSTFIX_MAP_CMD = '/usr/sbin/postmap' Note: si vous devez opérer des changements, n'éditez pas ce fichier, mais plutôt /etc/mailman/mm_cfg.py qui est lu après celui ci et dont les valeurs écrasent celles par défaut. Ajoutez les lignes suivantes à votre fichier /etc/postfix/main.cf : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 28 sur 37 05/07/2012 12:19
  • 29. owner_request_special = no Créez la liste mailman qui est la liste par défaut de mailman : /var/lib/mailman/bin/newlist mailman Maintenant, générez les alias qui serviront à mailman et permettez au groupe list d'y écrire : /var/lib/mailman/bin/genaliases chmod g+w /var/lib/mailman/data/aliases* Ceci a pour effet de créer les fichiers /var/lib/mailman/data/aliases et /var/lib/mailman/data/aliases.db qui contiennent les alias nécessaire au fonctionnement de mailman. Lorsque mailman est en fonctionnement, la création des alias se fait automatiquement. Pour que les alias soient reconnus par postfix, il faut modifier la ligne alias_maps du fichier /etc/postfix/main.cf : alias_maps = proxy:hash:/etc/aliases,proxy:hash:/var/lib/mailman/data/aliases Ajoutez l'hostname de la mailing list (list.csnu.org dans mon cas) dans le mydestination de /etc/postfix/main.cf : mydestination = core.csnu.org, list.csnu.org, localhost.localdomain, localhost Pour activer l'interface web, ajoutez les lignes suivantes à votre vhost apache : Include /etc/mailman/apache.conf Il faut aussi définir le mot-de-passe administratif de mailman, qui permettra en particulier d'utiliser la page web de création de liste : /usr/lib/mailman/bin/mmsitepass Nous allons maintenant ajouter notre domaine virtuel csnu.org dans la configuration de mailman. Ajoutez les lignes suivantes dans /etc/mailman/mm_cfg.py : POSTFIX_STYLE_VIRTUAL_DOMAINS = ['csnu.org'] add_virtualhost('www.csnu.org', 'csnu.org') Et comme précédemment, il faut préciser à postfix où trouver les alias pour les listes @csnu.org. Modifiez le fichier /etc/postfix/main.cf : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 29 sur 37 05/07/2012 12:19
  • 30. virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,proxy:hash:/var/lib/mailman/data/virtual-mailman Il ne reste plus qu'a redémarrer les services /etc/init.d/postfix restart /etc/init.d/apache restart /etc/init.d/mailman restart Pour ajouter une liste, il ne reste plus qu'a utiliser le binaire /usr/lib/mailman/bin/newlist. Par exemple : /usr/lib/mailman/bin/newlist --urlhost='list.csnu.org' --emailhost='csnu.org' test@csnu.org Notez qu'il faut laisser le site comme étant list.csnu.org sinon vous ne pourrez pas administrer la liste. N'oubliez pas de générer la liste des alias : /var/lib/mailman/bin/genaliases Si vous n'avez pas de dossier "fr" dans /etc/mailman, téléchargez mailman sur http://www.gnu.org/software/mailman/ et copiez le dossier "fr" situé dans le répertoire templates de l'archive. Si vous voulez limiter l'accès aux pages des listes avec un htaccess vous devrez ajouter les lignes nécessaires dans le fichier /etc/mailman/apache.conf de cette manière : <Directory /usr/lib/cgi-bin/mailman/> AllowOverride None Options ExecCGI AddHandler cgi-script .cgi Order allow,deny Allow from all #auth de type digest AuthType Digest AuthName "un realm" AuthDigestProvider file AuthDigestDomain / AuthUserFile /chemin/vers/votre/.htpasswd AuthGroupFile /chemin/vers/votre/.htgroup <Limit GET POST> require valid-user </Limit> </Directory> Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 30 sur 37 05/07/2012 12:19
  • 31. J'en ais vite eu marre de devoir retaper des lignes mysql relativement longues pour ajouter et modifier des utilisateurs. J'ai donc créé quelques scripts bash histoire de me simplifier la vie. Les voici (http://wiki.csnu.org/upload/mail_scripts.tar.bz2) . Vous n'aurez peut-être pas toujours accès à votre client mail, particulièrement lorsque vous êtes en déplacement. Il devient alors très intéressant de pouvoir relever son courrier électronique par une interface web. J'ai retenu deux clients : Squirrelmail pour sa clarté et sa simplicité, et RoundCube pour son côté esthétique. Téléchargez la dernière version de squirrelmail sur http://www.squirrelmail.org/download.php. Transférez la sur votre serveur (ou utilisez wget pour la télécharger directement sur votre serveur). Pour ma part, j'ai téléchargé l'archive dans le dossier root. Je vais donc la déplacer dans le dossier de ma vhost webmail, puis l'extraire: mv /root/squirrelmail-1.4.13.tar.gz /srv/http/csnu.org/webmail.csnu.org/ cd /srv/http/csnu.org/webmail.csnu.org/ tar zxvf squirrelmail-1.4.13.tar.gz mv squirrelmail-1.4.13 squirrel chown -R root:www-data squirrel/ chmod -R g-w,o-rx squirrel/ Pour la configuration, squirrelmail dispose d'un outil de configuration graphique. Pour le lancer, utilisez : squirrel/config/conf.pl Bien-sur, vous pouvez aussi modifier la configuration à la main si vous le souhaitez. Il faut alors éditer le fichier squirrel/config/config.php. Voici les lignes importantes à modifier : $domain = 'csnu.org'; $imap_server_type = 'courier'; #Par défaut, les données de squirrel sont stockés dans un autre répertoire. Je préfère les avoir dans la même arborescence. $data_dir = '/srv/http/csnu.org/webmail-data/squirrel/data/'; $attachment_dir = '/srv/http/csnu.org/webmail-data/squirrel/attach/'; #Cette ligne est très importante. Si elle est à false, lorsque quelqu'un se log une première fois avec pfoo@csnu.org et une seconde fois avec PFOO@csnu.org, les préférence $force_username_lowercase = true; #Etant donné qu'on se connecte en local, nous n'avons pas besoin de nous authentifier et d'utiliser le port submission (587). $smtpServerAddress = 'localhost'; $smtpPort = 25; $smtp_auth_mech = 'none'; $imap_auth_mech = 'login'; #Par défaut, on se connecte en local. Le TLS n'est donc pas nécessaire. Vous pouvez l'activer en passant ces lignes à true. Notez que le mécanisme STARTTLS n'est supporté $use_imap_tls = false; $use_smtp_tls = false; Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 31 sur 37 05/07/2012 12:19
  • 32. Il faut créer les dossiers /srv/http/csnu.org/webmail-data/squirrel/data/ et /srv/http/csnu.org/webmail-data/squirrel/attach/ et modifier leurs droits car squirrel aura besoin de lire et d'écrire dans ces dossiers. mkdir -p /srv/http/csnu.org/webmail-data/squirrel/data/ mkdir /srv/http/csnu.org/webmail-data/squirrel/attach/ chown -R root:www-data /srv/http/csnu.org/webmail-data/ chmod 770 /srv/http/csnu.org/webmail-data/squirrel/attach/ chmod 770 /srv/http/csnu.org/webmail-data/squirrel/attach/ Vous pouvez maintenant tester squirrelmail. Vous pouvez vérifier que vous n'avez pas fait d'erreur de configuration en allant à l'adresse https://votre-webmail/squirrel /src/configtest.php Par défaut, seule la langue anglaise est disponible. Téléchargez le fichier all_locales sur http://squirrelmail.org/download.php $ tar zxvf all_locales-1.4.13-20071220.tar.gz $ ./install Please enter path to your squirrelmail installation: /srv/http/csnu.org/webmail.csnu.org/squirrel/ $ chgrp -R /srv/http/csnu.org/webmail.csnu.org/squirrel/ Téléchargez le plugin voulu dans le dossier plugins/ de votre installation de squirrelmail. Extrayez l'archive avec tar. Lisez le fichier INSTALL fournit avec le plugin, et configurez le si nécessaire (fichier config.php). Enfin, pour activer le plugin, utilisez le script de configuration config/conf.pl. Voici les plugins que j'utilise Squirrel Logger Addressbook Import-Export Show User and IP JavaScript Clock Tous les plugins peuvent être trouvés sur le site officiel de squirrelmail (http://squirrelmail.org/plugins.php) . Ajout de votre favicon personnalisé Si vous voulez utiliser un favicon pour squirrelmail, il faut modifier les sources. Modifiez le fichier functions/page_header.php et recherchez la ligne echo "n<title>$title</title>$xtran";. Ajoutez en dessous d'elle la ligne suivante : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 32 sur 37 05/07/2012 12:19
  • 33. echo "n<link rel="icon" type="image/png" href="favicon.png">n"; Modifiez le fichier src/webmail.php et recherchez la ligne <meta name="robots" content="noindex,nofollow">n .. Ajoutez en dessous d'elle la ligne suivante : "<link rel="icon" type="image/png" href="favicon.png" />n" . Modifiez le fichier src/signout.php et recherchez la ligne <title><?php echo $org_title . ' - ' . _("Signout"); ?></title>. Ajoutez en dessous d'elle la ligne suivante : <link rel="icon" type="image/png" href="favicon.png"> Téléchargez la dernière version de roundcube sur http://roundcube.net/downloads. Transférez la sur votre serveur (ou utilisez wget pour la télécharger directement sur votre serveur). Pour ma part, j'ai téléchargé l'archive dans le dossier root. Je vais donc la déplacer dans le dossier de ma vhost webmail, puis l'extraire: mv /root/roundcubemail-0.3.1.tar.gz /srv/http/csnu.org/webmail.csnu.org/ cd /srv/http/csnu.org/webmail.csnu.org/ tar xf roundcubemail-0.3.1.tar.gz mv roundcubemail-0.3.1/ roundcubemail chown -R root:www-data roundcubemail Les dossiers temp et logs doivent pouvoir être écrit par le serveur web: chmod g+w roundcube/temp/ chmod g+w roundcube/logs/ Nous allons maintenant créer la base de donnée mysql roundcubemail ainsi que l'utilisateur roundcube identifié par le mot-de-passe "password" : $ mysql -u root -p CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcubemail@localhost IDENTIFIED BY 'password'; quit Si vous utilisez open-basedir sur la vhost, ajoutez le chemin /srv/http/csnu.org/webmail.csnu.org/www/roundcubemail/program/lib/ à la liste des chemins autorisés par open-basedir. Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 33 sur 37 05/07/2012 12:19
  • 34. La suite de l'installation se passe par le web. Il suffit d'aller à l'adresse http:///url-de-roundcube/installer/ et de suivre les instructions. Si a la première étape, il vous manque l'extension fileinfo de php, installez la puis recommencer la première étape : aptitude install php-pear php5-dev libmagic-dev pecl install fileinfo echo "extension=fileinfo.so" > /etc/php5/conf.d/fileinfo.ini /etc/init.d/apache2 restart S'il vous indique un problème au niveau de date.timezone, éditez votre php.ini et vérifiez que la directive date.timezone est bien dé-commentée (pas de ;) et est bien définie. Pour un serveur en France : date.timezone = Europe/Paris Petite aide pour l'étape de configuration des ports : Dans Database setup : indiquez le mot-de-passe de la base de donnée dans Database password Dans IMAP Settings : indiquez tls://localhost dans default_host Dans SMTP Settings : indiquez localhost dans smtp_server et 587 dans smtp_port (il n'est pas nécessaire de préciser tls://, si tls est disponible, il l'utilisera automatiquement) Dans SMTP Settings : cochez la case Use the current IMAP username and password for SMTP authentication pour smtp_user/smtp_ Dans Display settings & user prefs : indiquez fr_FR dans locale_string Quand vous aurez validé l'étape 2, l'interface vous demandera de copier des lignes dans roundcubemail/config/main.inc.php et roundcubemail/config/db.inc.php. Après avoir copié les lignes avec votre éditeur de texte, modifiez les droits de ces fichiers : chgrp www-data roundcube/config/* A l'étape 3, roundcube vous propose de tester la configuration smtp et imap. Faites le. Après avoir testé la configuration, n'oubliez pas de supprimer roundcube/installer: rm -rf roundcube/installer Pour ma part, j'ai eu un bug avec la configuration imap. Malgré avoir défini tls://localhost et le port 143, roundcube essayait de se connecter en tls sur le port 993. La solution a été de préciser le port 143 dans la ligne de l'hostname comme ceci (fichier roundcubemail/config/main.inc.php) : $rcmail_config['default_host'] = 'tls://localhost:143'; Si vous avez configuré le port smtp sur 587 (submission), le test de configuration de marchera pas, mais cela fonctionne quand même. Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 34 sur 37 05/07/2012 12:19
  • 35. Un beau jour, je me suis posé la question de comment consulter des mails par le wap de mon téléphone portable. Eh bien, c'est possible avec wapreader. Je ne l'utilise actuellement pas mais voici ce que j'ai du faire : installer php5-imap (aptitude install php5-imap) Suivre les instructions du fichier d'installation J'ai du modifier le fichier .php de la manière suivante : if($_REQUEST["mode"]=="html") { //@header("Content-type: text/xml; charset=utf-8"); echo "<?xml version="1.0" encoding="utf-8"?>n"; echo "<?xml-stylesheet type="text/xsl" href="wapreader.xsl"?>"; } Si vous avez un second serveur il devient très intéressant d'installer un serveur mx secondaire pour votre domaine. En effet, si pour une raison ou une autre, votre serveur smtp fraichement configuré venait à être inaccessible pendant quelques heures, toutes les personnes essayant de vous envoyer un mail durant ce labs de temps verraient leurs mails revenir en erreur. Un mx secondaire règle ce problème : si le serveur principal ne répond pas, les mails seront adressés au mx secondaire qui se chargera de les transférer au mx principal dès que possible. Il faut commencer par ajouter le nouveau serveur de mail dans la configuration de la zone dns. Dans mon cas : core.csnu.org. IN A 213.186.47.110 core.csnu.org. IN AAAA 2001:41d0:1:d6e::110 core.csnu.org. IN MX 1 core.csnu.org. core.csnu.org. IN MX 10 onyx.csnu.org. csnu.org. IN MX 1 core.csnu.org. csnu.org. IN MX 10 onyx.csnu.org. onyx.csnu.org. IN A 217.70.189.92 Le mx secondaire est onyx.csnu.org. Le chiffre 10 avant le nom du serveur est ce qu'on appel le priorité. Les serveurs smtp voulant vous envoyer des mails essaieront en priorité le mx ayant la priorité la plus basse. Ensuite, installez postfix si votre second serveur : aptitude install postfix La configuration de /etc/postfix/main.cf est beaucoup plus simple : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 35 sur 37 05/07/2012 12:19
  • 36. smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no disable_vrfy_command = yes smtpd_helo_required = yes mydomain = onyx.csnu.org append_dot_mydomain = yes myhostname = onyx.csnu.org myorigin = /etc/mailname mydestination = onyx.csnu.org, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8 mailbox_size_limit = 0 recipient_delimiter = + message_size_limit = 10240000 inet_interfaces = 127.0.0.1, 217.70.189.92 inet_protocols = ipv4 alias_maps = proxy:hash:/etc/aliases relay_domains = core.csnu.org, csnu.org smtpd_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, La directive relay_domains défini les domaines pour lesquels postfix est un mx secondaire. Les mails reçus pour ces domaines seront stockés et redirigés dès que possible vers le mx de priorité la plus basse. Si vous utilisez un champ spf du même type que celui dont j'ai donné l'exemple au début de ce howto vous n'avez rien à modifier car tous les serveurs mx des domaines sont considérés comme valide. Il peut être intéressant d'ajouter une directive relay_recipient_maps à la configuration afin de bloquer directement les mails destiné à un utilisateur qui n'existe pas sur le serveur principal. Il faudra cependant veiller à bien garder synchronisé les listes d'utilisateur entre le serveur principal et le serveur secondaire. Assurez vous que le fichier de configuration de postfix est accessible en lecture : chmod o+r /etc/postfix/main.cf N'oubliez pas de créer la base de donnée des alias avant de lancer postfix : Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 36 sur 37 05/07/2012 12:19
  • 37. postalias /etc/aliases Récupérée de « http://wiki.csnu.org/index.php?title=Mise_en_place_d%27un_serveur_de_mail_complet » Catégories : Serveur | Debian Dernière modification de cette page le 17 août 2011 à 14:11. Cette page a été consultée 1 250 fois. Contenu disponible sous GNU Free Documentation License 1.3. Mise en place d'un serveur de mail complet - Linux Server Wiki http://wiki.csnu.org/index.php?title=Mise_en_place_d'un_serveur_de_mail_complet 37 sur 37 05/07/2012 12:19