Thanks a lot Viktor,
I’ll try it and let you know.



Thanks a lot again


Cheers

Carlo



-----Original Message-----
From: <owner-postfix-us...@postfix.org> on behalf of Viktor Dukhovni 
<postfix-us...@dukhovni.org>
Reply-To: Postfix <postfix-users@postfix.org>
Date: Tuesday, 21 March 2017 at 18:38
To: Postfix <postfix-users@postfix.org>
Subject: Re: Split multiple TO email into multiple single email

    
    > On Mar 21, 2017, at 12:46 PM, Carlo Poggiarelli <c.poggiare...@gmail.com> 
wrote:
    > 
    > An exchange server sends to postfix an email with multiple addresses
    > in the to field.  This message should be sent to an sms gateway that
    > accepts one address only in the to field. If ti receives an email with
    > multiple addresses, it sends the sms message to the first addresses in
    > the to field only discarding the others.
    
    The SMS gateway is rather badly implemented.  Email must not be routed
    based on the content of the To: or Cc: headers.  However, if you cannot
    repair or replace the SMS gateway, it is possible to work around this in
    Postfix.
    
        main.cf:
        indexed = ${default_database_type}:${config_directory}/
        transport = ${indexed}transport
        sms_destination_recipient_limit = 1
        sms_destination_concurrency_limit = 2
    
       transport:
        sms.example     sms
        sms.invalid     realsms
    
       master.cf:
        sms unix - n n - 20 pipe
            flags=Dq user=nobody null_sender= argv=/some/script ${sender} 
${user}
        realsms ... 
    
       /some/script:
       #! /bin/sh
       (
          printf "From: %s\nTo: %s\n" "$@"
          perl -ne '
        BEGIN { $header = 1; $buf = "" }
        sub doheader { 
                print $buf if ($buf ne "" && $buf !~ m{^to:}i);
            $buf = "";
        }
        s/\r+$//
        if (/^$/) { header(); $header = 0; }
        if (! $header) { print; next; }
        doheader() if (m{^\S});
        $buf .= $_;
            '
        ) | sendmail -f "$1" -- "$2@sms.invalid"
    
    It remains to define a suitable "realsms" transport.  If
    that's SMTP, you may also need to apply smtp_generic_maps
    to rewrite the envelope recipient back from "@sms.invalid"
    to "@sms.example".  (Note "sms.example" is not the real
    domain to use, replace as appropriate).
    
    Keep in mind you may need to debug and fine-tune this, it is
    not a tested or necessarily complete recipe.
    
    -- 
        Viktor.
    
    


Reply via email to