HOAB

History of a bug

Convertir les utilisateurs vpopmail/qmail vers postfix

Rédigé par gorki Aucun commentaire

Le problème :

Convertir en masse une liste d'utilisateurs vpopmail vers postfix

Solution :

J'avais référencé ce script mais il ne fonctionne pas (il manque des includes).

D'abord je créé le domaine voulu : mondomaine.Com

Et ce petit script qui parcours le fichier vpasswd et génère les insert SQL qui vont bien dans la table postfix.mailbox

#!/bin/bash

SAVEIFS=$IFS

CONVERT_DOMAIN="<mondomaine.com>"
DATE=`date "+%Y-%m-%d %H:%M:%S"`

while IFS='' read -r line || [[ -n "$line" ]]; do
    IFS=': ' read -r -a array <<< "$line"
	
	echo "INSERT INTO mailbox (username, password, name, maildir, quota, local_part, domain, created, modified, active) VALUES('${array[0]}@$CONVERT_DOMAIN', '${array[1]}', '${array[0]}', '${array[0]}@$CONVERT_DOMAIN/', 0, '${array[0]}', '$CONVERT_DOMAIN', '$DATE', '$DATE', 1);"

    IFS=''
done < "vpasswd"

IFS=$SAVEIFS

Et ensuite j'insère tout ça directement dans ma base SQL, vérification avec postfixadmin.

Migration Courier-imap/qmail vers Postfix/dovecot

Rédigé par gorki Aucun commentaire

Le problème :

Je veux migrer en douceur et de manière transparente un serveur de courier d'un serveur A vers un serveur B.
Le serveur A est un qmail/vpopmail/courier-imap.
Le serveur B est un postfix/dovecot
Go !

Solution :

Pour palier au temps de propagation des DNS qui peut être rapide ou pas, l'idée est donc :

Serveur B : préparation

<domaine.com> mail._domainkey.<domaine.com>
  1. créer dans postfixadmin sur le serveur B le nom de domaine à gérer
  2. générer la clé DKIM pour ce nouveau domaine (cf configuration DKIM multi-domaine)
  3. vérifier le domaine (cf post 10/10)
  4. créer les boites aux lettres, j'en ai peu, mais il y a des scripts de migration à partir des vpasswd a priori (ou ça en fait)
  5. via thunderbird portable, et mes configurations, je créé des comptes et je teste l'envoi et la réception
