Hi
After being a happy user of zmailer for a long time, we decided to move our 
newsletter mailings to OpenSMTD. Zmailer was great when it was written and had 
some great features but has not been updated in a long time. The architecture 
of OpenSMTPD is very similar to Zmailer.

We send a lot of newsletters to mail systems like GMail, Hotmail and Yahoo etc 
but Hotmail and Yahoo provide particular problems. As such we have been playing 
with some of the obscure options which only seem to get mentioned in limits.c 
e.g.

limit mta for domain hotmail.com inet4 session-mail-max 10 max-conn-per-host 40 
max-conn-per-route 20 max-conn-per-source 200 max-conn-per-connector 40 
max-conn-per-relay 400 max-conn-per-domain 400 session-transaction-delay 0

I am completely sure we have not got the right set of options but I am not 
completely sure the options we need exist. Before we started trying to make the 
change, we wanted to check we were doing the right thing.

The problem to be solved is how these services create temporary failures -- 
this is the service telling you to go away and then seeing when you come back. 
For example, Hotmail and others will start producing temporary failures which 
is a hint to slow down or stop. It seems to me that OpenSMTPD doesn't take the 
hint but keeps trying other messages from the queue. At this point, Hotmail 
then thinks you are a 'bot' and characterises you as such in their SNDS service.

Similarly Yahoo and others will stop accepting connections if they think you 
are sending too many messages. At this point, OpenSMTPD backs away and the 
quadratic back off cuts in which increases the retry time. Unfortunately these 
services will accept messages in a finite time.

To get round these problems, we have been playing with 'smtpctl schedule' and 
restarting the server. In particular, with Yahoo we can see this behaviour:

* messages not being delivered;
* schedule the messages -- still not being delivered;
* stop and start the daemon;
* schedule the messages and they are delivered;

A few other observations:

* we use a config line like this to handle returns:

accept from any for domain "domain.com" virtual { "@" => nobody } deliver to 
mda "mail-handler.pl"

Mapping all virtual addresses to the user nobody took us a few minutes to find. 
What would be useful (but probably only to us) would be to have a regexp to 
define the email addresses. This is because there are a lot of envelope 
addresses which are in a standard form and a few recipients. We could use the 
MySQL table option but that might be overkill.

* it might also be useful to allow wildcards in 'limit mta domain hotmail.com' 
as there are many hotmails etc.

Any help, gratefully received -- particularly if it stops me from having to 
dive further into the code!

Best
Simon


--
You received this mail because you are subscribed to [email protected]
To unsubscribe, send a mail to: [email protected]

Reply via email to