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

Aller à la navigation Aller à la recherche
 
(7 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Category:serveur]]
[[Category:serveur]]
[[Category:debian]]
[[Category:debian]]
'''<span style="color: red;">Tuto plus vraiment à jour</span>'''
[[Category:toupdate]]
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 :
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 serveur smtp : postfix
Ligne 14 : Ligne 18 :
En dernier lieu, nous verront rapidement comment configurer un serveur mx secondaire pour vos domaines.
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
Nous allons mettre en place un service email pour deux domaines : srv.domain.tld et domain.tld
core.csnu.org représente le serveur en lui-même, et permet de délivrer les mails aux utilisateurs locaux du serveur.
srv.domain.tld 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.
domain.tld 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.
Au niveau dns, srv.domain.tld 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.
domain.tld est un alias pour srv.domain.tld.


Les changements de permissions effectués dans ce howto supposent que vous êtes en umask 0027
Les changements de permissions effectués dans ce howto supposent que vous êtes en umask 0027
Ligne 25 : Ligne 29 :
=Champs dns MX=
=Champs dns MX=


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 (<code>/srv/bind/csnu.org.hosts</code> dans mon cas) et ajoutez/modifiez les lignes suivantes:
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 (<code>/srv/bind/domain.tld.hosts</code> dans mon cas) et ajoutez/modifiez les lignes suivantes:
<pre>
<pre>
core.csnu.org.  IN      MX      1 core.csnu.org.
srv.domain.tld.  IN      MX      1 srv.domain.tld.
csnu.org.      IN      MX      1 core.csnu.org.
domain.tld.      IN      MX      1 srv.domain.tld.
core.csnu.org.  IN      A      213.186.47.110
srv.domain.tld.  IN      A      213.186.47.110
core.csnu.org.  IN      AAAA    2001:41d0:1:d6e::110
srv.domain.tld.  IN      AAAA    2001:41d0:1:d6e::110
list.csnu.org. IN CNAME core.csnu.org.
list.domain.tld. IN CNAME srv.domain.tld.
</pre>
</pre>
Si vous n'avez pas d'adresse ipv6 configuré sur votre serveur, vous n'aurez pas besoin du champ <code>AAAA</code>.
Si vous n'avez pas d'adresse ipv6 configuré sur votre serveur, vous n'aurez pas besoin du champ <code>AAAA</code>.
Ligne 37 : Ligne 41 :
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 :
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 :
<pre>
<pre>
core.csnu.org.  IN      TXT    "v=spf1 mx -all"
srv.domain.tld.  IN      TXT    "v=spf1 mx -all"
csnu.org.      IN      TXT    "v=spf1 mx ~all"
domain.tld.      IN      TXT    "v=spf1 mx ~all"
</pre>
</pre>


Ligne 65 : Ligne 69 :
smtpd_helo_required = yes
smtpd_helo_required = yes
#strict_rfc821_envelopes = yes
#strict_rfc821_envelopes = yes
mydomain = core.csnu.org
mydomain = srv.domain.tld
# ajoute .$mydomain si quelqu'un envoi un mail sans préciser le domaine (utile en local quand vous utilisez la fonction mail)
# 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
append_dot_mydomain = yes
# Uncomment the next line to generate "delayed mail" warnings
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
#delay_warning_time = 4h
myhostname = core.csnu.org
myhostname = srv.domain.tld
alias_maps = proxy:hash:/etc/aliases
alias_maps = proxy:hash:/etc/aliases
alias_database = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
myorigin = /etc/mailname
mydestination = core.csnu.org, localhost.localdomain, localhost
mydestination = srv.domain.tld, localhost.localdomain, localhost
relayhost =
relayhost =
mynetworks = 127.0.0.0/8, [::1]/128, 213.186.47.110, [2001:41d0:1:d6e::110]
mynetworks = 127.0.0.0/8, [::1]/128, 213.186.47.110, [2001:41d0:1:d6e::110]
Ligne 88 : Ligne 92 :
</pre>
</pre>