IMAP
ip du serveur (le DNS n'est pas migré), port 143, STARTTLS, mot de passe non chiffré

SMTP
ip du serveur (le DNS n'est pas migré), port 587, STARTTLS, mot de passe non chiffré

Serveur A : relay

Le serveur B étant prêt à gérer les mails, on redirige le trafic SMTP du serveur A vers le B pour ce domaine.

Un guide ici.

  1. Vérifier la présence de <domaine.com> dans /var/qmail/control/rcpthosts
  2. Supprimer la référence à <domaine.com> dans /var/qmail/control/smtproutes
  3. Ajouter la redirection dans : /var/qmail/control/smtproutes
<domaine.com>:<IP serveur B>
  1. redémarrer qmail
  2. Tester l'envoi d'un email en utilisant le DNS mail.<domaine.com>, il passe par serveur A et est forwardé au serveur B

DNS : bascule

Modifier les DNS

Serveur A/B : recopier les boites aux lettres

Via un rsync plusieurs jours avant si les boites sont volumineuses, c'est la copie qui est longue, la conversion est rapide (quelques fichiers à modifier).

Le script de migration est ici : http://wiki.dovecot.org/Migration/Courier

Donc :

  1. recopier les boites courier-map
# Serveur A
cd /home/vpopmail/domains
tar zcf <domaine.com>.tgz <domaine.com>
scp <domaine.com>.tgz <Serveur B>:/home/vmail/<domaine.com>/tmp_migrate

# OU rsynch
cd /home/vpopmail/domains
rsync -razh --delete root@<serveur A>:/home/vpopmail/domains/<domaine.com> .

 

  1. les extraire
# Serveur B
cd /home/vmail/<domaine.com>/tmp_migrate
tar zxf <domaine.com>.tgz
  1. les convertir
 ./courier-dovecot-migrate.pl <domaine.com> --recursive 
# si ok
 ./courier-dovecot-migrate.pl <domaine.com> --recursive --convert
  1. les transférer dans la nouvelle boite
chown -R <user dovecot:user dovecot> *
cp -r <domaine.com>/* /home/vmail/<domaine.com>/

Postfix et 10/10 aux tests antispam

Rédigé par gorki Aucun commentaire

Le problème :

Après avoir installé un serveur de mail. Gmail refusait les mails envoyés depuis ce serveur.

"Our system has detected that this message does 550-5.7.1 not meet IPv6 sending guidelines regarding PTR records and 550-5.7.1 authentication. Please review 550-5.7.1  https://support.google.com/mail/?p=ipv6_authentication_error for more 550 5.7.1 information"

Et là, il faut suivre les conseils vagues de Google, heureusement d'autres sites sont de meilleurs aides, exemple :  https://www.mail-tester.com/

Le contexte :

- un serveur de mail + un nom de domaine (MONDOMAINE)

- un deuxième serveur de mail qui envoie des mails sur ce même domaine

Solution :

Suivre les recommendations du site mail-tester :)

Cela m'a conduit à :

Déclarer des enregistrements DNS sur MONDOMAINE pour autoriser mon deuxième serveur à envoyer des mails :

SERVEUR2.MONDOMAINE IN    A   IP-SERVEUR-2
MONDOMAINE.	IN	TXT	"v=spf1 ip4:IP-SERVEUR-2 include:mx.ovh.com"
MONDOMAINE.	IN	SPF	"v=spf1 ip4:IP-SERVEUR-2 include:mx.ovh.com"

Vérifier que le postfix de mon 2eme serveur est identifié avec SERVEUR2.MONDOMAINE

  • maintenant les serveurs SMTP reçevant nos mails savent que le deuxième serveur est autorisé à les envoyé.
  • que le nom de domaine SERVEUR2.MONDOMAINE est cohérent avec qui est déclaré dans postfix
  • ne pas avoir configurer postfix en openrelay, mais ça il faut l'avoir fait exprès

Il faut aussi installer des signatures DKIM en sortant :

mail._domainkey.MONDOMAINE.	IN TXT    ( "v=DKIM1;t=s;k=rsa; p=clepublic" )
  • on aurait pu avoir glustork à la place comme selecteur ! C'est aussi le principe d'avoir X domaines et X sélecteur pour avoir des clés de chiffrement différentes
glustork._domainkey.MONDOMAINE.	IN TXT    ( "v=DKIM1;t=s;k=rsa; p=clepublic" )
  • des outis pour vérifier les DNS existent sur le Web (ici, , ...)
  • mais un petit DIG suffit aussi :
dig mail._domainkey.<domaine>.fr TXT @dnsserver.com

 

Postfix sous debian en multidomaines

Rédigé par gorki Aucun commentaire

Le problème :

Comme d'autres, installer un serveur de mail sous une Debian.

En multidomaines.

Avec plusieurs serveurs de mails.

Solution :

Il y a d'excellent tutos sur Internet qui m'ont ammené quasiment la solution sur un plateau :

Solution générale :

  1. postfix (SMTP + STARTTLS only)
  2. délégation d'authentification à dovecot via SASL
  3. dovecot pour IMAP + POP (en STARTTLS only aussi)
  4. base de données pour les domaines multiples  via postfixadmin

Quelques notes sur les difficultés que j'ai rencontré :

  • une architecture de postfix : http://loic.marrot.free.fr/travaux/rapportProjetMessagerie.html
  • Un peu de vocabulaire sur les protocoles :
    • SMTP : pour envoyer des mails à un serveur de mail (depuis un client mail ou entre les serveurs de mails)
    • POP : du client mail au serveur mail pour aller récupérer ses mails
    • IMAP : idem que POP, mais il y a un échange pour synchroniser l'état du client et du serveur. Ainsi on peut avoir la même vision de ses mails depuis plusieurs endroits
    • SASL : protocole pour déléguer l'authentificaiton à un tiers. Exemple ici, postfix se base sur Dovecot pour savoir si un utilisateur est connu ou non. Entre Postfix et Dovecot, on fait du SASL
    • STARTTLS : afin de sécuriser les échanges par défaut non chiffré des différents protocoles (POP, IMAP, SMTP), on peut démarrer une session sécurisé à partir d'une connexion non sécurisée à la base. On démarre le TLS (sucesseur de SSL) : STARTTLS.
    • IMAPS, POPS : variante de POP et IMAP directement en TLS, mais peu usité, au profit du STARTTLS
    • Pour chacun de ces protocoles, il y a des ports par défaut que l'on retrouve dans /etc/services
  • Il est possible d'ajouter des logs en ajoutant "-v" aux différents démons postfix (cf la documentation officielle)
  • Le hostname de la machine et le DNS doivent être cohérent ! (cf hostame & postfix)
  • Posftixadmin & Thunderbird portable sont bien pratique pour tester des clients mails
  • Multiple domaines :
    • mydestination ne doit pas contenir les hosts virtuels stockés en BDD Mysql (voir virtual_mailbox_domains)
  • Pour le lien avec Dovecot
    • J'ai ajouté une ligne dans /etc/postfix/master.cf, comme indiqué dans certains tutoriaux plus haut
    • Je n'ai pas activé l'option #  -o smtpd_sasl_type=dovecot sur submission dans master.cf mais ajouté ces options dans main.cf
# SASL SMTPS
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
  • Bien valider l'authentification
    • pour Dovecot, utiliser le paramètre "ssl=required"
    • le paramètre smtpd_tls_auth_only peut-être mis à "no" le temps des tests, le mettre à "yes" ensuite
    • pour tester l'authentification (extrait d'ici) :
perl -MMIME::Base64 -e 'print encode_base64("username\0username\0password");'
  • swaks est outil super ! mais il ne faut oublier de préciser le serveur smtp (sinon il s'adresse directement au MX du domaine ciblé et ne passe pas par votre serveur !)
echo "This is the message body" | swaks --to web-4pDEEq@mail-tester.com --from "www-data@test.fr" --server localhost 25

Ca a suffit pour envoyer / recevoir des mails en TLS sur des noms de domaines que je maitrisais.

Pour ne pas être considéré comme spammeur, ce fut une autre histoire !

Fil RSS des articles de ce mot clé