[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: smtpserver bind() query and logfile problems

Matti Aarnio wrote:

>On Tue, Jan 25, 2005 at 06:01:14PM +0000, Darryl L. Miles wrote:
>>I'm using the current CVS version of zmailer.
>>During startup of the SMTP server it always seems to try and bind to the 
>>same addresses twice, the 2nd attempt always fails:
>>00000000000#    000-setting up: bind(s=4, v4, addr='' port=25)
>>00000000000#    000-setting up: bind(s=6, v4, addr='' port=25)
>>00000000000#    000-bind(s=6, v4, port=25) failed; errno=Address already 
>>in use
>>00000000000#    000-setting up: bind(s=6, v4, addr='' port=465)
>>00000000000#    000-setting up: bind(s=7, v4, addr='' port=465)
>>00000000000#    000-bind(s=7, v4, port=465) failed; errno=Address 
>>already in use
>>00000000000#    000-started server pid 11196 at Sat, 22 Jan 2005 
>>16:14:11 +0000
>>Is this correct ?
>I am not entirely sure of why you see v4 address duplicates.
>  ...
>Aaahh...  I think you have:
>PARAM BindSmtp          any
>PARAM BindSmtpS         any
>or perhaps that older configuration style of:
>PARAM BindPort         25
>PARAM BindAddress   iface:eth0
>PARAM listen-ssmtp
My configuration (running on linux 2.6.x) is like:

PARAM BindSmtp [] 25
PARAM BindSmtpS [] 465
#PARAM listen-ssmtp

I have no IPV6 SMTP bound ports, mailq and sshd on the same host do bind 
to IPV6 any6 addresses ok.

If I put in an explicit IPV4 address I woudn't not expect it to be tried 
for IPV6, and vice-versa.  The sample IPV6 address syntax is [IPv6.0::0] 
with fullstop not the same as your email example [IPv6:::1] with colon.  
The 'any' or 'any6' syntax is not demonstrated in the stock smtpserver.conf.

Is there anyway the smtpserver config parsing could be improved it took 
me a while to figure out the IPs for the BindSmtp/BindSmtpS needed to be 
inside [ and ] there are no warning or error just unwanted behaviour by 
the daemon.

I'm not sure iface: syntax is really that useful in the real world.  
SMTP servers are specific named addresses due to relying on generally 
slow changing DNS entries, anyone wanting to use the interface address 
by interface name must be doing so because it changes and they don't 
know it to be able to configure it manually.  If the IP of the SMTP 
server changes it become difficult to use SMTP efficiently for mail (as 
without authentication, which all inbound uses your email maybe 
delivered to the wrong host, the one now using your old IP) and besides 
I don't think the zmailer smtpserver can be sent a signal to re-bind to 
our new interface address (in the sutation where it changes).  So I 
really don't understand the practical uses for it.  Sounds like good 
voodoo for the sake of voodoo.

I have added SPF support into this rebuild of zmailer, there is a 
duplicate section in the stock smtpserver.conf file, that maybe 
confusing to first timers.  On a technical note (I should start a new 
thread on this) I would also like to ability to promote ~all into -all 
for a white-list of domains I can set, or work it the other way and have 
another "spf-threshold" param for my local whitelist that I can set to 

>(as you get non "" address for binding) and the system
>is at first called to create IPv6 socket (which your runtime
>supports, but you don't tell to be ok with explicite 'any6'
>bound address) but the registered IP address is IPv4 one, and
>in such a case, the server socket creation does automagically
>translate the call to IPv4 binding..
> ..
>not anymore.
>The  'iface:' magic is problematic in IPv6 case.
>My code doesn't know how to extract correct IPv6 address in
>every case from system.  I think presently it doesn't even
>try...  Nor is it easy;  I do have code that can find addresses,
>but see an example from zmailer.org  machine:
>IPv4:       lo []
>IPv4:     eth0 []
>IPv6:       lo [IPv6:::1]
>IPv6:   dummy0 [IPv6:2001:14b8:10:1::1]
>IPv6:   dummy0 [IPv6:fe80::f843:29ff:fed2:ee82]
>IPv6:     eth0 [IPv6:fe80::250:8dff:fef1:9fa]
>IPv6:     sit1 [IPv6:fe80::3e4e:6043]
>IPv6:     sit2 [IPv6:fe80::3e4e:6043]
>IPv6:     sit3 [IPv6:2001:14b8:100:65::2]
>IPv6:     sit3 [IPv6:fe80::3e4e:6043]
>It really isn't all that trivial to know which address in given
>interface to use.  Especially as in my case the real answer is
>global scope  address of 'dummy0', not those link scope things
>on eth* or sit* interfaces.     Using 'any6' and 'any' are way
>simpler choices...

Darryl L. Miles
M: 07968 320 114

To unsubscribe from this list: send the line "unsubscribe zmailer" in
the body of a message to majordomo@nic.funet.fi