« Mise en place d'un serveur de mail complet » : différence entre les versions

Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 472 : Ligne 472 :


Si vous utilisez un noyau avec le patch <code>grsecurity</code>, j'ai remarqué un comportement étrange. En effet, lorsque j'essayais d'envoyer un mail avec <code>sendmail</code> avec un autre utilisateur que root (www-data par exemple) il me renvoyait une erreur. C'est un problème de droit : <code>/proc/net</code> n'était pas lisible et exécutable par tous le monde (o+rx) ce qui empêchait <code>sendmail</code> d'envoyer les mails.
Si vous utilisez un noyau avec le patch <code>grsecurity</code>, j'ai remarqué un comportement étrange. En effet, lorsque j'essayais d'envoyer un mail avec <code>sendmail</code> avec un autre utilisateur que root (www-data par exemple) il me renvoyait une erreur. C'est un problème de droit : <code>/proc/net</code> n'était pas lisible et exécutable par tous le monde (o+rx) ce qui empêchait <code>sendmail</code> d'envoyer les mails.
=Courier=
Nous allons maintenant installer courier pour ses fonctionnalités de serveur pop et imap.
Installer les paquets nécessaires :
<pre>aptitude install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl</pre>
Éditez le fichier <code>/etc/courier/authdaemonrc</code> :
<pre>authmodulelist="authmysql"</pre>
Éditez le fichier <code>/etc/courier/authmysqlrc</code> :
<pre>
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'
</pre>
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 <code>/etc/courier/pop3d</code> et modifiez la ligne <code>PORT=110</code> par :
<pre>PORT=127.0.0.1.110,::1.110,213.186.47.110.110,2001:41d0:1:d6e::110.110</pre>
Pour courier-pop-ssl éditez le fichier <code>/etc/courier/pop3d-ssl</code> et modifiez la ligne <code>SSLPORT=995</code> par :
<pre>SSLPORT=127.0.0.1.995,::1.995,213.186.47.110.995,2001:41d0:1:d6e::110.995</pre>
Pour courier-imap éditez le fichier <code>/etc/courier/imapd</code> et modifiez la ligne <code>PORT=143</code> par :
<pre>PORT=127.0.0.1.143,::1.143,213.186.47.110.143,2001:41d0:1:d6e::110.143</pre>
Pour courier-imap-ssl éditez le fichier <code>/etc/courier/imapd-ssl</code> et modifiez la ligne <code>SSLPORT=993</code> par :
<pre>SSLPORT=127.0.0.1.993,::1.993,213.186.47.110.993,2001:41d0:1:d6e::110.993</pre>
==Ajout du support SSL/TLS==
===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 <code>/etc/courier/pop3d.cnf</code> et <code>/etc/courier/imapd.cnf</code> puis lancer les commandes suivantes :
<pre>
mkpop3dcert
mkimapdcert
</pre>
===Créer son propre certificat signé par son autorité de certification.===
Éditez votre fichier <code>/etc/ssl/openssl.cnf</code> et ajoutez les lignes suivantes :
<pre>
[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
</pre>
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 :
<pre>
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/
rm -rf pop.*
</pre>
Pour créer le certificat du serveur imap:
<pre>
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.*
</pre>
Et comme d'habitude, on modifie les droits :
<pre>chmod 600 /etc/courier/*.pem</pre>
4 203

modifications

Menu de navigation