Nous venons de définir la directive <code>myorigin</code> de postfix comme étant le fichier <code>/etc/mailname</code>. 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 :
Nous venons de définir la directive <code>myorigin</code> de postfix comme étant le fichier <code>/etc/mailname</code>. 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, srv.domain.tld. Tapez donc :
<pre>
<pre>
echo "core.csnu.org" > /etc/mailname
echo "srv.domain.tld" > /etc/mailname
chmod o+r /etc/mailname
chmod o+r /etc/mailname
</pre>
</pre>


Une autre directive importante que nous avons défini est <code>mydestination</code>. 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.
Une autre directive importante que nous avons défini est <code>mydestination</code>. 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.
Techniquement, postfix est maintenant déjà près à recevoir des mails destinés à @srv.domain.tld. Il reste donc à configurer le domaine virtuel et à ne pas relayer les spams.


Pensez à créer la base de donnée des alias :
Pensez à créer la base de donnée des alias :
Ligne 361 : Ligne 365 :
issuerAltName                  = issuer:copy
issuerAltName                  = issuer:copy
basicConstraints                = critical,CA:FALSE
basicConstraints                = critical,CA:FALSE
keyUsage                        = digitalSignature, nonRepudiation, keyEncipherment
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment
nsCertType                      = server
nsCertType                      = server
extendedKeyUsage                = serverAuth
extendedKeyUsage                = serverAuth
Ligne 427 : Ligne 431 :
Et le fichier <code>/etc/postfix/tls_policy</code> :
Et le fichier <code>/etc/postfix/tls_policy</code> :
<pre>
<pre>
csnu.org     verify
domain.tld     verify
</pre>
</pre>


Ligne 440 : Ligne 444 :
==Ajout d'un utilisateur virtuel et lancement des services.==
==Ajout d'un utilisateur virtuel et lancement des services.==


Pour ajouter un utilisateur test@csnu.org ainsi qu'un alias alias@csnu.org renvoyant vers notre utilisateur:
Pour ajouter un utilisateur test@domain.tld ainsi qu'un alias alias@domain.tld renvoyant vers notre utilisateur:
<pre>
<pre>
# mysql -u root -p
# mysql -u root -p
Enter password:
Enter password:
use postfix;
use postfix;
INSERT INTO domain (domain,description) VALUES ('csnu.org','Test Domain');
INSERT INTO domain (domain,description) VALUES ('domain.tld','Test Domain');
INSERT INTO alias (address,goto) VALUES ('alias@csnu.org', 'test@csnu.org');
INSERT INTO alias (address,goto) VALUES ('alias@domain.tld', 'test@domain.tld');
INSERT INTO mailbox (username,password,name,maildir)  VALUES ('test@csnu.org',ENCRYPT('userpassword'),'Mailbox User','test@csnu.org/');
INSERT INTO mailbox (username,password,name,maildir)  VALUES ('test@domain.tld',ENCRYPT('userpassword'),'Mailbox User','test@domain.tld/');
</pre>
</pre>


Ligne 460 : Ligne 464 :


Pour tester si l'authentification fonctionne bien :
Pour tester si l'authentification fonctionne bien :
<pre>testsaslauthd -u test@csnu.org -p userpassword -s smtp -f /var/spool/postfix/var/run/saslauthd/mux</pre>
<pre>testsaslauthd -u test@domain.tld -p userpassword -s smtp -f /var/spool/postfix/var/run/saslauthd/mux</pre>


