Re: REVISED: postfix/mimedefang socket
"Bill Cole" <[email protected]> Sun, 24 Sep 2017 13:22:53 -0400
| Newsgroups | gmane.mail.mimedefang |
|---|---|
| Message-ID | <[email protected]> |
On 23 Sep 2017, at 20:37, Michael Fox wrote: > Thanks Bill, > > After some more research I found the bug and I think I've "fixed" it. > See below. > >>> Option 1: Use inet socket >>> ------------------------------------------------ >>> /etc/default/mimedefang: >>> SOCKET=inet:8899@localhost >>> >>> /etc/postfix/main.cf >>> smtpd_milters = inet:localhost:8899 >>> >>> This works for Ubuntu 14.04/MIMEDefang 2.73. >>> But it fails with Ubuntu 16.04/MIMEDefang 2.78. If Postfix is >>> already >>> running, and MIMEDefang is restarted, I get the following in >>> /var/log/mail.err: >>> >>> mimedefang[27605]: MIMEDefang-2.78: Unable to bind to port >>> inet:8899@localhost: Address already in use >>> mimedefang[27605]: MIMEDefang-2.78: Unable to create listening >>> socket on conn inet:8899@localhost >> >> That's odd. Given your other options, I'd try to figure out what >> exactly >> is going on here and fix it. I.e. what process actually has taken >> that >> port. > > Yes, odd. > > I've continued to research and just found this, which is my problem. > > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=807078 > > The problem occurs for me in MIMEDefang 2.78 (package for Ubuntu > 16.04), which is the version reported in the above bug. Apparently, > the problem is that when using "systemctl restart mimedefang" it > doesn't wait for itself to completely stop before it tries to start > again. And I can confirm that. If I use "systemctl stop ...", then > wait for it to stop, then "systemctl start ...", then it works. I kinda wanted to blame the abomination of systemd and/or the Debian/Ubuntu packagers who regularly 'fix' things that are not broken but since I had nothing more solid than my own bile, I refrained... > The bug report says it's fixed in v2.79 and v2.79 is in the Ubuntu > 17.04 package. > According to > https://ubuntu.pkgs.org/17.04/ubuntu-universe-i386/mimedefang_2.79-2_i386.deb.html > , on 2016-12-23 the init stop action was changed to always wait. As the "restart" action has been in the distribution's included init scripts for as long as I've used MD (over a decade) and I suspect forever. There's no rationale I can think of to always wait on a 'stop' action but it isn't really harmful, beyond delaying shutdown for (normally) a few seconds. > So here's what I did to "fix" it in Ubuntu 16.04/MIMEDefang 2.78: > > In /etc/init.d/mimedefang, in the stop_it() function: > > # if [ "$1" = "wait" ] ; then > .... > # fi > > In other words, just comment out the conditional wait so that the > "waiting" part inside the IF statement always runs. > > When I tried to run systemctl restart mimedefang, I got: > Warning: mimedefang.service changed on disk. Run 'systemctl > daemon-reload' to reload units. > > So, I did that. And then: systemctl restart mimedefang seems to work > just fine. > > I'd appreciate it if any of the developers can verify that what I did > shouldn't cause some other unintended consequence. Dianne will likely give a definitive authoritative answer but having adapted the MD startup script to multiple system control environments, I don't see anything especially risky. The only potential issue I can think of is if you're trying to shut down or reboot in a pathological circumstance where the mimedefang.pl worker perl sub-processes refuse to exit and the supervisory process (e.g. init) has no last resort mechanism to arbitrarily slaughter hung children. There's nothing quite so annoying as a "hung going down" system. _______________________________________________ NOTE: If there is a disclaimer or other legal boilerplate in the above message, it is NULL AND VOID. You may ignore it. Visit http://www.mimedefang.org and http://www.roaringpenguin.com MIMEDefang mailing list [email protected] http://lists.roaringpenguin.com/mailman/listinfo/mimedefang