[Mailman-Users] My list members don't recive mail sent to thier list

Mark Sapiro msapiro at value.net
Fri Oct 14 03:06:04 CEST 2005


quiuqee at montevideo.com.uy wrote:
>
>When I send a message to listaquique at sempronlistas.com from a member through a
>mail client:
>1) Exim’s mainlog file says: “ 
 message-id => listaquique
><listaquique at semrponlistas.com> R=mailman_routter T= mailman_transport 
>

.Completed”).
>2) Mailman’s post log file says: “
.. (1502) post to listaquique from 
, size=
>
.., message-id=
.., success”
>3) Mailman’s smtp log file says:”
.smtp for 4 recips, completed in 10.029 seconds ”
>4) Mailman’s smtp-failure log file says: “SMTP session failure:501,
><listaquique-bounces at sempronlistas.com>: domain missing or malformed 
.”
>5) Nor exim’s mainlog nor exim’s reject log mention nothing about mailman trying
>to send the messages to the four members of the list
>6) Besides that, messages are correctly posted in the list’s archives (through
>the web)


The processing is getting all the way to SMTPDirect.py to send out the
posts. This says that Exim is properly configured to deliver incoming
mail to Mailman and Mailman's qrunners are running and processing the
queues. The problem is in sending outgoing mail via SMTP to the
outgoing MTA.


>It seems that mailman can’t send out the messages to the members of the list
>through exim. Furthermore, exim doesn’t even notice that mailman is trying to
>send outgoing mail through it (is mailman supposed to send the outgoing mail
>through exim?, or does it send it by himself (using the smtpd python module)?).


In the default case, mail is sent by the Mailman module
Mailman/Handlers/SMTPDirect.py. We know this is your case, because the
'smtp' and 'smtp-failure' logging is done only by this module. This
module uses Python's smtplib routines to deliver the mail via SMTP to
the SMTP server SMTPHOST:SMTPPORT. The defaults for these are

SMTPHOST = 'localhost'
SMTPPORT = 0

And SMTPPORT = 0 tells smtplib to use its default SMTP port which is
25. Thus mail is delivered by default via SMTP to the server on port
25 of localhost.

This server is responding with code 501 and error message
"<listaquique-bounces at sempronlistas.com>: domain missing or
malformed". In this case, <listaquique-bounces at sempronlistas.com> is
the envelope sender of the message and it appears that the server
doesn't like it.



>In the former case, I don’t know what interface mailman uses to send outgoing
>mail to exim:
>-Perhaps it uses batch mode, and perhaps this mode errors don’t figure on exim
>logs. 
>-I think that if mailman uses the smtp interface through the local loop, at
>least some error like “domain missing or malformed” should appear on exim logs.


I think so too. I don't know why not


>I searched the domains involved and found that: 
>-the domains on the member’s addresses are all correct.
>-I don’t know what recipient figures when mailman sends mail to the members, but
>I suppose it’s listaquique at sempronlistas.com, which has an existent and
>correctly qualified domain.


The SMTP transaction will look like

MAIL FROM:<listaquique-bounces at sempronlistas.com>

and then the four 

RCPT TO:<member address>

and then

DATA

and the message. The default behavior is to not quit, but keep the
connection open. See the documentation in Defaults.py for
SMTP_MAX_RCPTS and SMTP_MAX_SESSIONS_PER_CONNECTION. Also note that
MAX_DELIVERY_THREADS is no longer used in current Mailman versions.


>It’s important to say that the problem also appears when running directly “cat
>message |  mailman post listaquique” command, being such message, a valid
>message from a list member stored in a file. This leads me to think that it’s a
>mailman’s problem in sending outgoing mail, not an exim’s problem in contacting
>mailman when it identifies mail sent to  mailing-lists.


Yes, it is definitely a problem with Mailman sending outgoing messages
and not a problem with Exim delivering incoming mail to Mailman.
However, it may still be an Exim configuration problem.


> I give details of the different packages and system configuration:
>-------------------------------------------------------------------------------------
>
>Exim configuration:
>------------------------
>As I said before, I don’t think the problem is exim, bust just in case here is
>some detail of the exim’s configuration I’m using:
>
>1) I’ve defined the four macros mentioned in the README.EXIM file:
>MAILMAN_HOME = /var/lib/mailman
>MAILMAN_WRAP = MAILMAN_HOME/mail/mailman
>MAILMAN_USER = list
>MAILMAN_GROUP = daemon