Vous pouvez vérifier que postfix ne détecte aucun problème avec :
Vous pouvez vérifier que postfix ne détecte aucun problème avec :
Ligne 565 : Ligne 569 :
issuerAltName                  = issuer:copy
issuerAltName                  = issuer:copy
basicConstraints                = critical,CA:FALSE
basicConstraints                = critical,CA:FALSE
keyUsage                        = digitalSignature, nonRepudiation, keyEncipherment
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment
nsCertType                      = server
nsCertType                      = server
extendedKeyUsage                = serverAuth
extendedKeyUsage                = serverAuth
Ligne 575 : Ligne 579 :
issuerAltName                  = issuer:copy
issuerAltName                  = issuer:copy
basicConstraints                = critical,CA:FALSE
basicConstraints                = critical,CA:FALSE
keyUsage                        = digitalSignature, nonRepudiation, keyEncipherment
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment
nsCertType                      = server
nsCertType                      = server
extendedKeyUsage                = serverAuth
extendedKeyUsage                = serverAuth
Ligne 755 : Ligne 759 :
</nowiki></pre>
</nowiki></pre>


Par exemple, voici comment je filtre les spams dans mon fichier <code>/srv/vmail/pfoo\@csnu.org/mailfilter</code> :
Par exemple, voici comment je filtre les spams dans mon fichier <code>/srv/vmail/pfoo\@domain.tld/mailfilter</code> :
<pre><nowiki>
<pre><nowiki>
if (/^X-Spam-Flag:.*YES/)
if (/^X-Spam-Flag:.*YES/)
Ligne 770 : Ligne 774 :
Si la mailbox n'existe pas encore tapez :
Si la mailbox n'existe pas encore tapez :
<pre>
<pre>
maildirmake /srv/vmail/test@csnu.org
maildirmake /srv/vmail/test@domain.tld
chown -R vmail:vmail /srv/vmail/test@csnu.org
chown -R vmail:vmail /srv/vmail/test@domain.tld
</pre>
</pre>


Pour activer le quota pour la mailbox il faut utiliser l'option <code>-q</code> de <code>maildirmake</code>. Pour créer une boite de <code>512 000 000 bytes</code> tapez :
Pour activer le quota pour la mailbox il faut utiliser l'option <code>-q</code> de <code>maildirmake</code>. Pour créer une boite de <code>512 000 000 bytes</code> tapez :
<pre>
<pre>
maildirmake -q 512000000S /srv/vmail/test@csnu.org
maildirmake -q 512000000S /srv/vmail/test@domain.tld
chown -R vmail:vmail /srv/vmail/test@csnu.org
chown -R vmail:vmail /srv/vmail/test@domain.tld
</pre>
</pre>


Pour créer une boite pouvant contenir un maximum de 1000 fichiers tapez :
Pour créer une boite pouvant contenir un maximum de 1000 fichiers tapez :
<pre>
<pre>
maildirmake -q 1000C /srv/vmail/test@csnu.org
maildirmake -q 1000C /srv/vmail/test@domain.tld
chown -R vmail:vmail /srv/vmail/test@csnu.org
chown -R vmail:vmail /srv/vmail/test@domain.tld
</pre>
</pre>


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 <code>/usr/local/courier/etc/quotawarnmsg</code> et assurez vous qu'il soit lisible par vmail :
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 <code>/usr/local/courier/etc/quotawarnmsg</code> et assurez vous qu'il soit lisible par vmail :
<pre>
<pre>
From: Postmaster csnu.org <postmaster@csnu.org>
From: Postmaster domain.tld <postmaster@domain.tld>
Reply-To: postmaster@csnu.org
Reply-To: postmaster@domain.tld
To: Valued Customer:;
To: Valued Customer:;
Subject: Mail quota warning
Subject: Mail quota warning
Ligne 818 : Ligne 822 :
<code>authtest</code> permet de vérifier si l'authentification de courier fonctionne bien :
<code>authtest</code> permet de vérifier si l'authentification de courier fonctionne bien :
<pre>
<pre>
$ authtest test@csnu.org
$ authtest test@domain.tld
Authentication succeeded.
Authentication succeeded.


     Authenticated: test@csnu.org (uid 5000, gid 5000)
     Authenticated: test@domain.tld (uid 5000, gid 5000)
     Home Directory: /srv/vmail
     Home Directory: /srv/vmail
           Maildir: test@csnu.org/
           Maildir: test@domain.tld/
             Quota: (none)
             Quota: (none)
