L'appartement

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, avril 8 2009

Quelques conseils pour ne pas voir vos mails finir dans les dossiers Spam

1559606_340_1116081430036-s.jpgSuite à plusieurs questions reçues par mail, voici quelques conseils tirés de mon expérience personnelle pour optimiser vos chances de ne pas voir vos messages finir leur course dans le tant redouté dossier « courrier indésirable » des différents « grands » fournisseurs de services (Yahoo, Gmail, Hotmail et consorts).

  • Avoir un Zonecheck parfait sur son domaine. Ce qui implique notamment - ce point semble important pour Gmail - une adresse postmaster valide et un contact de domaine valide;
  • Signer ses messages sortant avec DKIM et vérifier régulièrement son bon fonctionnement. Cette signature devient réellement essentielle !
  • Configurer correctement SPF (Sender Policy Framework) sur son domaine. Et ne pas oublier les machines qui relaient et autres MX secondaires;
  • Dans la mesure de vos possibilités, demandez à vos correspondant de vous ajouter dans leurs carnets d'adresses et/ou leurs listes blanches. Ceci peux-être particulièrement utile dans le cas d'une lettre d'information. Vous pouvez envisager de glisser dans un de vos mailings une phrase du style « Pour être sur de recevoir nos messages, ajoutez lettre@domain.tld à votre carnet d'adresses »;
  • Pour les newsletters en HTML, n'incluez pas les images dans le message mais linkez sur votre serveur. N'oubliez pas la version alternative pour les webmails qui ne supportent pas HTML;
  • Pour Yahoo et Hotmail, il peux-être intéressant de remplir leurs différents formulaires [1] pour signaler que vos messages sont marqués comme Spam chez eux. La réponse et le résultat ne sont pas garanties. Ils vous préciseront d'ailleurs que ce n'est pas une Whitelist. D'après moi, ça aide quand même;
  • Pour ceux qui ont les moyens et qui aiment se faire racketter, Hotmail utilise également une sorte de whitelist officielle - et bien entendue payante - appelée SenderScore;

Dernière précision, et pas des moindre - ceci est également précisé sur le site de Yahoo - les fournisseurs utilisent également des filtres de réputation. En clair, tant que l'adresse IP de votre serveur n'est pas « connue », le risque de passer à la trappe est plus important.

Pour ce dernier point :

  • oubliez les adresses IP résidentielles
  • louez un serveur sur un réseau « connu »
  • prenez le temps de remplir les formulaires que j'évoquais plus haut

Si vous avez d'autres bonnes pratiques, je suis preneur ;)

Notes

[1] Cherchez sur le site « postmaster » de Yahoo ou sur son équivalent chez Microsoft

lundi, octobre 20 2008

Script minimaliste : génération des clés DKIM et ajout de l'enregistrement DNS

Un script pour ajouter un domaine dont on veux signer les mails via DKIMproxy. Celui-ci est forcément lié à mon article sur le sujet : "Installer la signature DKIM sur Postfix avec DKIMproxy". Vous pouvez très facilement l'adapter à votre usage.

Que fait ce script :

  • crée la clé publique et la clé privée dans le répertoire keys de DKIMproxy
  • change les droits sur la clé privée
  • sur demande, ajoute l'enregistrement dans le fichier de zone du domaine
  • ajoute les informations qui vont bien dans le fichier sender_map de DKIMproxy

On le lance de la façon suivante

./generate_keys domain.tld

Il faut ensuite incrémenter le numéro de série de la zone, relancer BIND et DKIMproxy.

Le script

#!/bin/bash

# Yves Tannier [grafactory.net] 2008 GPL...

# private/public keys path
PATH_KEYS='/usr/local/dkimproxy/keys'

# sender_map file path
PATH_SENDER_MAP='/usr/local/dkimproxy/sender_map'

# dkimuser
USER_GROUP='dkim:dkim'

# domain on parametre
DOMAIN=$1

# bind file path (optional)
ZONE_PATH="/var/cache/bind/$DOMAIN.hosts"

openssl genrsa -out $PATH_KEYS/$DOMAIN.key 1024
openssl rsa -in $PATH_KEYS/$DOMAIN.key -pubout -out $PATH_KEYS/${DOMAIN}_pub.key

# chg right
chown $USER_GROUP $PATH_KEYS/$DOMAIN.key
chmod 640 $PATH_KEYS/$DOMAIN.key

