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. 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? 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