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
/usr/lib/mailman/mail/mailman
. - Mailman marks writes to
vette
logfile (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
vette
logfile (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.
smtp
logfile updated with number of recipients and time for completionpost
logfile updated with list name, message ID, and "success".
Background
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=AVC
are being recorded. Furthermore, usingsetenforce 0
doesn't fix the problem.
I found one related post on the Mailman users list, but no solution was provided.