On 7/1/2013 1:09 PM, Daniel L. Miller wrote: > On 6/28/2013 4:34 PM, Noel Jones wrote: >> On 6/28/2013 5:39 PM, Daniel L. Miller wrote: >>> Does anyone know of a tool that will let me modify the subject line >>> of all emails that pass through it? I would call it via a transport >>> map. >>> >>> My application - we just switched to a new email-to-fax service. As >>> part of their security implementation (THEIRS, not mine!) they >>> require all emails sent to them to contain our own fax number. I >>> want to automate this step so I don't have to hear from my users. >>> >> >> http://www.postfix.org/postconf.5.html#smtp_header_checks >> >> Add this to master.cf something like this: >> (or if you already use a custom master.cf transport, add the -o >> override to that entry) >> >> # master.cf >> # fax_service is a copy of the smtp...smtp transport >> fax_service ... smtp >> -o smtp_header_checks=pcre:/etc/postfix/smtp_fax_header >> >> # smtp_fax_header >> /^Subject: / REPLACE Subject: fax from 555-1212 >> > > That ALMOST works - thanks! The problem - I have to have SOMETHING > in the subject otherwise it doesn't happen with this matching rule. > Is it possible to ADD a Subject: header when none is present? >
Postfix header_checks cannot detect a missing header. To add a Subject: header when it's missing requires a milter or content filter of some type. Since this isn't real email, it might be sufficient to always add a Subject header, even if one already exists. And maybe throw away the existing Subject too. I'm pretty sure postfix will only add one header, despite this rule matching multiple headers. If it does add multiple headers, you can try matching /^Message-ID: / or /^From: /, but those aren't required headers either and may not always be present (or just ignore the ugliness -- multiple identical Subject: headers probably won't break anything). Order doesn't matter here, header_checks won't delete a header added by itself. # smtp_fax_header # delete existing subject line, if any /^Subject: / IGNORE # add a subject line /^/ PREPEND Subject: fax from ...... -- Noel Jones
