I run a medium-sized Mailman system that recently developed a problem where any messages that pass through moderation disappear instead of being delivered to the mailing list. This is affecting every one of our mailing lists.
Moderation fails when performed on a separate webserver
The Mailman environment is split across two servers, front-end and back-end. The back-end server handles Postfix and the Mailman qrunners, while the front-end server hosts Apache and the Mailman CGI scripts for moderating lists. The two servers share an NFS mount between them that includes all the shared Mailman data.
All normaly mail flow is working correctly, but when a list moderator logs into the web frontend and approves a message, it disappears without a trace.
- Postfix smtpd receives the incoming message over SMTP, then
- Postfix smtpd delivers the message to
- Mailman marks writes to
vettelogfile (backend server) that message is held for approval.
- List moderator uses CGI web interface to mark the message as approved.
- Mailman writes an entry to
vettelogfile (on frontend server) saying held message approved.
At this point, the .pck file related to the held message disappears, but nothing is delivered, and no further log entries are created.
Moderation succeeds with web interface on the main Mailman server
Although we don't normally run the Mailman web interface on the back-end server (to reduce attack surface), I got it running for testing purposes. When we use the Mailman web interface on the backend server, the message gets delivered normally and we see these log entries.
smtplogfile updated with number of recipients and time for completion
postlogfile updated with list name, message ID, and "success".
The problem started after migrating the Mailman environment to new servers. It didn't crop up on it's own, it's most likely a result of some configuration error that we haven't caught yet. We're using:
- Scientific Linux 6.3 on both servers
- Python 2.6.6 on both servers
- Mailman 2.1.12 installed from OS packages on both servers
- selinux in Permissive mode on backend server
- selinux in Enforcing mode on frontend (web) server, but no log entries with
type=AVCare being recorded. Furthermore, using
setenforce 0doesn't fix the problem.
I found one related post on the Mailman users list, but no solution was provided.