LXC Debian : redirection des mails vers un serveur smtp

Bonjour,

J’ai installé LXC pour faire de la virtualisation en séparant le service web, DNS et mail. Je me suis bien sorti jusqu’à présent, mais je bloque sur l’envoi de mails depuis les vms.

Le contexte :
Vm1 = serveur web nginx (ip : 192.168.22.2)
Vm2 = serveur mail postfix (ip : 192.168.22.3)

Ce que je veux faire c’est permettre à la vm1 d’envoyer de mails y compris via php, en utilisant postfix de la vm2.

Comment je pourrais faire ça ?

Merci à vous pour votre aide.

Tu peux faire cela en installant le paquet [mono]ssmtp[/mono] sur vm1 et en configurant vm2 comme le mailhub/smarthost dans le fichier de configuration de ssmtp.
Ssmtp, lors de l’installation, demandera de supprimer postfix, exim ou tout autre concurrent qui serait déjà installé et mettra en place sa propre version de la commande [mono]sendmail[/mono] pour les envois depuis le php.

Il faudra bien évidement que postfix, sur vm2, accepte sans rechigner les connexions depuis vm1 et les gère correctement. Là, il y a un peu de paramétrage à faire mais rien qui ne soit impossible.


AnonymousCoward

[quote=“AnonymousCoward”]Tu peux faire cela en installant le paquet [mono]ssmtp[/mono] sur vm1 et en configurant vm2 comme le mailhub/smarthost dans le fichier de configuration de ssmtp.
Ssmtp, lors de l’installation, demandera de supprimer postfix, exim ou tout autre concurrent qui serait déjà installé et mettra en place sa propre version de la commande [mono]sendmail[/mono] pour les envois depuis le php.

Il faudra bien évidement que postfix, sur vm2, accepte sans rechigner les connexions depuis vm1 et les gère correctement. Là, il y a un peu de paramétrage à faire mais rien qui ne soit impossible.


AnonymousCoward[/quote]
Merci pour ta réponse.

J’ai fais comme tu as dis, j’ai installé ssmtp sur la vm1, qui a viré les autres serveurs mails. j’ai mis ceci dans le fichier de config ssmtp de la vm1:

[code]root@ct3-test:~# cat /etc/ssmtp/ssmtp.conf

Config file for sSMTP sendmail

The person who gets all mail for userids < 1000

Make this empty to disable rewriting.

root=postmaster

The place where the mail goes. The actual machine name is required no

MX records are consulted. Commonly mailhosts are named mail.domain.com

#mailhub=mail
mailhub=192.168.11.5:25

Where will the mail seem to come from?

#rewriteDomain=

The full hostname

hostname=localhost

Are users allowed to set their own From: address?

YES - Allow the user to specify their own From: address

NO - Use the system generated From: address

#FromLineOverride=YES
[/code]

192.168.11.5 = la vraie adresse de la vm2 (serveur mail, postfix).

Mais ça ne marche pas. Quand je veux envoyer un mail depuis la vm1, j’ai ce message d’erreur :

Il faut utiliser la commande [mono]ssmtp[/mono] à la place de la commande [mono]mail[/mono]. sending-email-from-your-system-with-ssmtp

Si tu préfère, tu peux créer un lien symbolique qui s’appellerait mail et qui pointerait vers ssmtp. En tant que root : [mono]ln -s /usr/sbin/ssmtp /usr/bin/mail[/mono].


AnonymousCoward

Personnellement j’aime autant un postfix (ou même exim de base), c’est un poil plus lourd en mémoire que ssmtp mais bien plus simple et rapide à configurer (assistant graphique avec dpkg-reconfigure)

Le principe étant le même : déclarer le serveur de mail comme smarthost (système “satellite”) lors de la configuration sur les VM, et autoriser la réception de mails en provenance des machines du réseau local (ici tes VMs en l’occurence), dans la configuration du serveur de mail.

Merci pour cette précision.

En revanche quand je veux envoyer des mails via php (mail()), ça bloque :

C’est peut-être iptables ou postfix qui n’est pas configuré pour recevoir les mail de la vm 1?

Règles iptables pour la vm2 (postfix) :

[code] # ct4-mail : Configuration NAT
iptables -A FORWARD -s 192.168.11.5 -j ACCEPT
iptables -A FORWARD -d 192.168.11.5 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.11.5 -j SNAT --to 5.xxx.xxx.xx
#iptables -t nat -I PREROUTING -p tcp -d 5.xxx.xxx.xx --dport 80 -j DNAT --to 192.168.11.5:80
iptables -I FORWARD -p tcp -d 192.168.11.5 --dport 80
# ct4-mail : Autoriser SSH
#iptables -t nat -I PREROUTING -p tcp -d 5.xxx.xxx.xx --dport 1237 -j DNAT --to 192.168.11.5
#iptables -I FORWARD -p tcp -d 192.168.11.5 --dport 1237

# evoi de mail, etc.
#iptables -t nat -I PREROUTING -p tcp -d 5.xxx.xxx.xx --dport 25  -j DNAT --to-destination 192.168.11.4

# ct4-mail : Mail SMTP:25 (Protocole d'envoi d'e-mails)
iptables -t filter -A INPUT -p tcp --dport 25 -s 192.168.11.5 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 25 -s 192.168.11.5 -j ACCEPT[/code]

[quote=“agentsteel”]Personnellement j’aime autant un postfix (ou même exim de base), c’est un poil plus lourd en mémoire que ssmtp mais bien plus simple et rapide à configurer (assistant graphique avec dpkg-reconfigure)

Le principe étant le même : déclarer le serveur de mail comme smarthost (système “satellite”) lors de la configuration sur les VM, et autoriser la réception de mails en provenance des machines du réseau local (ici tes VMs en l’occurence), dans la configuration du serveur de mail.[/quote]
Effectivement c’est tellement plus facile avec postfix ! J’ai installé postfix sur la vm1 (système “satellite”), l’envoi de mails marche avec php, par contre iptables me bloque l’envoi… Avez-vous idée pour les règles à mettre en place ?

[quote=“Jesski”]quand je veux envoyer des mails via php (mail()), ça bloque :

La partie [mono]554 5.7.1 xxxxxx@gmail.com: Relay access denied[/mono] est la réponse du postfix de vm2. Ce n’est donc pas netfilter/iptables qui bloque.

A partir de là, tu peux étudier les logs des postfixs sur les VMs, les fichiers [mono]/var/log/mail.log[/mono] . Tu peux aussi voir le contenu de la queue postfix avec [mono]mailq[/mono].

Et si tu installe le génialissime logiciel swaks sur vm1, tu peux aussi obtenir plein de croustillants détails avec une commande telle que [mono]swaks --server vm2.mondomaine.org --from ‘root@vm1.mondomaine.org’ --to ‘moi@gmail.com’ --auth LOGIN --auth-user moi --auth-password motdepasse[/mono] (exemple à adapter, évidement).


AnonymousCoward

Bonsoir,

Merci pour votre aide. J’ai finalement trouvé pourquoi postfix n’acceptait pas le relais, il suffisait de d’ajouter l’adresse de la vm et celle du serveur dans “mynetworks”.