Altermime : Différence entre versions
De Wiki NCad
(→Copie des scripts et fichiers de configuration) |
(→Copie des scripts et fichiers de configuration) |
||
Ligne 53 : | Ligne 53 : | ||
<br /><br /> | <br /><br /> | ||
{{ Box_Attention | objet=Le contenu du fichier disclaimer.txt sera ajouté en fin des mails aussi à l’émission qu'à la réception. }} | {{ Box_Attention | objet=Le contenu du fichier disclaimer.txt sera ajouté en fin des mails aussi à l’émission qu'à la réception. }} | ||
+ | |||
+ | == Patch == | ||
+ | |||
+ | #!/bin/sh | ||
+ | INSPECT_DIR=/var/spool/filter | ||
+ | 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=/opt/zimbra/postfix/conf/disclaimers/emptydisclaimer.txt \ | ||
+ | --disclaimer-html=/opt/zimbra/postfix/conf/disclaimers/emptydisclaimer.txt \ | ||
+ | --xheader="X-Copyrighted-Material: " || \ | ||
+ | { echo Message content rejected; exit $EX_UNAVAILABLE; } | ||
+ | |||
+ | |||
+ | fi | ||
+ | |||
+ | $SENDMAIL -i "$@" <in.$$ | ||
+ | exit $? | ||
== Sources == | == Sources == |
Version du 3 juillet 2013 à 23:14
Sommaire
Installation
- Installation du paquet altermime :
|
- Création de l'utilisateur altermime :
|
- Création du répertoire d'altermime avec les permissions :
|
- Lien vers le répertoire si Postfix est chrooté :
|
Configuration de Postfix
Modifications de main.cf
Ajout du pipe dfilt au service SMTP
- Rechercher (à la première ligne) :
smtp inet n - n - - smtpd
- Et remplacer par :
smtp inet n - n - - smtpd -o content_filter=dfilt:
Définition du pipe dfilt
- Ajouter à la fin du fichier :
dfilt unix - n n - - pipe flags=Rq user=filter argv=/opt/zimbra/postfix/conf/disclaimer -f ${sender} -- ${recipient}
Copie des scripts et fichiers de configuration
- Copie du script d'exécution disclaimer :
|
- Copie du pied-de-page inséré dans le mail :
|
Le contenu du fichier disclaimer.txt sera ajouté en fin des mails aussi à l’émission qu'à la réception. |
Patch
#!/bin/sh INSPECT_DIR=/var/spool/filter 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=/opt/zimbra/postfix/conf/disclaimers/emptydisclaimer.txt \ --disclaimer-html=/opt/zimbra/postfix/conf/disclaimers/emptydisclaimer.txt \ --xheader="X-Copyrighted-Material: " || \ { echo Message content rejected; exit $EX_UNAVAILABLE; } fi $SENDMAIL -i "$@" <in.$$ exit $?