> On Nov 11, 2016, at 10.34, Noel Jones <njo...@megan.vbhcs.org> wrote:
> 
> On 11/10/2016 6:00 PM, b...@bitrate.net wrote:
>> On Nov 10, 2016, at 17.17, Noel Jones <njo...@megan.vbhcs.org> wrote:
>>> 
>>> On 11/10/2016 4:05 PM, btb wrote:
>>>> hi-
>>>> 
>>>> i have an "appliance" which submits mail.  it's inflexible,
>>>> unfortunately, and uses crappy values for the envelope sender and the
>>>> from: header.  i have communicated with the vendor in an attempt to
>>>> rectify this, but as might be expected, the outcome has been less than
>>>> successful.
>>>> 
>>>> hopefully some day, this changes, but in the interim, i'd like to
>>>> rewrite the envelope sender and the from: header [ala
>>>> sender_canonical_maps] for all mail from this client.
>>>> 
>>>> how should i do this?  is the best method to set up an additional
>>>> cleanup(8) instance with its own sender_canonical_maps for just this
>>>> client?  somehow connect the client to its own smtp(8) service to use
>>>> smtp_generic_maps?  are there other/better methods?
>>>> 
>>>> thanks
>>>> -ben
>>>> 
>>> 
>>> depending on "how" the addresses are broken, you can probably just
>>> use canonical_maps to always rewrite the offending address to
>>> something valid.  There shouldn't be any need for additional cleanup
>>> service unless you're fighting some common misspelling.
>>> 
>>> Send specifics of what you're trying to rewrite for further help.
>> 
>> in particular, this client impersonates our users, which we don't want.  it 
>> is aware of users and their email addresses [it's part of a voicemail system 
>> which sends voicemail messages as email attachments, and "helpfully" claims 
>> the email message was sent by the caller].  for us, this is undesirable.
>> 
>> when a user submits a message with a sender of u...@example.com, we of 
>> course don't want to change that.  however, when this client does it, we do. 
>>  the localpart is dynamic.  for example, i would like to rewrite a sender of 
>> /^.*@example.com$/, but only when the message came from this client.  many 
>> other messages with a sender which matches /^.*@example.com$/ are submitted 
>> from many other clients, but those don't need to be changed.
>> 
> 
> 
> I see.  This might be a good use of smtpd_command_filter.  Add
> another smtpd service on a different port and arrange for the wonky
> client to connect there or use a firewall redirect to send the
> client to the alternate port.
> 
> A separate cleanup service can use header_checks to remove the false
> From: header, don't bother trying to rewrite it.
> 
> The extra master.cf service entries will look something like:
> localip:2525   inet  n   -   n    -     -    smtpd
>  -o smtpd_command_filter=regexp:/path/to/filter.regexp
>  -o smtpd_client_restrictions=hash:/etc/postfix/voicemail,reject
>  -o cleanup_service_name=cleanup_voicemail
> 
> cleanup_voicemail unix  n   -   n   -   0   cleanup
>  -o header_checks=header_checks_voicemail.regexp
> 
> 
> 
> # The command filter something like (untested, but the general idea
> is correct):
> if /^MAIL FROM:\s.*example\.com/
> /^MAIL FROM:\s*<(.*)@example\.com/  MAIL FROM:
> <voicemail+$1...@example.com>
> fi
> 
> # the the voicemail client map
> ip.of.voicemail.system  OK
> 
> # and the header_checks_voicemail:
> /^From: .*@example\.com/  IGNORE

thanks.  i'll head down this path and see where it gets me.

Reply via email to