Encrypted Password: ZHJghD45/gfFDH42
Encrypted Password: ZHJghD45/gfFDH42
Ligne 832 : Ligne 836 :
Ensuite testez maildrop :
Ensuite testez maildrop :
<pre>
<pre>
# /usr/local/courier/bin/maildrop -V 7 -d test@csnu.org
# /usr/local/courier/bin/maildrop -V 7 -d test@domain.tld
maildrop: authlib: groupid=5000
maildrop: authlib: groupid=5000
maildrop: authlib: userid=5000
maildrop: authlib: userid=5000
maildrop: authlib: logname=test@csnu.org, home=/srv/vmail, mail=test@csnu.org/
maildrop: authlib: logname=test@domain.tld, home=/srv/vmail, mail=test@domain.tld/
maildrop: Changing to /srv/vmail
maildrop: Changing to /srv/vmail
</pre>
</pre>
Ligne 852 : Ligne 856 :
Paramétrage de amavisd-new (2.4.2-6.1) ...
Paramétrage de amavisd-new (2.4.2-6.1) ...
Creating/updating amavis user account...
Creating/updating amavis user account...
Starting amavisd:  The value of variable $myhostname is "CSNU", but should have been
Starting amavisd:  The value of variable $myhostname is "DOMAIN", but should have been
   a fully qualified domain name; perhaps uname(3) did not provide such.
   a fully qualified domain name; perhaps uname(3) did not provide such.
   You must explicitly assign a FQDN of this host to variable $myhostname
   You must explicitly assign a FQDN of this host to variable $myhostname
Ligne 866 : Ligne 870 :
Paramétrage de amavisd-new (2.4.2-6.1) ...
Paramétrage de amavisd-new (2.4.2-6.1) ...
Creating/updating amavis user account...
Creating/updating amavis user account...
addgroup: Starting amavisd:  The value of variable $myhostname is "CSNU", but should have been
addgroup: Starting amavisd:  The value of variable $myhostname is "DOMAIN", but should have been
  a fully qualified domain name; perhaps uname(3) did not provide such.
  a fully qualified domain name; perhaps uname(3) did not provide such.
  You must explicitly assign a FQDN of this host to variable $myhostname
  You must explicitly assign a FQDN of this host to variable $myhostname
Ligne 879 : Ligne 883 :


Cette erreur survient parce que votre fichier <code>/etc/hostname</code> ne contient pas un domaine FQDN (un domaine écrit correctement).
Cette erreur survient parce que votre fichier <code>/etc/hostname</code> 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 <code>/etc/amavis/conf.d/50-user</code> :
Deux possibilités s'offrent à vous : modifier le fichier hostname pour que le domaine soit FQDN (exemple : domain.tld), ou alors, ajoutez la ligne suivante dans <code>/etc/amavis/conf.d/50-user</code> :
<pre>$myhostname = "csnu.org";</pre>
<pre>$myhostname = "domain.tld";</pre>


