On 2/25/2014 6:06 PM, CSS wrote:
> 
> On Feb 25, 2014, at 9:50 AM, Noel Jones wrote:
> 
>> On 2/25/2014 4:44 AM, Eivind Olsen wrote:
>>> Hello (or should that be EHLO? :))
>>>
>>> It has been a while since I've had a need to change my Postfix
>>> configuration, so I'm a bit rusty. I have searched, checked the
>>> configuration, etc. No luck yet.
>>>
>>> Is it possible to get Postfix to log the hostname presented to it during
>>> HELO/EHLO? Any configuration setting I've missed? Or will I have to change
>>> the sourcecode for this?
>>
>>
>> If you don't want to patch the source, an easy workaround is to add
>> to your header_checks file:
>> /^From: / WARN
>> which will log some information including the helo. This works with
>> any version of postfix.
>>
>>
>>
>> If you don't mind a little patch, here's a simple patch I've used
>> for years to log the HELO hostname. This will apply to postfix 2.8
>> and newer.
> 
> That is so qmail-esque (in a good way, seriously).  I really like
> the idea of logging the helo from a data analysis perspective.
> 
> I wonder if you could do this with a simple policy server?  IIRC,
> the helo is one of the bits of data passed to the policy server, and
> logging the IP, to/from, helo and a few other things seems like it
> would be pretty simple.  And just return an OK.  Of course it would
> be a totally separate log file, but you'd have the data and you
> wouldn't have to alter the postfix source.

Yes, that's possible.  Make sure your policy service always returns
DUNNO, not OK, to postfix.  But having a separate log seems messy.

> 
> Also a quick question on the patch below - if you're running
> postscreen, and it has decided a sending host is "bad", will the
> connection ever hit the real smtpd daemon and be logged?

Postfix always includes the helo (if available) in a reject log
entry, whether the reject happens in postscreen or elsewhere. No
patch needed for that.



  -- Noel Jones

> 
> Thanks,
> 
> Charles
> 
> ps - I lurk here and just wanted to say "thanks" to all for postfix
> and the list denizens.  I just started work on putting an old
> qmail/vpopmail setup behind postfix and I'm just consistently blown
> away by the flexibility of postfix - it's hard to find an unsolvable
> problem.
> 
>>
>> Sample log entry:
>> Feb 25 08:40:39 mx1 postfix/smtpd[30241]: NOQUEUE:
>> client=mail.example.com[192.2.0.2], helo=mail.example.com
>>
>> Note the modified log entry may break some log parsers, but is
>> compatible with pflogsumm.pl and postfix-logwatch.
>>
>>
>> (beware line wrapping)
>>
>> --- /usr/local/src/postfix-2.8-20100728/src/smtpd/smtpd.c       Mon
>> Jul 26 18:39:39 2010
>> +++ src/smtpd/smtpd.c   Tue Aug 10 16:42:36 2010
>> @@ -1916,13 +1916,16 @@
>> #define PRINT2_OR_NULL(cond, name, value) \
>>            PRINT_OR_NULL((cond), (name)), PRINT_OR_NULL((cond),
>> (value))
>>
>> -       msg_info("%s: client=%s%s%s%s%s",
>> +       msg_info("%s: client=%s%s%s%s%s%s%s%s%s",
>>                 (state->queue_id ? state->queue_id : "NOQUEUE"),
>>                 state->namaddr,
>>                 PRINT2_OR_NULL(HAVE_FORWARDED_IDENT(state),
>>                                ", orig_queue_id=",
>> FORWARD_IDENT(state)),
>>                 PRINT2_OR_NULL(HAVE_FORWARDED_CLIENT_ATTR(state),
>> -                               ", orig_client=",
>> FORWARD_NAMADDR(state)));
>> +                               ", orig_client=",
>> FORWARD_NAMADDR(state)),
>> +                ", helo=", state->helo_name ? state->helo_name : "",
>> +                PRINT2_OR_NULL(HAVE_FORWARDED_CLIENT_ATTR(state),
>> +                               ", orig_helo=",  FORWARD_HELO(state)
>> ? FORWARD_HELO(state) : ""));
>>     return (0);
>> }
>>
>> --- /usr/local/src/postfix-2.8-20100728/src/smtpd/smtpd_sasl_proto.c
>>   Mon Jul 26 18:40:14 2010
>> +++ src/smtpd/smtpd_sasl_proto.c        Tue Aug 10 17:56:42 2010
>> @@ -243,7 +243,7 @@
>> #define PRINT2_OR_NULL(cond, name, value) \
>>            PRINT_OR_NULL((cond), (name)), PRINT_OR_NULL((cond),
>> (value))
>>
>> -    msg_info("%s: client=%s%s%s%s%s%s%s%s%s%s%s",
>> +    msg_info("%s: client=%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
>>             (state->queue_id ? state->queue_id : "NOQUEUE"),
>>             state->namaddr,
>>             PRINT2_OR_NULL(state->sasl_method,
>> @@ -255,7 +255,10 @@
>>             PRINT2_OR_NULL(HAVE_FORWARDED_IDENT(state),
>>                            ", orig_queue_id=", FORWARD_IDENT(state)),
>>             PRINT2_OR_NULL(HAVE_FORWARDED_CLIENT_ATTR(state),
>> -                           ", orig_client=", FORWARD_NAMADDR(state)));
>> +                           ", orig_client=", FORWARD_NAMADDR(state)),
>> +            ", helo=", state->helo_name ? state->helo_name : "",
>> +            PRINT2_OR_NULL(HAVE_FORWARDED_CLIENT_ATTR(state),
>> +                           ", orig_helo=",  FORWARD_HELO(state) ?
>> FORWARD_HELO(state) : ""));
>> }
>>
>> /* smtpd_sasl_mail_reset - SASL-specific MAIL FROM cleanup */
>>
>>
>>
>>
>>
>>
>>  -- Noel Jones
> 

Reply via email to