471,348 Members | 1,954 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,348 software developers and data experts.

Socket - gaierror

Hi all,

I'm having trouble with the socket module resolving a hostname. It
seems like this is a system level problem, but I'm not even sure where
to start. I can ping the smtp server by name and IP, but when
smtp.SMTP("theHost") tries to get the hostname, it keeps giving me the
following error:

File "bin/program.py", line 123, in notify
smtp = smtplib.SMTP("theHost")

File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())

gaierror: (-2, 'Name or service not known')

I tried changing to a different smtp server, using an ip instead of a
host name. I could ping both boxes by name oor IP.

any ideas?

~Sean

Aug 27 '07 #1
8 13326
ha**********@gmail.com wrote:
Hi all,

I'm having trouble with the socket module resolving a hostname. It
seems like this is a system level problem, but I'm not even sure where
to start. I can ping the smtp server by name and IP, but when
smtp.SMTP("theHost") tries to get the hostname, it keeps giving me the
following error:

File "bin/program.py", line 123, in notify
smtp = smtplib.SMTP("theHost")

File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())

gaierror: (-2, 'Name or service not known')

I tried changing to a different smtp server, using an ip instead of a
host name. I could ping both boxes by name oor IP.

any ideas?

~Sean
The specific error shown is a DNS resolution problem. Based on the
URL "theHost" smtplib can't resolve to an IP address (which is what
socket.gethostbyname does). You don't say what happened when you changed to ip,
but I suspect it is a different error or some other problem. Maybe a firewall
issue (port 25 not open?), but I'm just guessing.

-Larry
Aug 27 '07 #2
On Aug 27, 12:32 pm, Larry Bates <larry.ba...@websafe.comwrote:
half.ital...@gmail.com wrote:
Hi all,
I'm having trouble with the socket module resolving a hostname. It
seems like this is a system level problem, but I'm not even sure where
to start. I can ping the smtp server by name and IP, but when
smtp.SMTP("theHost") tries to get the hostname, it keeps giving me the
following error:
File "bin/program.py", line 123, in notify
smtp = smtplib.SMTP("theHost")
File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())
gaierror: (-2, 'Name or service not known')
I tried changing to a different smtp server, using an ip instead of a
host name. I could ping both boxes by name oor IP.
any ideas?
~Sean

The specific error shown is a DNS resolution problem. Based on the
URL "theHost" smtplib can't resolve to an IP address (which is what
socket.gethostbyname does). You don't say what happened when you changed to ip,
but I suspect it is a different error or some other problem. Maybe a firewall
issue (port 25 not open?), but I'm just guessing.

-Larry
Changing it to IP gives me the same exact error...

File "bin/prgram.py", line 123, in notify
smtp = smtplib.SMTP("XXX.XXX.XXX.XXX")

File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())

gaierror: (-2, 'Name or service not known')

Looks like the smtp port is closed on the client machine...doh Should
have gotten to that!

Thank you.

~Sean

Aug 27 '07 #3
On Aug 27, 12:47 pm, half.ital...@gmail.com wrote:
On Aug 27, 12:32 pm, Larry Bates <larry.ba...@websafe.comwrote:
half.ital...@gmail.com wrote:
Hi all,
I'm having trouble with the socket module resolving a hostname. It
seems like this is a system level problem, but I'm not even sure where
to start. I can ping the smtp server by name and IP, but when
smtp.SMTP("theHost") tries to get the hostname, it keeps giving me the
following error:
File "bin/program.py", line 123, in notify
smtp = smtplib.SMTP("theHost")
File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())
gaierror: (-2, 'Name or service not known')
I tried changing to a different smtp server, using an ip instead of a
host name. I could ping both boxes by name oor IP.
any ideas?
~Sean
The specific error shown is a DNS resolution problem. Based on the
URL "theHost" smtplib can't resolve to an IP address (which is what
socket.gethostbyname does). You don't say what happened when you changed to ip,
but I suspect it is a different error or some other problem. Maybe a firewall
issue (port 25 not open?), but I'm just guessing.
-Larry

Changing it to IP gives me the same exact error...

File "bin/prgram.py", line 123, in notify
smtp = smtplib.SMTP("XXX.XXX.XXX.XXX")

File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())

gaierror: (-2, 'Name or service not known')

Looks like the smtp port is closed on the client machine...doh Should
have gotten to that!

Thank you.

~Sean
I take it back, that wasn't the solution. I got it to work by
haacking smtplib with a static host instead of the
socket.gethostbyname(socket.gethostname()) call...but if I leave that
in there I might get shot one day. What could cause the shell to be
able to resolve the addresses properly, but not python?
nnsswitch.conf ?

