De nos jours étant donné qu'on vit à l'age du SPAM! on est confronté à changer son hôte de relais SMTP ( serveur SMTP sortant) à chaque endroit ou l'on va. Pour la plupart des gens ce n'est pas un problème car l'ordinateur reste à la maison. Pour un geek ce n'est pas un problème critique, car comme tout le monde le sait, un geek à toujours plus d'un tour dans son sac. Le réel problème se pose quand on a des gens autour de nous qui sont sur la route ( et surtout ceux qui ont notre numéro de téléphone! ) car à ce moment précis, dès que l'internaude incompétent moyen sur la route à le moindre problème à envoyer un courriel le téléphone sonne. À chaque fois c'est la même histoire... Depuis quelques temps j'ai décidé de me simplifier la vie. Je vais leur offrir ce que j'appelle SMTP comme ça aurait toujours du être.

Pour en arriver là, il nous faut une boite à outil magique. En voici les éléments essentiels :

  • FreeBDS ou Linux
  • Postfix
  • Cyrus SASL 2
  • TLS/SSL
  • Environ 30 minutes de votre temps

Voici ce qu'il faut faire pour configurer sont serveur de courrier afin qu'il fasse office d'hôte de relais SMTP de façon sécuritaire et authentifié. De cette façon vous ne deviendrai pas un relais ouvert ( open relay ) et vous pourrai envoyer de courrier de presque n'importe.

1. Installer Postfix avec le support pour SASL, TLS. Avec les ports de FreeBSD, en faisant make on a un menu qui nous apparait et on peut cocher les options que l'on veux. Sur RedHat Enterprise Linux, je crois que le support est activé par défaut :)

2. Installer cyrus SASL2

cd /usr/ports/security/cyrus-sasl2
make all install clean
cd ../cyrus-sasl2-saslauthd
make all install clean

3. Configure SASL2 et déactiver NTLM pour s'éviter des problèmes avec Outlook Express

cd /usr/local/lib/sasl2
echo "pwcheck_method: saslauthd" > smtpd.conf
mkdir deactivated
mv *ntlm* deactivated

4. Générer le certificat SSL

mkdir /usr/local/etc/postfix/ssl
cd /usr/local/etc/postfix/ssl
openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650

5. Configurer Postfix /usr/local/etc/postfix/main.cf

# Config pour SASL
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =

smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

* Notez que les options 
smtpd_sender_restrictions et smtpd_recipient_restrictions 
peuvent être différente selon votre configuration et vos besoins.


# Configuration pour TLS
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

6. Activer saslauthd au démarrage ( ajouter ces lignes a /etc/rc.conf )

# Enable saslauthd
saslauthd_enable="YES"
saslauthd_flags="-a getpwent"

* Notez que FreeBSD utilise saslauthd_flags="-a pam" par défaut, mais en lisant dans le man page on voit que PAM est supporté que sur Linux et Solaris ... Bizarre!

7. Démarer le service saslauthd

/usr/local/etc/rc.d/saslauthd.sh start

Suite à cela, j'ai du ajuster certain paramètres dans ma configuration de MailScanner car SpamAssassin déterminait à l'aide des RBL ( real time blacklist ) que les courriel étaient en provenance d'une place d'adresses résidentielle. Ce qui augmente les chances que le courriel soit perçu comme un SPAM!

Avec une procédure comme celle ci on a plus de raisons d'utiliser le serveur SMTP traditionnel des divers fournisseurs d'accès Internet.

Postfix TLS SASL2