# Adding DKIM key on BIND Zone ?
echo
echo -n "Add DKIM key on BIND zone file ? ([Y]/n) "
read ans
if [ ! _$ans = _y -o _$ans = _Y ]; then

    # bind file
    echo -n "BIND Zone filename ($ZONE_PATH) : "
    read ${ZONE_PATH_READ}

    if [ ! -z "$ZONE_PATH_READ" ]; then
        ZONE_PATH=${ZONE_PATH_READ}
    fi

    # public key one line
    PUBLIC_KEY=$(cat $PATH_KEYS/${DOMAIN}_pub.key | sed -n '/BEGIN PUBLIC KEY/,/END PUBLIC KEY/p' | sed '/PUBLIC KEY/d' | tr -d '\n')

    # write
    echo
    echo "_domainkey.$DOMAIN.               IN TXT      \"t=y; o=-;\"" >> $ZONE_PATH
    echo "$DOMAIN._domainkey.$DOMAIN.       IN TXT      \"k=rsa; t=s; p=$PUBLIC_KEY\"" >> $ZONE_PATH

fi

SM="$DOMAIN dkim(c=simple,s=$DOMAIN,a=rsa-sha1,key=$PATH_KEYS/$DOMAIN.key), domainkeys(c=nofws,s=$DOMAIN,key=$PATH_KEYS/$DOMAIN.key)"
echo $SM >> $PATH_SENDER_MAP

echo
echo "Please, restart DKIMproxy !"
echo
echo "... And maybe BIND with new serial on $ZONE_PATH !"

Au format compressé : generate_keys.tar.gz

N'hésitez pas à me proposer vos améliorations.

mercredi, mars 12 2008

Installer la signature DKIM sur Postfix avec DKIMproxy

Je vous propose dans ce billet l'installation de la signature DKIM sur vos mails sortants. Ceci fait suite à mon billet concernant l'implémentation de DomainKeys avec Postfix et Amavis via Dkfilter.

Dkfilter ne gère en effet que le protocole DomainKeys de Yahoo! maintenant remplacé par DKIM (DomainKeys Identified Mail) , un protocole plus avancé et standardisé par la RFC 4871. Très très brièvement, DKIM permet de « renforcer » l'identité des expéditeurs.

En remplacement de dkfilter, l'auteur de ce programme nous propose DKIMproxy pour gérer la signature DKIM et/ou DomainKeys.

Si vous utilisez Amavis, comme c'est mon cas, sachez quelques petites choses :

  • Il semble que Amavisd-new gère la signature DKIM des mails sortants à partir de la version 2.6.0. Mais sur Debian Etch, nous en sommes à la version 2.4. C'est donc l'intérêt de ce billet. Je n'ai pas testé la version 2.6.0. je ne peux donc pas vous en dire plus.
  • DKIMproxy permet également une vérification des mails entrants. Cette vérification ne nous intéresse pas forcément puisque Amavis propose déjà cette fonctionnalité via Spamassassin qui utilise la librairie perl Mail::DKIM.

Comme pour mon précédent billet, c'est un howto « copié/collé » pour les informaticiens fainéants pressés. J'ai également fais pas mal de copié/collé de l'ancien billet puisque la configuration est sensiblement la même sur de nombreux points.

Lire la suite...

dimanche, novembre 4 2007

Installer DomainKeys sur Postfix (Debian Etch, Amavisd-new...)

Mise à jour le 12 mars 2008 : le même billet adapté pour DKIM est disponible : Installer la signature DKIM sur Postfix avec DKIMproxy.

Dans ma lutte incessante pour que mes messages n'aient pas comme destination finale les dossiers "courrier indésirable" des "grands" fournisseurs tels que Yahoo!, Hotmail/MSN, Gmail ect... Je vous propose aujourd'hui l'installation de la signature Domainkeys sur vos mails.

DomainKeys est un protocole de communication créé par Yahoo! (et défini par une RFC 4870). Wikipedia vous donnera un plus d'informations sur le sujet : DomainKeys sur Wikipedia

Même s'il fonctionne totalement et est déployé sur de nombreux serveurs, sachez qu'il est maintenant remplacé par une RFC plus "globale" : DKIM (Domain Keys Identified Mail). J'aborderais les différences et l'implémentation de DKIM dans un autre post.

D'autres liens :

DomainKeys bien reconnu chez Yahoo! (forcément ;)) DomainKeys

Voici la configuration du serveur de messagerie sur lequel se base ce tutoriel :

Nous allons mettre en place la configuration suivante :

postfix -> dkfilter -> postfix -> amavis -> postfix

Dkfilter est un proxy de signature et de vérification des signatures pour DomainKeys.

Ceci peut paraitre un peu lourd en regardant le schéma, mais postfix gère ce type de configuration très bien via les content filter

Comme je suis gentil et que l'informaticien est souvent fainéant, j'ai écris ce howto avec plein de copier/coller ;)

Lire la suite...