#1 Le 07/04/2014, à 22:52
- Tuxophile
[Résolu] [iptables] Utiliser un serveur mail distant
Bonjour à tous,
Je reviens vers vous pour un énième problème avec mes règles iptables.
J'ai un réseau local avec une passerelle qui fait routeur et firewall..
Sur l'un des clients de mon réseau, j'ai installé en localhost le CMS joomla pour développer un site internet.
Dans les configs du CMS j'ai configuré les options mails pour envoyer des Emails depuis le site localhost:
- Serveur de mail : SMTP
- Port SMTP : 465
- Serveur SMTP : mail.gandi.net
- Utilisateur : ********
- password : ******
Depuis mon site en localhost j'ai un message d'erreur "connexion SMTP impossible".
J'ai testé cette config sur un ordinateur en dehors de mon réseau, ça fonctionne sans problème.
C'est donc bien mon firewall qui bloque.
Sur la passerelle j'ai les règles suivantes:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 192.168.0.0/24 anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 192.168.0.0/24 anywhere
ACCEPT tcp -- anywhere 192.168.0.2 tcp dpt:ftp
ACCEPT tcp -- anywhere 192.168.0.2 tcp dpts:55536:55663
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain logdeny (0 references)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning prefix "PYX-firewall:"
DROP all -- anywhere anywhere
Mon interprétation du problème:
J'ai un poste client de mon réseau qui cherche à communiquer sur le port 465 de la machine mail.gandi.net.
Il me faut donc lui ouvrir le port 465 sur la table FORWARD de la passerelle :
$IPTABLES -t filter -A FORWARD -p tcp --dport 465 -j ACCEPT
Maintenant, j'ai bien la règle suivante qui s'est ajouté à ma table FORWARD
ACCEPT tcp -- anywhere anywhere tcp dpt:ssmtp
Malheureusement l'envoi de mail ne fonctionne toujours pas.
Est ce que mon interprétation du pb est mauvaise? Qu'en pensez vous?
Merci pour votre aide
Dernière modification par Tuxophile (Le 08/04/2014, à 16:53)
Hors ligne
#2 Le 07/04/2014, à 23:26
- Zakhar
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Ce que tu cherches à faire n'est pas très clair.
Une fois que tu auras mieux posé le problème... je suis quasi sûr que tu auras trouvé la solution toi même parce que ça va devenir évident !
Par contre, est-ce que je fais une erreur... mais tes règles FORWARD finissant par un ACCEPT all / anywhere / anywhere ... les règles ACCEPT qui précèdent ne servent à rien, pas plus que la policy DROP par défaut puisqu'elle ne sera jamais atteinte.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#3 Le 07/04/2014, à 23:49
- compte supprimé
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Ce me semble correct à première vu, malgré que j'aurai vu cette règle dans INPUT et non FORWARD. Ceci dit, si ce que je viens de dire est bancal et que tu le sais déjà, il faudrait t'intéresser sur (le) ou les autres pares-feu d'installé(s) entre ton réseau local et l'internet. Aussi le port SMTP 465 est un port sécurisé(SSL), le port SMTP 25(sans ahtentification ou 587 avec authentification) pourrait prendre le relais en attendant non ? Voir ici ce qu'ils disent sur les ports smtp 25 et 587 et leurs dérivés : https://fr.wikipedia.org/wiki/Simple_Ma … r_Protocol
A ce lien au dessus, voir l'encadré appelé et titré "Principes d'envoi"
Dernière modification par -pascal34- (Le 07/04/2014, à 23:51)
#4 Le 08/04/2014, à 00:02
- compte supprimé
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Je vois que tu as aussi ça dans INPUT :
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
Tu peux pas y faire une règle qui dirait ça en gros :
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
Faire ça sans faire ce que j'ai dit dans mon tout premier message de ta discussion au dessus of course !
#5 Le 08/04/2014, à 08:20
- tiramiseb
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Salut,
Commençons par le commencement...
Si tu tentes une connexion avec telnet sur le port en question, ça passe ou ça ne passe pas ?
À partir du client en question :
telnet mail.gandi.net 465
Ça dit connexion refusée ou autre chose ?
Si ça ne rend pas la main, c'est que ton problème est ailleurs : tu es connecté.
Si ça rend la main avec une erreur de connexion, tu peux ajouter ce qui va bien pour logger les blocages et ensuite tu devrais avoir une trace dans les logs de la passerelle pour voir dans quel contexte c'est bloqué.
-----
Maintenant, pour réagir sur les autres réponses...
tes règles FORWARD finissant par un ACCEPT all / anywhere / anywhere ... les règles ACCEPT qui précèdent ne servent à rien, pas plus que la policy DROP par défaut puisqu'elle ne sera jamais atteinte.
Ça dépend, il n'a pas fait ça en mode verbose. Il y a pas mal d'éléments qu'on ne voit pas sur une sortie simple. Pour être sûr que tu es dans le vrai, il faudrait le retour de :
sudo iptables -vnL
Donc à ça je répondrais : ptet ben qu'oui, ptet ben qu'non.
j'aurai vu cette règle dans INPUT et non FORWARD
Bien sûr que non ! Il n'essaie pas de se connecter à sa passerelle, il essaie de se connecter à un serveur tiers, de l'autre côté de la passerelle, c'est donc bien une règle FORWARD.
-----
Par contre, ces règles me dérangent un peu car elles fonctionnent en "anywhere to anywhere". C'est toujours un peu difficile de travailler directement avec iptables.
Je te conseille d'installer Shorewall sur ta passerelle, ce serait plus efficace et plus simple à gérer (une fois le fonctionnement de Shorewall compris).
Si Shorewall t'intéresse et que tu veux une bonne doc, le prochain « Linux Pratique » contiendra un article à ce propos, écrit de ma main (enfin... de mes deux mains... sur mon clavier).
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 08/04/2014, à 08:59
- compte supprimé
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Mmmmm, ou alors mettre la ligne qui suit dans FORWARD ? (je tatonne hein, je ne suis pas encore un spécialiste, j'apprends ).
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
#7 Le 08/04/2014, à 09:02
- tiramiseb
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Non, car il ne veut pas se connecter au port SMTP (port 25), il veut accéder au port 465.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#8 Le 08/04/2014, à 11:34
- Tuxophile
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Bonjour et merci pour toutes vos réponses
À partir du client en question :
telnet mail.gandi.net 465
Ça dit connexion refusée ou autre chose ?
Si ça ne rend pas la main, c'est que ton problème est ailleurs : tu es connecté.
Si ça rend la main avec une erreur de connexion, tu peux ajouter ce qui va bien pour logger les blocages et ensuite tu devrais avoir une trace dans les logs de la passerelle pour voir dans quel contexte c'est bloqué.
Pour information mon client tourne sous windows 7. Après activation du protocole telnet, j'ai le résultat suivant:
Connecting To 465...Could not open connection to the host, on port mail.gandi.net: Connect failed
Zakhar a écrit :
tes règles FORWARD finissant par un ACCEPT all / anywhere / anywhere ... les règles ACCEPT qui précèdent ne servent à rien, pas plus que la policy DROP par défaut puisqu'elle ne sera jamais atteinte.
Ça dépend, il n'a pas fait ça en mode verbose. Il y a pas mal d'éléments qu'on ne voit pas sur une sortie simple.
En effet, je n'ai pas tout détaillé...
Voici un extrait de la réponse à un
sudo iptables -vnL
(Désolé pour la mise en forme)
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
128 31773 ACCEPT all -- bridge_local * 192.168.0.0/24 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:465
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.2 tcp dpt:21
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.2 tcp dpts:55536:55663
146 11762 ACCEPT all -- eth_adsl bridge_local 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- bridge_local eth_adsl 0.0.0.0/0 0.0.0.0/0
En théorie je ne devrai pas avoir besoin d'ouvrir le FORWARD sur le port 465...
Examinez les 2 dernières règles:
146 11762 ACCEPT all -- eth_adsl bridge_local 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- bridge_local eth_adsl 0.0.0.0/0 0.0.0.0/0
La 2ème accepte de "fowarder" toutes les connexions provenant du réseau local (interface:bridge_local) et à destination d'internet (interface:eth_adsl)
La 1ère accepte de "forwarder" (dans le sens internet vers réseau local) toutes les connexions déjà existante ayant été initialisée par un poste local.
Qu'est ce que vous en pensez?
Dernière modification par Tuxophile (Le 08/04/2014, à 11:37)
Hors ligne
#9 Le 08/04/2014, à 11:42
- tiramiseb
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Pour information mon client tourne sous windows 7. Après activation du protocole telnet, j'ai le résultat suivant:
Connecting To 465...Could not open connection to the host, on port mail.gandi.net: Connect failed
Tu as utilisé exactement la commande que j'ai donnée ? "telnet mail.gandi.net 465" ? Sous Windows, il faut séparer l'hôte du port avec un ":", donc :
telnet mail.gandi.net:465
En théorie je ne devrai pas avoir besoin d'ouvrir le FORWARD sur le port 465...
Je suis tout à fait d'accord.
C'est pour ça que le test avec telnet est important, pour mettre hors de cause le pare-feu (ou alors pour se creuser la tête longuement car là je ne vois pas pourquoi ça bloquerait).
La 2ème accepte de "fowarder" toutes les connexions provenant du réseau local (interface:bridge_local) et à destination d'internet (interface:eth_adsl)
La 1ère accepte de "forwarder" (dans le sens internet vers réseau local) toutes les connexions déjà existante ayant été initialisée par un poste local.Qu'est ce que vous en pensez?
C'est une bonne configuration.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#10 Le 08/04/2014, à 12:03
- Tuxophile
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Tu as utilisé exactement la commande que j'ai donnée ? "telnet mail.gandi.net 465" ? Sous Windows, il faut séparer l'hôte du port avec un ":", donc :
telnet mail.gandi.net:465
En effet le message semble plus logique mais il ya toujours un blocage:
Connecting To 465...Could not open connection to the host, on port 23: Connect failed
Je vais suivre ton conseil et regarder si c'est pas le firewall de windows 7 sur le poste local qui pose problème.
Edit : Après désactivation du firewall j'ai toujours le message d'erreur :
Connecting To 465...Could not open connection to the host, on port 23: Connect failed
Dernière modification par Tuxophile (Le 08/04/2014, à 12:08)
Hors ligne
#11 Le 08/04/2014, à 12:14
- tiramiseb
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Connecting To 465...Could not open connection to the host, on port 23: Connect failed
Là ta machine essaie de se connecter à une machine appelée "465", sur le port 23 (port par défaut de telnet).
C'est comme si tu avais simplement tapé :
telnet 465
Hum, ma mémoire me joue-t-elle des tours ? En cherchant sur Google je vois que même sur Windows c'est l'espace qui doit séparer le nom de l'hôte et le numéro de port.
Par exemple sur https://support.terranetwork.net/web/kn … ccess.html
Bon, là il s'agit d'un problème d'utilisation de la commande telnet sous Windows, je ne suis pas vraiment compétent pour t'aider comme ça "de tête"... Il faut trouver comment cette commande s'utilise sous Windows...
-----
Sinon, un truc vient de me passer par la tête, en relisant ton premier message : as-tu bien configuré Joomla pour utiliser le serveur SMTP avec SSL/TLS (SMTPS) ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#12 Le 08/04/2014, à 12:18
- Tuxophile
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Il faut trouver comment cette commande s'utilise sous Windows...
Ok, je vais creuser le sujet et je reviens vers toi
Edit: Enfait la commande exacte était bien
telnet mail.gandi.net 465
Après désactivation du firewall de windows, je crois comprendre que la connexion fonctionne.
Je n'ai plus la main et je suis devant un écran avec le caractère "_" clignotant.
Bon du coté de Joomla, j'ai toujours le même message d'erreur : "Impossible de connecter par SMTP"
Mais ça vient peut être d'une config au niveau du CMS. Je continue à creuser.
Dernière modification par Tuxophile (Le 08/04/2014, à 12:31)
Hors ligne
#13 Le 08/04/2014, à 12:38
- Tuxophile
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Comme expliqué dans mon post précédent, Je n'ai plus de message d'erreur.
Après avoir tapé la commande telnet, je me retrouve devant un écran avec le caractère "_" clignotant.
Passé un certain temps l'invite de commande réapparaît sans message particulier.
Est ce un comportement normal?
Dernière modification par Tuxophile (Le 08/04/2014, à 12:45)
Hors ligne
#14 Le 08/04/2014, à 12:46
- tiramiseb
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Après avoir tapé la commande telnet, je me retrouve devant un écran avec le caractère "_" clignotant.
Donc au niveau du réseau tout fonctionne bien.
telnet s'est connecté au port en question et attend soit que tu tapes des choses (qui seront envoyées au serveur distant) soit de recevoir des choses du serveur.
Je reviens donc à ma question en #11 à laquelle tu n'as pas répondu :
as-tu bien configuré Joomla pour utiliser le serveur SMTP avec SSL/TLS (SMTPS) ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#15 Le 08/04/2014, à 13:07
- Tuxophile
Re : [Résolu] [iptables] Utiliser un serveur mail distant
as-tu bien configuré Joomla pour utiliser le serveur SMTP avec SSL/TLS (SMTPS) ?
Affirmatif.
Voici la config joomla:
- Serveur de mail : SMTP
- Identification SMTP : Oui
- Sécurité SMTP : SSL
- Port SMTP : 465
- Serveur SMTP : mail.gandi.net
- Utilisateur : ********
- password : ******
Hors ligne
#16 Le 08/04/2014, à 13:15
- tiramiseb
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Mh... Là j'ai pas d'autre idée. Au niveau du pare-feu c'est ok si le telnet à partir de la machine sur laquelle est installé joomla fonctionne.
Et pour Joomla je n'y connais pas grand chose, le réglage que tu montres semble correct.
PS : Joomla sur Windows, tu aimes souffrir ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#17 Le 08/04/2014, à 13:25
- Tuxophile
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Mh... Là j'ai pas d'autre idée. Au niveau du pare-feu c'est ok si le telnet à partir de la machine sur laquelle est installé joomla fonctionne.
Et pour Joomla je n'y connais pas grand chose, le réglage que tu montres semble correct.
Oui je continue à investiguer et je te tiens au courant. Mille fois merci pour ton aide
PS : Joomla sur Windows, tu aimes souffrir ?
Et si je te dis que j'envisage une migration vers windows 8... ça répond à ta question sur mon coté un peu maso ;-).
Une chose est sure : la passerelle restera sous linux!
Dernière modification par Tuxophile (Le 08/04/2014, à 13:26)
Hors ligne
#18 Le 08/04/2014, à 13:28
- Zakhar
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Zakhar a écrit :tes règles FORWARD finissant par un ACCEPT all / anywhere / anywhere ... les règles ACCEPT qui précèdent ne servent à rien, pas plus que la policy DROP par défaut puisqu'elle ne sera jamais atteinte.
Ça dépend, il n'a pas fait ça en mode verbose. Il y a pas mal d'éléments qu'on ne voit pas sur une sortie simple. Pour être sûr que tu es dans le vrai, il faudrait le retour de :
sudo iptables -vnL
Oops oui ! Comme je mets toujours le -v dans mon listage d'iptables, je présumais qu'il y était.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#19 Le 08/04/2014, à 13:48
- tiramiseb
Re : [Résolu] [iptables] Utiliser un serveur mail distant
je présumais qu'il y était
Et tu n'as pas vu qu'il manquait des colonnes
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#20 Le 08/04/2014, à 16:51
- Tuxophile
Re : [Résolu] [iptables] Utiliser un serveur mail distant
Ok après désactivation du firewall sur le poste local, le problème venait en fait de mon serveur web WAMP qui tourne en localhost.
Il fallait activer l'extension "php_openssl.dll" dans le fichier php.ini pour gérer la com en SSL.
On est donc bien loin des règles iptables sur ma passerelle.
Merci beaucoup à tiramiseb pour son aide et sa patience
Hors ligne