I don't know enough about what's going on in the background. Any
other ideas? Or should I try this on a unix board?

~Sean

Aug 27 '07 #4
In message <11**********************@q5g2000prf.googlegroups. com>,
ha**********@gmail.com wrote:
What could cause the shell to be
able to resolve the addresses properly, but not python?
nnsswitch.conf ?
How did you test the name resolution in the shell--was it with "host"
or "ping"? I would recommend ping, because that would use the same C
runtime gethostbyname call that your Python code is trying to use.
Aug 27 '07 #5
In article <11**********************@i13g2000prf.googlegroups .com>,
ha**********@gmail.com writes:
On Aug 27, 12:32 pm, Larry Bates <larry.ba...@websafe.comwrote:

Changing it to IP gives me the same exact error...

File "bin/prgram.py", line 123, in notify
smtp = smtplib.SMTP("XXX.XXX.XXX.XXX")

File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())

gaierror: (-2, 'Name or service not known')

Looks like the smtp port is closed on the client machine...doh Should
have gotten to that!

~Sean
Note that the lookup is of your *local* system name
(socket.gethostname()). I suspect that the name of your client
system (the one running the python script) is not registered in
DNS.

Try ping'ing your own system and see if that resolves in DNS. In
UNIX/Linux you can use the hostname command; in any system you can
write a python script to print the result of socket.gethostname().

- dmw
--
.. Douglas Wells . Connection Technologies .
.. Internet: -sp9804- -at - contek.com- .
Aug 27 '07 #6
On Aug 27, 4:22 pm, s...@signature.invalid (Douglas Wells) wrote:
In article <1188244050.029920.314...@i13g2000prf.googlegroups .com>,

half.ital...@gmail.com writes:
On Aug 27, 12:32 pm, Larry Bates <larry.ba...@websafe.comwrote:
Changing it to IP gives me the same exact error...
File "bin/prgram.py", line 123, in notify
smtp = smtplib.SMTP("XXX.XXX.XXX.XXX")
File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())
gaierror: (-2, 'Name or service not known')
Looks like the smtp port is closed on the client machine...doh Should
have gotten to that!
~Sean

Note that the lookup is of your *local* system name
(socket.gethostname()). I suspect that the name of your client
system (the one running the python script) is not registered in
DNS.

Try ping'ing your own system and see if that resolves in DNS. In
UNIX/Linux you can use the hostname command; in any system you can
write a python script to print the result of socket.gethostname().

- dmw

--
. Douglas Wells . Connection Technologies .
. Internet: -sp9804- -at - contek.com- .
I found a solution...but still not sure why that happened.

root@00:17:08:5E:EF:0F:/usr/local/sw/program/bin# hostname
00:17:08:5E:EF:0F
root@00:17:08:5E:EF:0F:/usr/local/sw/program/bin# ping 00:17:08:5E:EF:
0F
ping: unknown host 00:17:08:5E:EF:0F
>>socket.gethostname()
'00:17:08:5E:EF:0F'

Workaround: pass the 'local_hostname' arg to the smtplib.SMTP() call
with "localhost"

ie smtp.SMTP("some.computer", local_hostname="localhost")

This is just overriding the socket.gethostname() call entirely.

Did a bit of testing with the /etc/hosts file, and even with an entry
to the hostname it can't resolve the ip.
The problem is the name "00:17:08:5E:EF:0F" PS. I didn't choose to
set the hostname that way.

~Sean

Aug 28 '07 #7
ha**********@gmail.com wrote:
On Aug 27, 12:47 pm, half.ital...@gmail.com wrote:
>On Aug 27, 12:32 pm, Larry Bates <larry.ba...@websafe.comwrote:
>>half.ital...@gmail.com wrote:
Hi all,
I'm having trouble with the socket module resolving a hostname. It
seems like this is a system level problem, but I'm not even sure where
to start. I can ping the smtp server by name and IP, but when
smtp.SMTP("theHost") tries to get the hostname, it keeps giving me the
following error:
File "bin/program.py", line 123, in notify
smtp = smtplib.SMTP("theHost")
File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())
gaierror: (-2, 'Name or service not known')
I tried changing to a different smtp server, using an ip instead of a
host name. I could ping both boxes by name oor IP.
any ideas?
~Sean
The specific error shown is a DNS resolution problem. Based on the
URL "theHost" smtplib can't resolve to an IP address (which is what
socket.gethostbyname does). You don't say what happened when you changed to ip,
but I suspect it is a different error or some other problem. Maybe a firewall
issue (port 25 not open?), but I'm just guessing.
-Larry
Changing it to IP gives me the same exact error...

