Altermime : Différence entre versions

De Wiki NCad
Aller à : navigation, rechercher
(Script d'exécution)
(Installation)
Ligne 20 : Ligne 20 :
 
sudo chgrp altermime /var/spool/altermime <br />
 
sudo chgrp altermime /var/spool/altermime <br />
 
sudo chmod 750 /var/spool/altermime }}
 
sudo chmod 750 /var/spool/altermime }}
 
* 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 />
 
mkdir -p /var/spool/postfix/var/spool/altermime<br />
 
sudo ln -s /var/spool/altermime /var/spool/postfix/var/spool/altermime }}
 
  
 
== Configuration pour Postfix ==
 
== Configuration pour Postfix ==

Version du 13 février 2014 à 13:41

.:[ Serveur de Messagerie ]:.

Installation >> Postfix avec MySQL

Anti-Spam SpamAssassin | Anti-Virus Clamav


Plateforme de filtrage Amavis >> Amavis avec MySQL


Ajouter un Disclaimer


Configurer Thundirbird | Configurer Roundcube


Commandes messagerie | DNSBL | MX Backup
ICON boxWarning.png

Une révision de cette article est planifiée suite à la mise à jour de l'article principale sur Postfix.

Installation

  • Installation du paquet Altermime :
ICON Terminal.png

sudo apt-get install altermime

  • Création de l'utilisateur altermime :
ICON Terminal.png

sudo useradd -r -c "Postfix Disclaimer" -d /var/spool/filter altermime

  • Création du répertoire d'Altermime avec les permissions adéquates :
ICON Terminal.png

sudo mkdir /var/spool/altermime
sudo chgrp altermime /var/spool/altermime
sudo chmod 750 /var/spool/altermime

Configuration pour Postfix

ICON boxWarning.png

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 :
ICON Terminal.png

sudo cp /usr/share/doc/altermime/examples/postfix_filter.sh /etc/postfix/disclaimer
sudo chgrp altermime /etc/postfix/disclaimer
sudo chmod 750 /etc/postfix/disclaimer

  • 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 :
ICON Terminal.png

sudo cp /usr/share/doc/altermime/examples/disclaimer.txt /etc/postfix/disclaimer.txt
sudo chgrp altermime /etc/postfix/disclaimer.txt
sudo chmod 750 /etc/postfix/disclaimer.txt

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 :
$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;

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 :
@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 :
ICON Terminal.png

touch /etc/postfix/ncad.me.txt
chown root:amavis /etc/postfix/ncad.me.txt
vim /etc/postfix/ncad.me.txt

  • 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.

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