Table des matières

Relais d'un mail depuis un serveur vers votre serveur mail (pour mailinabox)

:!: :!: :!: TODO: cette page est "en travaux", tout ne fonctionne pas bien encore :!: :!: :!:

Outre la règle de pare feu à ajouter sur le serveur mailinbox, il faudra configurer le serveur d'émission du mail.

(doc tiers: ici ou , et spécialement pour mailinabox)

Installer postfix:

apt-get install postfix

Dans l'interface textuelle qui s'ouvre, choisir:

Puis éditer /etc/postfix/main.cf et changez les valeurs de

myhostname = tecrd.com
relayhost = [mx.tecrd.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Créez /etc/postfix/sasl_passwd avec ce contenu à adapter:

[mx.tecrd.com]:587 noreply@tecrd.com:xxxyyyzzz

Un peu de sécurité et on redémarre postfix:

chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
service postfix restart
service postfix status

On va maintenant vérifier l'envoi. Dans une console, afficher le log de mailinabox avec

ssh root@mx.tecrd.com tail -f /var/log/mail.log

Et dans une autre console logguée sur tecrd.com, on envoie un mail:

apt install mailutils
mail -s subject user@mondomaine.com
... (terminer avec Entrée + <control>-D)

Tunneling SSH pour la sortie SMTP

Mots-clés: port forwarding (NAT), relay, iptables, firewall

Tutoriel détaillé tiers ici

Si l'hébergeur de votre serveur bloque le port SMTP sortant, il ne vous sera pas possible d'envoyer des emails. Mais si vous détenez au moins un serveur qui n'est pas bridé, alors vous pouvez l'utiliser comme relai.

La source ne pouvant pas "sortir" en 587, elle va rediriger son propre traffic sortant vers un port non bloqué (ex. 58700) et vers le serveur mail ciblé. Le serveur mail va alors rediriger le traffic entrant du port 58700 vers son propre port local 587 standard, ce qui établira un relai pour le serveur source, et sans devoir impacter les configurations ni d'un coté (postfix) ni de l'autre (mailinabox).

Depuis votre poste client, identifiez vos deux serveurs avec nslookup mon.serveur.com ou ping -4 -c1 mon.serveur.com (prenez l'adresse IPv4).

Par exemple:

source=51.158.77.85
relai=163.172.183.26
port=58700

Source

Maintenent, sur le serveur source qui veut envoyer des mails, on programme la redirection du port local, vers la cible mais sur un port non bloqué:

iptables -t nat -A OUTPUT -p tcp --dport 587 -j DNAT --to-destination $cible:$port

Note: pour supprimmer cette entrée: iptables -t nat -L -n -v suivi de iptables -t nat -D OUTPUT <n> où n est le numéro de ligne de la règle.

Sur le serveur source on doit aussi activer la redirection de port. On peut tester temporairement avec echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward, mais pour l'activer de façon permanente il faut dé-commenter la ligne net.ipv4.ip_forward=1 dans le fichier /etc/sysctl.conf.

Relai

Du côté du serveur relai, on ajoute une règle de pare-feu dédiée, et généralement bridée au serveur source.

Ci-dessous, 10.5.82.219 est l'IP interne du serveur relai (cf. ifconfig):

iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 58700 -j DNAT --to-destination 10.5.82.219:587

Note: on a ici volontairement réduit la règle d'acceptation au serveur source afin d'éviter de fournir ce service utile aux spammeurs tiers!

Tester vos connexions

telnet permet de vérifier simplement si un serveur mail répond (les canaux sont ouverts), ainsi que de voir quels sont les protocoles supportés (ici STARTTLS).

Par exemple:

> telnet smtp.gmail.com 587
Trying 2a00:1450:400c:c0b::6c...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP w7sm1592536wmd.22 - gsmtp
> ehlo example.com
250-smtp.gmail.com at your service, [2001:bc8:4400:2800::4b1b]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
> quit
221 2.0.0 closing connection w7sm1592536wmd.22 - gsmtp
Connection closed by foreign host.