Il va maintenant falloir modifier <code>/etc/postfix/main.cf</code> pour que postfix fasse transiter ses mails par amavis. Ajoutez y les lignes suivantes :
Il va maintenant falloir modifier <code>/etc/postfix/main.cf</code> pour que postfix fasse transiter ses mails par amavis. Ajoutez y les lignes suivantes :
Ligne 1 059 : Ligne 1 063 :
Notez qu'il n'est pas nécessaire de lancer spamassassin dans le cas présent.
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 <code>/etc/amavis/conf.d/05-domain_id</code>. Par défaut, ce fichier charge en tant que <code>$mydomain</code> le fichier <code>/etc/mailname</code>. Ensuite, il défini <code>@local_domains_acl</code> comme étant la variable <code>$mydomain</code>. Seuls les domaines contenu dans <code>@local_domains_acl</code> seront scannés. Pour mes tests, j'ai simplement commenté la ligne <code>@local_domains_acl</code> et j'ai ajouté <code>@local_domains_acl = ( ".csnu.org" );</code> à la place.
Si il semble que amavis ne tag pas les spams, allez faire un tour dans le fichier <code>/etc/amavis/conf.d/05-domain_id</code>. Par défaut, ce fichier charge en tant que <code>$mydomain</code> le fichier <code>/etc/mailname</code>. Ensuite, il défini <code>@local_domains_acl</code> comme étant la variable <code>$mydomain</code>. Seuls les domaines contenu dans <code>@local_domains_acl</code> seront scannés. Pour mes tests, j'ai simplement commenté la ligne <code>@local_domains_acl</code> et j'ai ajouté <code>@local_domains_acl = ( ".domain.tld" );</code> à la place.
Pour simplement scanner tous les domaines, utilisez <code>@local_domains_acl = ( "." );</code>
Pour simplement scanner tous les domaines, utilisez <code>@local_domains_acl = ( "." );</code>


Ligne 1 135 : Ligne 1 139 :
<pre>adduser postfix list</pre>
<pre>adduser postfix list</pre>


Ensuite, modifiez le fichier <code>/etc/mailman/mm_cfg.py</code> comme suit :
Ensuite, modifiez le fichier <code>/etc/mailman/mm_cfg.py</code> comme suit. Si certaines valeurs manquent, ajoutez les tout simplement !
<pre>
<pre>
MTA='Postfix'
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 !)
#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_URL_PATTERN = 'https://%s/cgi-bin/mailman/'
DEFAULT_EMAIL_HOST = 'list.csnu.org'
DEFAULT_EMAIL_HOST = 'list.domain.tld'
DEFAULT_URL_HOST  = 'list.csnu.org'
DEFAULT_URL_HOST  = 'list.domain.tld'


# Are archives public or private by default?
# Are archives public or private by default?
Ligne 1 175 : Ligne 1 179 :
<pre>/var/lib/mailman/bin/newlist mailman</pre>
<pre>/var/lib/mailman/bin/newlist mailman</pre>


Maintenant, générez les alias qui serviront à mailman et permettez au groupe list d'y écrire :
Vérifiez que les alias de la list sont bien ajoutés dans /var/lib/mailman/data/aliases. Si non, vous devrez peut-être lancer /var/lib/mailman/bin/genaliases a la main. Vérifiez aussi que le group "list" a accès en lecture et écriture sur ce fichier.
<pre>
/var/lib/mailman/bin/genaliases
chmod g+w /var/lib/mailman/data/aliases*
</pre>
 
Ceci a pour effet de créer les fichiers <code>/var/lib/mailman/data/aliases</code> et <code>/var/lib/mailman/data/aliases.db</code> 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 <code>alias_maps</code> du fichier <code>/etc/postfix/main.cf</code> :
Pour que les alias soient reconnus par postfix, il faut modifier la ligne <code>alias_maps</code> du fichier <code>/etc/postfix/main.cf</code> :
<pre>alias_maps = proxy:hash:/etc/aliases,proxy:hash:/var/lib/mailman/data/aliases</pre>
<pre>alias_maps = proxy:hash:/etc/aliases,proxy:hash:/var/lib/mailman/data/aliases</pre>


Ajoutez l'hostname de la mailing list (list.csnu.org dans mon cas) dans le mydestination de <code>/etc/postfix/main.cf</code> :
Ajoutez l'hostname de la mailing list (list.domain.tld dans mon cas) dans le mydestination de <code>/etc/postfix/main.cf</code> :
<pre>mydestination = core.csnu.org, list.csnu.org, localhost.localdomain, localhost</pre>
<pre>mydestination = srv.domain.tld, list.domain.tld, localhost.localdomain, localhost</pre>