This all has to do with incoming mail which is working.


>2) I’ve included the mailman_transport and mailman_router mentioned in README.EXIM


Again, incoming I think.


>Also in a desperate attempt, I defined list (mailman’s system user) as a
>trusted-user (although I notice that wasn’t the problem because when I “su list”
>from command line, I sent mail through exim perfectly). 


Try telnet to 'localhost' port 25 and see if you can send mail by
manually typing the

MAIL FROM:<listaquique-bounces at sempronlistas.com>
RCPT TO:
and
DATA
commands.


>
>Mailman configuration:
>----------------------------
>In mm_cfg.py I defined the following:
>
>DEFAULT_EMAIL_HOST = ‘sempronlistas.com’
>DEFAULT_URL_-HOST = ‘www.sempronmailman.com’ # This is the url of the #localhost
>I use for mailman, which works perfectly well (I can access the web interface,
>#configure the list and also watch the posted messages)
>MTA = None #(I’ve also tried commenting this out with the same results)
>
>Searching the Defaults.py, I’ve found a SMTPPORT=0, which I changed to
>SMTPPORT=25 with the same results. 


That's because it's the same thing as I mentioned above.


>Mailman’s verifications:
>-----------------------------
>When I ran check_perms script, it says: “No problems found” (obtaining this
>answer by running some chmod’s commands on some directories).
>When I ran check_db script, it says: “Nothing to do”.
>
>
>Process details:
>------------------
>When I ran “ps –aux”, I can see the following process related with mailman, all
>running by the “list” user:
>-mailmanctl
>-qrunner –runner=ArchRunner
>-qrunner –runner=BounceRunner
>-qrunner –runner=CommandRunner
>-qrunner –runner=IncommingRunner
>-qrunner –runner=NewsRunner
>-qrunner –runner=OutgoingRunner
>-qrunner –runner=VirginRunner
>-qrunner –runner=RetryRunner
>
>Cronjobs:
>-----------
>When I ran “crontab –u list -l”, it says: “no crontab for list”. 
>
>As I understood reading the documentation, this is fine because the “qrunners”
>alive in ram are supposed to remove mailman’’s dependency on cron for sending
>messages.


For messages yes, but periodic digests rely on senddigests.


>Besides this, I read the crontab file, and all cronjobs were related to other
>purposes than to deliver messages to list members (checkdb, disabled,
>senddigests, mailpasswds, gate-news, nightly_gzip).


Yes, but they should run anyway except maybe gate-news.


>System aliases details:
>--------------------------
>Although I think this is unnecessary, because exim’s transport takes care of the
>suffixes when executing mailman’s commands, I defined all the system aliases
>required for “listaquique” and “mailman” lists in the /etc/aliases, and
>afterwords run “newaliases” command.


Yes, it should be unnecessary, and this part is working anyway.


>Other questions:
>--------------------
>
>I wonder where I can access some mailman documentation so as to answer the
>following questions:
>
>I’ve read somewhere that milman uses an external MTA running on the localhost on
>port 25. Is this right or not? 


This is the default but can be vhanged via SMTPHOST and SMTPPORT.


>What does mailman has to do with de smtpd python module? What is that SMTPPORT=0
>on Defaults.py. Shouldn’t it be 25?


Mailman does not use Python's smtpd module. Mailman uses Pythons
smtplib to interact with an external SMTP server. SMTPPORT=0 is passed
to smtplib and tells smtplib to use its own SMTP default port (which
is 25). In this way, Mailman doesn't have to know what SMTP port to
use unless it is different from the standard.


>I understand that the existence of qrunners eliminates some mailman’s dependence
>on cron. Is this right?


Yes, but cron is still used for various things.


>Where can I read the mailman’s architecture? : What exactly each qrunner is
>supposed to do? Also: What is mailmanctl daemon supposed to do?


I learned Mailman's architecture by reading the code to find the
answers to questions people asked on this list. I don't know a better
way.

The qrunners process the queue entries. The mailmanctl process starts
and stops and monitors and communicates with the qrunner processes.

--
Mark Sapiro <msapiro at value.net>       The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan




More information about the Mailman-Users mailing list