File "bin/prgram.py", line 123, in notify
smtp = smtplib.SMTP("XXX.XXX.XXX.XXX")

File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())

gaierror: (-2, 'Name or service not known')

Looks like the smtp port is closed on the client machine...doh Should
have gotten to that!

Thank you.

~Sean

I take it back, that wasn't the solution. I got it to work by
haacking smtplib with a static host instead of the
socket.gethostbyname(socket.gethostname()) call...but if I leave that
in there I might get shot one day. What could cause the shell to be
able to resolve the addresses properly, but not python?
nnsswitch.conf ?

I don't know enough about what's going on in the background. Any
other ideas? Or should I try this on a unix board?
Well the first thing to do is call socket.gethostname() and see what it
returns, then call socket.gethostbyname() on the result. Once you know
what's failing we might be able to help.

regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------

Aug 28 '07 #8
In article <11*********************@l22g2000prc.googlegroups. com>,
ha**********@gmail.com writes:
On Aug 27, 4:22 pm, s...@signature.invalid (Douglas Wells) wrote:
In article <1188244050.029920.314...@i13g2000prf.googlegroups .com>,

half.ital...@gmail.com writes:
On Aug 27, 12:32 pm, Larry Bates <larry.ba...@websafe.comwrote:
Changing it to IP gives me the same exact error...
File "bin/prgram.py", line 123, in notify
smtp = smtplib.SMTP("XXX.XXX.XXX.XXX")
File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())
gaierror: (-2, 'Name or service not known')
~Sean
Note that the lookup is of your *local* system name
(socket.gethostname()). I suspect that the name of your client
system (the one running the python script) is not registered in
DNS.

Try ping'ing your own system and see if that resolves in DNS. In
UNIX/Linux you can use the hostname command; in any system you can
write a python script to print the result of socket.gethostname().

- dmw

I found a solution...but still not sure why that happened.

root@00:17:08:5E:EF:0F:/usr/local/sw/program/bin# hostname
00:17:08:5E:EF:0F
root@00:17:08:5E:EF:0F:/usr/local/sw/program/bin# ping 00:17:08:5E:EF:0F
ping: unknown host 00:17:08:5E:EF:0F
>socket.gethostname()
'00:17:08:5E:EF:0F'

Workaround: pass the 'local_hostname' arg to the smtplib.SMTP() call
with "localhost"

ie smtp.SMTP("some.computer", local_hostname="localhost")

This is just overriding the socket.gethostname() call entirely.

Did a bit of testing with the /etc/hosts file, and even with an entry
to the hostname it can't resolve the ip.
The problem is the name "00:17:08:5E:EF:0F" PS. I didn't choose to
set the hostname that way.

~Sean
That would be a reasonable workaround. The process of sending
e-mail via SMTP could need the local host name for at least two
uses: 1) the SMTP initial connection (RFC 2821) requires the
client to identify itself (provide its host name); 2) the mail
headers (RFC 2822) should include a return address, which probably
defaults to using your user name at your client host name.

The hostname of your system (00:17:08:5E:EF:0F) is silly when used
with SMTP. Your system administrator is either ill-informed or is
actively trying to prevent users from using their systems as
servers. It has the form of an IPv6 numeric host address.

Given the pathnames in your command interchange, you have a UNIX,
Linux, or UNIX-like system. According to the Linux and UNIX standards:

- If your system is IPv6-capable, the use of such a name with
gethostbyname invokes "unspecified behavior." First, the function
is not defined to work with such "numeric" identifiers. Second,
it is not guaranteed to work with non-IPv4 names, and probably
can't be registered in pre-i18n DNS data bases.

- Even if your system is not IPv6-capable, such a host name is going
to confuse many other systems that would be IPv6-capable and attempt
to resolve the odd-ball name that your system provides.

- Even if that worked, you're providing an IPv6 name form in
conjunction with an IPv4 protocol (at least when you explicitly
provide the IP address as a dotted-quad).

- dmw

--
.. Douglas Wells . Connection Technologies .
.. Internet: -sp9804- -at - contek.com- .
Aug 28 '07 #9

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by Jacob Lee | last post: by
10 posts views Thread by Sheila King | last post: by
2 posts views Thread by spamsink42 | last post: by
8 posts views Thread by Mark Fink | last post: by
2 posts views Thread by flamesrock | last post: by
6 posts views Thread by Python Programming on Win32 | last post: by
1 post views Thread by Ronak mishra | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.