Pour activer l'interface web, ajoutez les lignes suivantes à votre vhost apache :
Pour activer l'interface web, ajoutez les lignes suivantes à votre vhost apache :
Ligne 1 196 : Ligne 1 193 :
<pre>/usr/lib/mailman/bin/mmsitepass</pre>
<pre>/usr/lib/mailman/bin/mmsitepass</pre>


Nous allons maintenant ajouter notre domaine virtuel <code>csnu.org</code> dans la configuration de mailman. Ajoutez les lignes suivantes dans <code>/etc/mailman/mm_cfg.py</code> :
Nous allons maintenant ajouter notre domaine virtuel <code>domain.tld</code> dans la configuration de mailman. Ajoutez les lignes suivantes dans <code>/etc/mailman/mm_cfg.py</code> :
<pre>
<pre>
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['csnu.org']
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['domain.tld']
add_virtualhost('www.csnu.org', 'csnu.org')
add_virtualhost('www.domain.tld', 'domain.tld')
</pre>
</pre>


Et comme précédemment, il faut préciser à postfix où trouver les alias pour les listes <code>@csnu.org</code>. Modifiez le fichier <code>/etc/postfix/main.cf</code> :
Et comme précédemment, il faut préciser à postfix où trouver les alias pour les listes <code>@domain.tld</code>. Modifiez le fichier <code>/etc/postfix/main.cf</code> :
<pre>virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,proxy:hash:/var/lib/mailman/data/virtual-mailman</pre>
<pre>virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,proxy:hash:/var/lib/mailman/data/virtual-mailman</pre>


Ligne 1 212 : Ligne 1 209 :
</pre>
</pre>


Pour ajouter une liste, il ne reste plus qu'a utiliser le binaire <code>/usr/lib/mailman/bin/newlist</code>. Par exemple :
On a donc deux types de listes :
<pre>/usr/lib/mailman/bin/newlist --urlhost='list.csnu.org' --emailhost='csnu.org' test@csnu.org</pre>
* celles gérés par list.domain.tld
* celles gérés par domain.tld


Notez qu'il faut laisser le site comme étant <code>list.csnu.org</code> sinon vous ne pourrez pas administrer la liste.
Pour ajouter une liste, il ne reste plus qu'a utiliser le binaire <code>/usr/lib/mailman/bin/newlist</code>. Par exemple pour ajouter une liste a domain.tld :
<pre>/usr/lib/mailman/bin/newlist --urlhost='list.domain.tld' --emailhost='domain.tld' test@domain.tld</pre>


N'oubliez pas de générer la liste des alias :
Notez qu'il faut laisser le site comme étant <code>list.domain.tld</code> quelque soit le emailhost de la liste, sinon vous ne pourrez pas administrer la liste.
<pre>/var/lib/mailman/bin/genaliases</pre>


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 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.
Ligne 1 237 : Ligne 1 235 :
     AuthUserFile /chemin/vers/votre/.htpasswd
     AuthUserFile /chemin/vers/votre/.htpasswd
     AuthGroupFile /chemin/vers/votre/.htgroup
     AuthGroupFile /chemin/vers/votre/.htgroup
    <Limit GET POST>
       require valid-user
       require valid-user
    </Limit>
