Gestion des messages sortants de Postfix (queues)

Récemment, j’ai eu des problèmes d’envoi d’emails avec le serveur SMTP Postfix, étant une chose rare, je ne me souviens jamais de certaines commandes de gestion des files d’attente de messages sortants de Postfix. Voici un petit mémo.

Lister les files d’attente Postfix

Postfix possède 2 queues d’envoi d’emails : la liste d’emails en cours d’envoi (pending mails) et la liste d’emails differés (deferred mails). La queue des emails différés sont les messages qui ont été en soft-fail et sont mis en attente pour essayer d’être envoyés plus tard. Leur statut est Temporary failure. Par défaut, Postfix essaie 5 minutes plus tard.

  • Lister les messages en cours d’envoi :
    mailq
  • Lister les messages différés :
    postqueue -p

Supprimer les messages

  • Pour supprimer les messages de la queue :
    postsuper -d ALL
  • Pour supprimer tous les messages dans la queue des emails différés :
    postsuper -d ALL deferred

Envoyer les messages

Si inversement vous voulez envoyer les messages et ainsi vider la file d’attente :

postqueue -f

ou

postfix flush


Création d’un module Magento de formulaire d’abonnement Mailjet

Cet article explique comment créer un module Magento de formulaire d’abonnement à une newsletter pour Mailjet.

Le module Feub Mailjetform dans l'interface d'admin de Magento
Le module Feub Mailjetform dans l’interface d’admin de Magento

Cette semaine j’ai du effectuer une migration (c’est un bien grand mot) de Mailchimp vers Mailjet, le leader européen en matière de service pour l’emailing marketing, principalement pour des raisons de coût, car il faut l’avouer, il n’y a pas photo avec Mailchimp qui est vite cher pour des petits/moyens volumes.

Bref, après la configuration du back office, une des choses les plus naturelles à faire est d’intégrer un formulaire d’abonnement, et bien qu’elle ne fut pas ma surprise de ne rien trouver du côté de Mailjet. Il existe bien un petit générateur de widget très minimaliste qui crée un bout de code iframe à insérer dans son code, un peu léger car pas moyen de personnaliser l’apparence du formulaire. L’autre solution, c’est de taper dans l’API et d’écrire son propre code.

J’ai donc cherché pas mal en ligne pour trouver un module pour Magento, en vain. Je me suis rabattu sur du PHP lambda à intégrer, un bout de code pour ajouter un banal formulaire de souscription à une newsletter Mailjet. Rien, même après plusieurs heures.

J’ai donc décidé que j’allais écrire mon propre module Magento en utilisant l’API de Mailjet.

Continue reading « Création d’un module Magento de formulaire d’abonnement Mailjet »

Dovecot : faire le ménage dans les boîtes aux lettres

Dovecot

Vider le répertoire Trash et supprimer le Spam régulièrement sont des choses qu’il faut effectuer de temps en temps sur un serveur de messagerie pour ne pas voir son espace disque s’écrouler inutilement.

Dovecot sait bien entendu faire ça grace à l’option expunge de la commande doveadm. Par exemple, la commande suivante va supprimer les fichiers modifiés de plus de 30 jours dans le répretoire Junk de l’utilisateur toto@titi.org :

doveadm expunge -u toto@titi.org mailbox Junk savedbefore 30d

Il s’agit bien des fichiers dont la dernière date de modification est plus vieille que le nombre de jours choisi, ainsi si vous avez un vieux fichier de plus de 60 jours en Inbox et que vous le placez dans le Junk, celui-ci ne sera supprimé que dans 60 jours car il a été « nouvellement » mis dans Junk.

Une commande plus générale pour faire le ménage sur un serveur Dovecot est la suivante :

doveadm expunge -A mailbox Junk savedbefore 60d

Celle-ci faire le même travail mais pour toutes les boîtes aux lettres. A noter que toute commande de type doveadm -A utilise la requête d’itération iterate_query, celle-ci doit retourner username et domain de chaques utilisateurs. Cette requête peut varier suivant votre installation de DOvecot, pour information, voici la mienne :

iterate_query = SELECT email AS username, domain FROM MX_users

Ceci peut-etre placé dans un script qui sera exécuté de temps en temps par le cron.

#!/bin/bash

DOVEADM=/usr/bin/doveadm

$DOVEADM expunge -A mailbox Trash savedbefore 30d
$DOVEADM expunge -A mailbox Junk  savedbefore 30d

Dans mon cas, sous /etc/cron.d/mailboxes_expunge

10 22 * * *     root    /etc/dovecot/mailboxes_expunge.sh

Ajouter le support TLS à Postfix et Dovecot

TLS (qui s’appelait SSL avant 2001) signifie Transport Layer Security. Il s’agit d’une couche qui crypte la communication entre deux hôtes. En utilisant SMTP AUTH (voir cet article) avec les mécanismes PLAIN ou LOGIN, le nom d’utilisateur ainsi que le mot de passe transitent en clair et sont exposés à quiconque sniffe le réseau. C’est là que la couche TLS peut résoudre ce point faible.
Pour utiliser le cryptage, il faut un certificat qui valide notre authenticité pour le client qui va se connecter au serveur de messagerie. Normalement un tel certificat doit s’acheter auprès d’une autorité compétente comme Thawte ou Verisign. L’autre solution est d’auto-signer son certificat, c’est bien entendu gratuit, mais n’étant pas officiel (mais reste légal!), les utilisateurs du serveur de messagerie devront vous faire confiance en acceptant ce certificat « maison ». Cette soluton est décrite ci-dessous.

Continue reading « Ajouter le support TLS à Postfix et Dovecot »