Hi All,

I have a question about the correct way to restart a milter application.

I'm using postfix 2.6.6 with a milter application that was built using
sendmail's libmilter (8.14.7). The problem I'm having is when I need to
restart the milter application (due to a config change for example), I send
it a SIGTERM and then start it up again.

However, an smtpd instance that was running which was already connected to
milter will not try to connect to the milter after the milter has been
restarted. But when a new SMTP connection arrives from the client the new
smtpd will connect to the milter application and all processing works
correctly. Is this the expected behavior?  or have a missed something in
the configuration / or possibly in the code? (To debug, I'm just using the
sample that comes with sendmail). Is there a way to get smtpd to send
tempfail to client when milter is not there but once the milter starts up
and is listening again smtpd reconnects
and starts sending data to the milter.

(https://www.apt-browse.org/browse/debian/wheezy/main/all/
sendmail-base/8.14.4-4+deb7u1/file/usr/share/sendmail/
examples/milter/sample.c)

In main.cf I have:

milter_default_action = tempfail
smtpd_milters = inet:localhost:10025
milter_protocol = 2

tcpdump output shows:
localhost.45724 > localhost.10025: Flags [.], ack 89, win 33, length 0
localhost.10025 > localhost.45724: Flags [F.], seq 89, ack 588, win 36,
length 0             ==> milter application received SIGTERM
localhost.45724 > localhost.10025: Flags [.], ack 90, win 33, length 0
localhost.45724 > localhost.10025: Flags [P.], seq 588:733, ack 90, win 33,
length 145  ==> SMIFC_ABORT
localhost.10025 > localhost.45724: Flags [R], seq 1329360186, win 0, length
0              ==> Reset since milter application has restarted

Thanks,

Reply via email to