</Directory>
</Directory>
</nowiki></pre>
</nowiki></pre>
Ligne 1 245 : Ligne 1 241 :
=Des scripts de gestion de la base de donnée MySQL=
=Des scripts de gestion de la base de donnée MySQL=


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 [http://wiki.csnu.org/upload/mail_scripts.tar.bz2 voici].
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 [http://wiki.domain.tld/upload/mail_scripts.tar.bz2 voici].


=Installation de webmails=
=Installation de webmails=
Ligne 1 255 : Ligne 1 251 :
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:
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:
<pre>
<pre>
mv /root/squirrelmail-1.4.13.tar.gz /srv/http/csnu.org/webmail.csnu.org/
mv /root/squirrelmail-1.4.13.tar.gz /srv/http/domain.tld/webmail.domain.tld/
cd /srv/http/csnu.org/webmail.csnu.org/
cd /srv/http/domain.tld/webmail.domain.tld/
tar zxvf squirrelmail-1.4.13.tar.gz
tar zxvf squirrelmail-1.4.13.tar.gz
mv squirrelmail-1.4.13 squirrel
mv squirrelmail-1.4.13 squirrel
Ligne 1 268 : Ligne 1 264 :
Bien-sur, vous pouvez aussi modifier la configuration à la main si vous le souhaitez. Il faut alors éditer le fichier <code>squirrel/config/config.php</code>. Voici les lignes importantes à modifier :
Bien-sur, vous pouvez aussi modifier la configuration à la main si vous le souhaitez. Il faut alors éditer le fichier <code>squirrel/config/config.php</code>. Voici les lignes importantes à modifier :
<pre>
<pre>
$domain                = 'csnu.org';
$domain                = 'domain.tld';
$imap_server_type      = 'courier';
$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.
#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/';
$data_dir                = '/srv/http/domain.tld/webmail-data/squirrel/data/';
$attachment_dir          = '/srv/http/csnu.org/webmail-data/squirrel/attach/';
$attachment_dir          = '/srv/http/domain.tld/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érences ne seront pas les même
#Cette ligne est très importante. Si elle est à false, lorsque quelqu'un se log une première fois avec pfoo@domain.tld et une seconde fois avec PFOO@domain.tld, les préférences ne seront pas les même
$force_username_lowercase = true;
$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).
#Etant donné qu'on se connecte en local, nous n'avons pas besoin de nous authentifier et d'utiliser le port submission (587).
Ligne 1 285 : Ligne 1 281 :
</pre>
</pre>


Il faut créer les dossiers <code>/srv/http/csnu.org/webmail-data/squirrel/data/</code> et <code>/srv/http/csnu.org/webmail-data/squirrel/attach/</code> et modifier leurs droits car squirrel aura besoin de lire et d'écrire dans ces dossiers.
Il faut créer les dossiers <code>/srv/http/domain.tld/webmail-data/squirrel/data/</code> et <code>/srv/http/domain.tld/webmail-data/squirrel/attach/</code> et modifier leurs droits car squirrel aura besoin de lire et d'écrire dans ces dossiers.
<pre>
<pre>
mkdir -p /srv/http/csnu.org/webmail-data/squirrel/data/
mkdir -p /srv/http/domain.tld/webmail-data/squirrel/data/
mkdir /srv/http/csnu.org/webmail-data/squirrel/attach/
mkdir /srv/http/domain.tld/webmail-data/squirrel/attach/
chown -R root:www-data /srv/http/csnu.org/webmail-data/
chown -R root:www-data /srv/http/domain.tld/webmail-data/
chmod 770 /srv/http/csnu.org/webmail-data/squirrel/attach/
chmod 770 /srv/http/domain.tld/webmail-data/squirrel/attach/
chmod 770 /srv/http/csnu.org/webmail-data/squirrel/attach/
chmod 770 /srv/http/domain.tld/webmail-data/squirrel/attach/
</pre>
</pre>


Ligne 1 302 : Ligne 1 298 :
$ tar zxvf all_locales-1.4.13-20071220.tar.gz
$ tar zxvf all_locales-1.4.13-20071220.tar.gz
$ ./install
$ ./install
Please enter path to your squirrelmail installation: /srv/http/csnu.org/webmail.csnu.org/squirrel/
Please enter path to your squirrelmail installation: /srv/http/domain.tld/webmail.domain.tld/squirrel/
$ chgrp -R /srv/http/csnu.org/webmail.csnu.org/squirrel/
$ chgrp -R /srv/http/domain.tld/webmail.domain.tld/squirrel/
</pre>
</pre>


Ligne 1 340 : Ligne 1 336 :
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:
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:
<pre>
<pre>
mv /root/roundcubemail-0.3.1.tar.gz /srv/http/csnu.org/webmail.csnu.org/
mv /root/roundcubemail-0.3.1.tar.gz /srv/http/domain.tld/webmail.domain.tld/
cd /srv/http/csnu.org/webmail.csnu.org/
cd /srv/http/domain.tld/webmail.domain.tld/
tar xf roundcubemail-0.3.1.tar.gz
tar xf roundcubemail-0.3.1.tar.gz
mv roundcubemail-0.3.1/ roundcubemail
mv roundcubemail-0.3.1/ roundcubemail
Ligne 1 362 : Ligne 1 358 :
</pre>
</pre>


Si vous utilisez open-basedir sur la vhost, ajoutez le chemin <code>/srv/http/csnu.org/webmail.csnu.org/www/roundcubemail/program/lib/</code> à la liste des chemins autorisés par open-basedir.
Si vous utilisez open-basedir sur la vhost, ajoutez le chemin <code>/srv/http/domain.tld/webmail.domain.tld/www/roundcubemail/program/lib/</code> à la liste des chemins autorisés par open-basedir.


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.
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.
Ligne 1 417 : Ligne 1 413 :
Il faut commencer par ajouter le nouveau serveur de mail dans la configuration de la zone dns. Dans mon cas :
Il faut commencer par ajouter le nouveau serveur de mail dans la configuration de la zone dns. Dans mon cas :
<pre>
<pre>
core.csnu.org.  IN      A      213.186.47.110
srv.domain.tld.  IN      A      213.186.47.110
core.csnu.org.  IN      AAAA    2001:41d0:1:d6e::110
srv.domain.tld.  IN      AAAA    2001:41d0:1:d6e::110
core.csnu.org.  IN      MX      1 core.csnu.org.
srv.domain.tld.  IN      MX      1 srv.domain.tld.
core.csnu.org.  IN      MX      10 onyx.csnu.org.
srv.domain.tld.  IN      MX      10 mx2.domain.tld.
csnu.org.      IN      MX      1 core.csnu.org.
domain.tld.      IN      MX      1 srv.domain.tld.
csnu.org.      IN      MX      10 onyx.csnu.org.
domain.tld.      IN      MX      10 mx2.domain.tld.
onyx.csnu.org.  IN      A      217.70.189.92
mx2.domain.tld.  IN      A      217.70.189.92
</pre>
</pre>


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.
Le mx secondaire est mx2.domain.tld. 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 :
Ensuite, installez postfix si votre second serveur :
Ligne 1 438 : Ligne 1 434 :
smtpd_helo_required = yes
smtpd_helo_required = yes


mydomain = onyx.csnu.org
mydomain = mx2.domain.tld
append_dot_mydomain = yes
append_dot_mydomain = yes
myhostname = onyx.csnu.org
myhostname = mx2.domain.tld
myorigin = /etc/mailname
myorigin = /etc/mailname
mydestination = onyx.csnu.org, localhost.localdomain, localhost
mydestination = mx2.domain.tld, localhost.localdomain, localhost
relayhost =
relayhost =
mynetworks = 127.0.0.0/8
mynetworks = 127.0.0.0/8
Ligne 1 453 : Ligne 1 449 :
alias_maps = proxy:hash:/etc/aliases
alias_maps = proxy:hash:/etc/aliases


relay_domains = core.csnu.org, csnu.org
relay_domains = srv.domain.tld, domain.tld


smtpd_sender_restrictions =
smtpd_sender_restrictions =
4 203

modifications

Menu de navigation