« Altermime » : différence entre les versions
(10 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 15 : | Ligne 15 : | ||
* Création du répertoire d''''Altermime''' avec les permissions adéquates : | * Création du répertoire d''''Altermime''' avec les permissions adéquates : | ||
{{ Box_Console | objet=sudo mkdir /var/spool/ | {{ Box_Console | objet=sudo mkdir /var/spool/filter<br /> | ||
sudo | sudo chown postfix:altermime /var/spool/filter<br /> | ||
sudo chmod 750 /var/spool/ | sudo chmod 750 /var/spool/filter}} | ||
* Intégration de la file de traitement d''''Altermime''' dans le répertoire chroot de '''Postfix''' : | * Intégration de la file de traitement d''''Altermime''' dans le répertoire chroot de '''Postfix''' : | ||
{{ Box_Console | objet=mkdir -p /var/spool/postfix/var/spool/<br /> | {{ Box_Console | objet=mkdir -p /var/spool/postfix/var/spool/<br /> | ||
mkdir -p /var/spool/postfix/var/spool/ | mkdir -p /var/spool/postfix/var/spool/filter<br /> | ||
sudo ln -s /var/spool/ | sudo ln -s /var/spool/filter /var/spool/postfix/var/spool/filter }} | ||
== Configuration pour Postfix == | == Configuration pour Postfix == | ||
Ligne 58 : | Ligne 58 : | ||
sudo chgrp altermime /etc/postfix/disclaimer.txt<br /> | sudo chgrp altermime /etc/postfix/disclaimer.txt<br /> | ||
sudo chmod 750 /etc/postfix/disclaimer.txt}} | sudo chmod 750 /etc/postfix/disclaimer.txt}} | ||
* Pour appliquer la configuration, on redémarre '''Postfix''' : | |||
{{ Box Console | objet=service postfix restart}} | |||
=== Validation === | |||
* On envoi un mail de '''alice@mail.glx''' vers la boîte externe '''cacheln@ncad.fr''' : | |||
{{ Box Console | objet=<span style="font-family:sans-serif;color:blue">telnet 10.0.0.44 25</span><br /> | |||
Trying 10.0.0.44...<br /> | |||
Connected to 10.0.0.44.<br /> | |||
Escape character is '^]'.<br /> | |||
220 alice.lan ESMTP Postfix<br /> | |||
<span style="font-family:sans-serif;color:blue">mail from:<alice@mail.glx></span><br /> | |||
250 2.1.0 Ok<br /> | |||
<span style="font-family:sans-serif;color:blue">rcpt to:<cacheln@ncad.fr></span><br /> | |||
250 2.1.5 Ok<br /> | |||
<span style="font-family:sans-serif;color:blue">data</span><br /> | |||
354 End data with <CR><LF>.<CR><LF><br /> | |||
<span style="font-family:sans-serif;color:blue">test</span><br /> | |||
<span style="font-family:sans-serif;color:blue">.</span><br /> | |||
<font color=green>250 2.0.0 Ok: queued as 4BAD52E2A9A</font><br /> | |||
quit<br /> | |||
221 2.0.0 Bye<br /> | |||
Connection closed by foreign host. }} | |||
* Voici ce qu'on observe dans '''/var/log/mail.log''' : | |||
<span style="color:#FFFFFF;background-color:darkblue">1</span> Feb 15 00:22:03 alice postfix/<font color=red>smtpd</font>[6936]: connect from oxtrode.net.ncad.fr[10.0.0.51] | |||
<span style="color:#FFFFFF;background-color:darkblue">1</span> Feb 15 00:22:03 alice postfix/<font color=red>smtpd</font>[6936]: <font color=purple>ADC192E2A9A</font>: client=oxtrode.net.ncad.fr[10.0.0.51] | |||
<span style="color:#FFFFFF;background-color:darkblue">2</span> Feb 15 00:22:03 alice postfix/<font color=red>cleanup</font>[6939]: <font color=purple>ADC192E2A9A</font>: message-id=<52FEA51C.3010203@mail.glx> | |||
<span style="color:#FFFFFF;background-color:darkblue">3</span> Feb 15 00:22:03 alice postfix/<font color=red>qmgr</font>[6934]: <font color=purple>ADC192E2A9A</font>: from=<alice@mail.glx>, size=528, nrcpt=1 (queue active) | |||
<span style="color:#FFFFFF;background-color:darkblue">1</span> Feb 15 00:22:03 alice postfix/<font color=red>smtpd</font>[6936]: disconnect from oxtrode.net.ncad.fr[10.0.0.51] | |||
<span style="color:#FFFFFF;background-color:darkblue">5</span> Feb 15 00:22:03 alice postfix/<font color=red>pickup</font>[6933]: <font color=darkpink>C95C22E2A9D</font>: uid=999 from=<alice@mail.glx> | |||
<span style="color:#FFFFFF;background-color:darkblue">6</span> Feb 15 00:22:03 alice postfix/<font color=red>cleanup</font>[6939]: <font color=darkpink>C95C22E2A9D</font>: message-id=<52FEA51C.3010203@mail.glx> | |||
<span style="color:#FFFFFF;background-color:darkorange">4</span> Feb 15 00:22:03 alice postfix/<font color=red>pipe</font>[6940]: <font color=purple>ADC192E2A9A</font>: to=<cacheln@ncad.fr>, relay=dfilt, delay=0.15, delays=0.07/0/0/0.08, | |||
dsn=2.0.0, status=sent (delivered via dfilt service) | |||
<span style="color:#FFFFFF;background-color:darkblue">3</span> Feb 15 00:22:03 alice postfix/<font color=red>qmgr</font>[6934]: <font color=purple>ADC192E2A9A</font>: removed | |||
<span style="color:#FFFFFF;background-color:darkblue">7</span> Feb 15 00:22:03 alice postfix/<font color=red>qmgr</font>[6934]: <font color=darkpink>C95C22E2A9D</font>: from=<alice@mail.glx>, size=1461, nrcpt=1 (queue active) | |||
<span style="color:#FFFFFF;background-color:darkgreen">8</span> Feb 15 00:22:03 alice postfix/<font color=red>smtp</font>[6947]: connect to aspmx.l.google.com[2a00:1450:400c:c05::1a]:25: Network is unreachable | |||
<span style="color:#FFFFFF;background-color:darkgreen">8</span> Feb 15 00:22:04 alice postfix/<font color=red>smtp</font>[6947]: <font color=darkpink>C95C22E2A9D</font>: to=<cacheln@ncad.fr>, relay=aspmx.l.google.com[173.194.66.26]:25, | |||
delay=0.65, delays=0.07/0/0.18/0.39, dsn=2.0.0, status=sent (250 2.0.0 OK 1392420122 lf10si5197331wjc.61 - gsmtp) | |||
<span style="color:#FFFFFF;background-color:darkblue">7</span> Feb 15 00:22:04 alice postfix/<font color=red>qmgr</font>[6934]: <font color=darkpink>C95C22E2A9D</font>: removed | |||
Le message transite bien vers notre filtre pour l'ajout du '''disclaimer''' avant d'être ré-injecté via le processus '''pickup''' et d'être finalement distribué. | |||
* Voici le message reçu dans la boîte de réception '''cacheln@ncad.fr''' : | |||
test | |||
-- | |||
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity | |||
to whom they are addressed. If you have received this email in error please notify the system manager. This message | |||
contains confidential information and is intended only for the individual named. If you are not the named addressee you | |||
should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received | |||
this e-mail by mistake and delete this e-mail from your system. If you are not the intended recipient you are notified that | |||
disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly | |||
prohibited. | |||
== Configuration pour Amavis == | == Configuration pour Amavis == | ||
Ligne 65 : | Ligne 124 : | ||
* '''Amavis''' est compatible avec le module '''Altermime'''. Pour l'activer, il suffit d'ajouter les lignes suivantes dans le fichier '''/etc/amavis/conf.d/50-user''' : | * '''Amavis''' est compatible avec le module '''Altermime'''. Pour l'activer, il suffit d'ajouter les lignes suivantes dans le fichier '''/etc/amavis/conf.d/50-user''' : | ||
@local_domains_maps = ['mail.glx']; | |||
$defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ]; | $defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ]; | ||
$altermime = '/usr/bin/altermime'; | $altermime = '/usr/bin/altermime'; | ||
Ligne 83 : | Ligne 143 : | ||
* Il est possible d'activer de personnaliser le disclaimer en fonction du nom de domaine de messagerie. Pour cela il faudra adapter la table '''@disclaimer_options_bysender_maps'''. Par exemple, nous voulons un disclaimer différent pour les messages sortant avec des adresses '''@ncad.me''' : | * Il est possible d'activer de personnaliser le disclaimer en fonction du nom de domaine de messagerie. Pour cela il faudra adapter la table '''@disclaimer_options_bysender_maps'''. Par exemple, nous voulons un disclaimer différent pour les messages sortant avec des adresses '''@ncad.me''' : | ||
@local_domains_maps = ['mail.glx','ncad.me']; | |||
@disclaimer_options_bysender_maps = ({ | @disclaimer_options_bysender_maps = ({ | ||
<font color=blue>'ncad.me'</font> => <font color=green>'ncad.me'</font>, | <font color=blue>'ncad.me'</font> => <font color=green>'ncad.me'</font>, | ||
Ligne 167 : | Ligne 228 : | ||
exit $? | exit $? | ||
== | == Liens == | ||
* http://wiki.zimbra.com/wiki/Adding_a_disclaimer_(altermime)_or_footer | * http://wiki.zimbra.com/wiki/Adding_a_disclaimer_(altermime)_or_footer |
Dernière version du 14 octobre 2014 à 21:44
.:[ Serveur de Messagerie ]:.
Filtrage anti-spam : Anti-Spam SpamAssassin | Anti-Virus Clamav
Filtrage anti-virus : Plateforme de filtrage Amavis >> Amavis avec MySQL
Plus de fonctions : Ajouter un Disclaimer | Signature DKIM | Mailman | Maildrop
Clients de messagerie : Configurer Thundirbird | Configurer Roundcube
Pour aller plus loin : Commandes messagerie | DNSBL | MX Backup
Installation
- Installation du paquet Altermime :
|
|
- Création de l'utilisateur altermime :
|
|
- Création du répertoire d'Altermime avec les permissions adéquates :
|
|
- Intégration de la file de traitement d'Altermime dans le répertoire chroot de Postfix :
|
|
Configuration pour Postfix
|
Cette configuration est valable uniquement si Postfix fonctionne sans la plateforme de filtrage Amavis. Le cas échéant, il faudra se reporter à la seconde partie expliquant comment intégrer Altermime dans Amavis. |
Routage des mails
- Dans le fichier /etc/postfix/master.cf, remplacer :
smtp inet n - n - - smtpd
- Par :
smtp inet n - n - - smtpd -o content_filter=dfilt:
- Ajouter à la fin du fichier /etc/postfix/master.cf :
dfilt unix - n n - - pipe flags=Rq user=altermime argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}
Configuration de base
- Le script d'exécution disclaimer sera appelé par Postfix pour ajouter le disclaimer à la fin de chaque message sortant. Le script d'origine est enregistré dans le fichier /usr/share/doc/altermime/examples/postfix_filter.sh. Ce fichier sera déplacé dans /etc/postfix :
|
|
- Nous allons également copié le fichier contenant le message par défaut qui sera ajouté à la fin de chaque mail sortant. Son contenu pourra être personnalisé par la suite :
|
|
- Pour appliquer la configuration, on redémarre Postfix :
|
|
Validation
- On envoi un mail de alice@mail.glx vers la boîte externe cacheln@ncad.fr :
|
|
- Voici ce qu'on observe dans /var/log/mail.log :
1 Feb 15 00:22:03 alice postfix/smtpd[6936]: connect from oxtrode.net.ncad.fr[10.0.0.51] 1 Feb 15 00:22:03 alice postfix/smtpd[6936]: ADC192E2A9A: client=oxtrode.net.ncad.fr[10.0.0.51] 2 Feb 15 00:22:03 alice postfix/cleanup[6939]: ADC192E2A9A: message-id=<52FEA51C.3010203@mail.glx> 3 Feb 15 00:22:03 alice postfix/qmgr[6934]: ADC192E2A9A: from=<alice@mail.glx>, size=528, nrcpt=1 (queue active) 1 Feb 15 00:22:03 alice postfix/smtpd[6936]: disconnect from oxtrode.net.ncad.fr[10.0.0.51] 5 Feb 15 00:22:03 alice postfix/pickup[6933]: C95C22E2A9D: uid=999 from=<alice@mail.glx> 6 Feb 15 00:22:03 alice postfix/cleanup[6939]: C95C22E2A9D: message-id=<52FEA51C.3010203@mail.glx> 4 Feb 15 00:22:03 alice postfix/pipe[6940]: ADC192E2A9A: to=<cacheln@ncad.fr>, relay=dfilt, delay=0.15, delays=0.07/0/0/0.08, dsn=2.0.0, status=sent (delivered via dfilt service) 3 Feb 15 00:22:03 alice postfix/qmgr[6934]: ADC192E2A9A: removed 7 Feb 15 00:22:03 alice postfix/qmgr[6934]: C95C22E2A9D: from=<alice@mail.glx>, size=1461, nrcpt=1 (queue active) 8 Feb 15 00:22:03 alice postfix/smtp[6947]: connect to aspmx.l.google.com[2a00:1450:400c:c05::1a]:25: Network is unreachable 8 Feb 15 00:22:04 alice postfix/smtp[6947]: C95C22E2A9D: to=<cacheln@ncad.fr>, relay=aspmx.l.google.com[173.194.66.26]:25, delay=0.65, delays=0.07/0/0.18/0.39, dsn=2.0.0, status=sent (250 2.0.0 OK 1392420122 lf10si5197331wjc.61 - gsmtp) 7 Feb 15 00:22:04 alice postfix/qmgr[6934]: C95C22E2A9D: removed
Le message transite bien vers notre filtre pour l'ajout du disclaimer avant d'être ré-injecté via le processus pickup et d'être finalement distribué.
- Voici le message reçu dans la boîte de réception cacheln@ncad.fr :
test -- This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited.
Configuration pour Amavis
Configuration de base
- Amavis est compatible avec le module Altermime. Pour l'activer, il suffit d'ajouter les lignes suivantes dans le fichier /etc/amavis/conf.d/50-user :
@local_domains_maps = ['mail.glx']; $defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ]; $altermime = '/usr/bin/altermime'; @altermime_args_disclaimer = qw(--disclaimer=/etc/postfix/_OPTION_.txt --disclaimer-html=/etc/postfix/_OPTION_.txt --force-for-bad-html); @disclaimer_options_bysender_maps = ({ '.' => 'default', },); $allow_disclaimers = 1;
- Pour appliquer la configuration, on redémarre Amavis :
|
|
Configuration multi-domaines
- Il est possible d'activer de personnaliser le disclaimer en fonction du nom de domaine de messagerie. Pour cela il faudra adapter la table @disclaimer_options_bysender_maps. Par exemple, nous voulons un disclaimer différent pour les messages sortant avec des adresses @ncad.me :
@local_domains_maps = ['mail.glx','ncad.me']; @disclaimer_options_bysender_maps = ({ 'ncad.me' => 'ncad.me', '.' => 'default', },);
- Nous avons ajouter la ligne 'ncad.me' => 'ncad.me' avec ncad.me pour le domaine contenu dans l'adresse émetteur et ncad.me pour le nom du fichier contenu à la racine /etc/postfix/*.txt et contenant le texte à intégrer.
- Il faudra donc créer le fichier /etc/postfix/ncad.me.txt avec les permissions pour Amavis :
|
|
- Et y insérer le texte de notre choix :
-- Ce message électronique et tous les fichiers attachés qu'il contient sont confidentiels et destinés exclusivement à l'usage de la personne à laquelle ils sont adressés. Si vous avez reçu ce message par erreur, merci de le retourner à son émetteur. Les idées et opinions présentées dans ce message sont celles de son auteur et ne représentent pas nécessairement celles de La Compagnie du Téléphone ou d'une de ses filiales. La publication, l'usage, la distribution, l'impression ou la copie non autorisée de ce message et des attachements qu'il contient sont strictement interdits.
- Pour appliquer la configuration, on redémarre Amavis :
|
|
Annexes
#!/bin/sh INSPECT_DIR=/var/spool/altermime SENDMAIL=/usr/sbin/sendmail LOCAL_DOMAIN1=domain1.com LOCAL_DOMAIN2=domain2.com RECIP=`echo $* | awk '{print $NF}'| tr [A-Z] [a-z]` RECIP_DOMAIN=`echo $RECIP | awk -F"@" '{print $2}'` SENDER=`echo $* | awk '{print $2}'| tr [A-Z] [a-z]` SEND_DOMAIN=`echo $SENDER | awk -F"@" '{print $2}'` # Exit codes from <sysexits.h> EX_TEMPFAIL=75 EX_UNAVAILABLE=69 # Clean up when done or when aborting. trap "rm -f in.$$" 0 1 2 3 15 # Start processing. cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; } cat > in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; } if [ "$RECIP_DOMAIN" = "$SEND_DOMAIN" ]; then /usr/bin/altermime --input=in.$$ \ --disclaimer=/etc/postfix/disclaimers.txt \ --disclaimer-html=/etc/postfix/disclaimers.txt \ --xheader="X-Copyrighted-Material:" || \ { echo Message content rejected; exit $EX_UNAVAILABLE; } elif [ "$SEND_DOMAIN" = "$LOCAL_DOMAIN2" ]; then /usr/bin/altermime --input=in.$$ \ --disclaimer=/etc/postfix/domain2.txt \ --disclaimer-html=/etc/postfix/domain2.txt \ --xheader="X-Copyrighted-Material: Please visit http://www.domain2.com/privacy.htm" || \ { echo Message content rejected; exit $EX_UNAVAILABLE; } elif [ "$SEND_DOMAIN" = "$LOCAL_DOMAIN1" ]; then /usr/bin/altermime --input=in.$$ \ --disclaimer=/etc/postfix/domain1.txt \ --disclaimer-html=/etc/postfix/domain1.txt \ --xheader="X-Copyrighted-Material: Please visit http://www.domain1.com/privacy.htm" || \ { echo Message content rejected; exit $EX_UNAVAILABLE; } else /usr/bin/altermime --input=in.$$ \ --disclaimer=/etc/postfix/emptydisclaimer.txt \ --disclaimer-html=/etc/postfix/emptydisclaimer.txt \ --xheader="X-Copyrighted-Material: " || \ { echo Message content rejected; exit $EX_UNAVAILABLE; } fi $SENDMAIL -i "$@" <in.$$ exit $?