[Greylist-users] My incoming mail is relay, not smtp

Tim Freeman tim at fungible.com
Fri Nov 21 08:46:02 PST 2003

>The value of the {mail_mailer} is whatever the name of the mailer that
>sendmail says is being used for delivery (as defined in your sendmail.cf).
>Normally, this is smtp or esmtp.

I think it's the mailer that would be used to send a bounce message
back to the alleged sender.

Their meanings are documented in the "Sendmail Installation and
Operation Guide", which is /usr/share/doc/sendmail/op/op.txt.gz on my
Debian system, and that file says:

           The  mailer  from  the  resolved  triple  of  the
           address given for the SMTP MAIL command.  Defined
           in the SMTP server only.

           The  mailer  from  the  resolved  triple  of  the
           address given for the SMTP RCPT command.  Defined
           in the SMTP server only after a RCPT command.

      $r   Protocol used to receive the message.   Set  from
           the  -p  command  line flag or by the SMTP server

RFC 821 says RCPT identifies the recipient and MAIL identifies the
sender.  (I'm not being pedantic; I had to look it up myself just

You might want "r" instead of "{mail_mailer}".  Unfortunately, "r" is
not propagated by default from sendmail to the milter, so I also need
to put this in my sendmail.mc:

   define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}, r'')

I did this right before my MAILER(local) line, and now I get a value
for "r" in relaydelay.pl.  The value for "r" appears to always be
ESMTP or SMTP on my machine, even when I do "mail tim at localhost".

Is there a way for me to reproduce the situation where the mail wasn't
sent by SMTP and it's therefore important for relaydelay not to
tempfail it?

>My guess is that because you have a smarthost defined, sendmail is picking
>the relay mailer because it would normally "relay" all mail to the
>smarthost, and not because it thinks the sending mail host is a relay.

You're right.  If I take out the smarthost declaration, then
mail_mailer for mail from outside is esmtp instead of relay.  Note
that this is changing the *outgoing* mailer that would be used for a
bounce message, but the comment on line 614 of relaydelay.pl says
we're trying to pay attention to the *incoming* mailer that was used
to give us the mail:

  # Only do our processing if the inbound mailer is an smtp variant.

These will be different in exactly the situation I'm in, where
incoming mail comes through a different path from outgoing. 

>The change you made would be required for anyone who isn't using the
>standard smtp or esmtp mailers (or isn't using the standard names for those
>mailers).  It should not cause any problems for you.

I agree that things are working fine for me right now.  I'm poking at
this because I want to understand it.

Tim Freeman                                                  tim at fungible.com
GPG public key fingerprint ECDF 46F8 3B80 BB9E 575D  7180 76DF FE00 34B1 5C78 
Your levity is good.  It relieves tension and fear of death.  -- Terminator 3

More information about the Greylist-users mailing list