Au-dessus dans le fil de ce commentaire :
Envois d'email
Ce script semble sympa mais...
Posté parsebastienle
26/02/2005 22:32
...il y a toujours un *mais*.
Si je veux envoyer directement mes emails en passant par un serveur smtp distant, je me retrouve avec une erreur de connexion de socket
<code>
% python mail.py
Traceback (most recent call last):
File "mail.py", line 21, in ?
'sebastien@cheminel.com')
File "mail.py", line 14, in send
server = smtplib.SMTP('smtp.free.fr') # objet serveur
File "/usr/lib/python2.3/smtplib.py", line 254, in __init__
addr = socket.gethostbyname(socket.gethostname())
socket.gaierror: (-2, 'Name or service not known')
</code>
Une courte recherche sur internet me renvoi vers des explications sur /etc/resolv.conf ce qui me chagrine beaucoup. Comment avoir accès à de tel fichier sur un serveur mutualisé. C'est impossible.
Ma question est donc : est-ce un problème de python (qui m'échappe) ? Ou est-ce un problème de résolution DNS propre à ma machine (je n'ai aucun problème par ailleurs) ?
Ce tutorial vise un but très intéressant mais comment le mettre en pratique hors localhost ?
Je n'en suis qu'au début de mes recherches sur ce problème et dès que j'ai trouvé une solution (si personne ne m'en apporte ici :) je vous en fait part.
Mets l'ip au lieu du FQDN
Posté parlsteple
28/02/2005 09:59
[quote]server = smtplib.SMTP('smtp.free.fr') # objet serveur
File "/usr/lib/python2.3/smtplib.py", line 254, in __init__
addr = socket.gethostbyname(socket.gethostname())
socket.gaierror: (-2, 'Name or service not known') [/quote]
Si ton problème est que tu n'as pas de /etc/resolv.conf, cela veut dire que ta machine ne peut pas convertir les adresses DNS -> IP. Donc, à priori, tu devrais pouvoir t'en sortir en mettant l'adresse IP de smtp.free.fr au lieu de 'smtp.free.fr'.
smtp.free.fr a plusieurs IP (pour la repartition de charge). Essayes 213.228.0.44.
Précisions
Posté parjkermabole
28/02/2005 22:06
Salut
Il s'agit effectivement normalement d'une erreur de résolution de nom.
Pour t'aider il faudrait :
1) le contenu de ton /etc/nsswitch.conf
2) le contenu de ton /etc/resolv.conf
3) le contenu de ton /etc/hosts
4) la sortie de la commande "hostname"
5) la sortie de la commande "dig `hostname`"
6) la sortie de "dig smtp.free.fr"
Aprés tout ça on y verra plus clair déjà. Sinon effectivement tu peux mettre l'adresse IP en dur mais bon, intellectuellement ce n'est pas trés satisfaisant non ?
Si je veux envoyer directement mes emails en passant par un serveur smtp distant, je me retrouve avec une erreur de connexion de socket
<code>
% python mail.py
Traceback (most recent call last):
File "mail.py", line 21, in ?
'sebastien@cheminel.com')
File "mail.py", line 14, in send
server = smtplib.SMTP('smtp.free.fr') # objet serveur
File "/usr/lib/python2.3/smtplib.py", line 254, in __init__
addr = socket.gethostbyname(socket.gethostname())
socket.gaierror: (-2, 'Name or service not known')
</code>
Une courte recherche sur internet me renvoi vers des explications sur /etc/resolv.conf ce qui me chagrine beaucoup. Comment avoir accès à de tel fichier sur un serveur mutualisé. C'est impossible.
Ma question est donc : est-ce un problème de python (qui m'échappe) ? Ou est-ce un problème de résolution DNS propre à ma machine (je n'ai aucun problème par ailleurs) ?
Ce tutorial vise un but très intéressant mais comment le mettre en pratique hors localhost ?
Je n'en suis qu'au début de mes recherches sur ce problème et dès que j'ai trouvé une solution (si personne ne m'en apporte ici :) je vous en fait part.
File "/usr/lib/python2.3/smtplib.py", line 254, in __init__
addr = socket.gethostbyname(socket.gethostname())
socket.gaierror: (-2, 'Name or service not known') [/quote]
Si ton problème est que tu n'as pas de /etc/resolv.conf, cela veut dire que ta machine ne peut pas convertir les adresses DNS -> IP. Donc, à priori, tu devrais pouvoir t'en sortir en mettant l'adresse IP de smtp.free.fr au lieu de 'smtp.free.fr'.
smtp.free.fr a plusieurs IP (pour la repartition de charge). Essayes 213.228.0.44.
Il s'agit effectivement normalement d'une erreur de résolution de nom.
Pour t'aider il faudrait :
1) le contenu de ton /etc/nsswitch.conf
2) le contenu de ton /etc/resolv.conf
3) le contenu de ton /etc/hosts
4) la sortie de la commande "hostname"
5) la sortie de la commande "dig `hostname`"
6) la sortie de "dig smtp.free.fr"
Aprés tout ça on y verra plus clair déjà. Sinon effectivement tu peux mettre l'adresse IP en dur mais bon, intellectuellement ce n'est pas trés satisfaisant non ?
Joël