Ceci est une ancienne révision du document !
Table des matières
Relais d'un mail depuis un serveur vers votre serveur mail
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.
Dans l'interface, choisir:
- Internet Site
- le nom de votre domaine, ex. "tecrd.com"
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
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 sur un autre port, et vers le serveur cible non bridé. Ce dernier va alors rediriger ce traffic entrant vers le port 587 standard.
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
Vérifiez déjà que vous n'etes pas bloqué en sortie sur le serveur relai
:
> ssh $relai (...) > 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. root@tecrd.com:~ 08:57:36 (504)
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 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!