Simple content filter doesn't work

From: Benoit Giannangeli (no email)
Date: Wed Jul 02 2008 - 10:57:44 EDT

  • Next message: Richard Foley: "Re: (delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]: Connection refused <- messages all of a sudden..."

    Hi,

    I'm writing an application which will have to remove attachment from mails,
    send them to a server and replace them by a link in the mail.
    For that I have written a java service which is listening on a port for
    mails, modify them, and then run sendmail to reinject them.

    The point is, the simple content filtering as explained in
    http://www.postfix.org/FILTER_README.html#simple_filter doesn't works.
    Here is my master.cf:

    #
    # Postfix master process configuration file. For details on the format
    # of the file, see the master(5) manual page (command: "man 5 master").
    #
    # ==========================================================================
    # service type private unpriv chroot wakeup maxproc command + args
    # (yes) (yes) (yes) (never) (100)
    # ==========================================================================
    smtp inet n - - - - smtpd
      -o content_filter=filtre
    pickup fifo n - - 60 1 pickup
    cleanup unix n - - - 0 cleanup
    qmgr fifo n - n 300 1 qmgr
    #qmgr fifo n - - 300 1 oqmgr
    tlsmgr unix - - - 1000? 1 tlsmgr
    rewrite unix - - - - - trivial-rewrite
    bounce unix - - - - 0 bounce
    defer unix - - - - 0 bounce
    trace unix - - - - 0 bounce
    verify unix - - - - 1 verify
    flush unix n - - 1000? 0 flush
    proxymap unix - - n - - proxymap
    smtp unix - - - - - smtp
    # When relaying mail as backup MX, disable fallback_relay to avoid MX loops
    relay unix - - - - - smtp
            -o fallback_relay=
    showq unix n - - - - showq
    error unix - - - - - error
    discard unix - - - - - discard
    local unix - n n - - local
    virtual unix - n n - - virtual
    lmtp unix - - - - - lmtp
    anvil unix - - - - 1 anvil
    scache unix - - - - 1 scache
    #
    # ====================================================================
    # Interfaces to non-Postfix software. Be sure to examine the manual
    # pages of the non-Postfix software to find out what options it wants.
    #
    # Many of the following services use the Postfix pipe(8) delivery
    # agent. See the pipe(8) man page for information about ${recipient}
    # and other message envelope options.
    # ====================================================================
    #
    # maildrop. See the Postfix MAILDROP_README file for details.
    # Also specify in main.cf: maildrop_destination_recipient_limit=1
    #
    maildrop unix - n n - - pipe
      flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
    #
    # See the Postfix UUCP_README file for configuration details.
    #
    uucp unix - n n - - pipe
      flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail
    ($recipient)
    #
    # Other external delivery methods.
    #
    ifmail unix - n n - - pipe
      flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
    bsmtp unix - n n - - pipe
      flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender
    $recipient
    scalemail-backend unix - n n - 2 pipe
      flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
    ${nexthop} ${user} ${extension}
    mailman unix - n n - - pipe
      flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
      ${nexthop} ${user}

    filtre unix - n n - - pipe
       flags=Rq user=filter argv=/etc/postfix/socket_connect.pl 127.0.0.1 10027

    And here is my main.cf:

    # See /usr/share/postfix/main.cf.dist for a commented, more complete version

    # Debian specific: Specifying a file name will cause the first
    # line of that file to be used as the name. The Debian default
    # is /etc/mailname.
    #myorigin = /etc/mailname

    smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
    biff = no

    # appending .domain is the MUA's job.
    append_dot_mydomain = no

    # Uncomment the next line to generate "delayed mail" warnings
    #delay_warning_time = 4h

    # TLS parameters
    smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    smtpd_use_tls=yes
    smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
    smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
    smtp_host_lookup=dns,native

    # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
    # information on enabling SSL in the smtp client.

    myhostname = vmsource.e-logiq.net
    mydomain = vmsource.e-logiq.net
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    #myorigin = $mydomain
    mydestination = vmsource.e-logiq.net, localhost.e-logiq.net, localhost
    relayhost =
    mynetworks = 127.0.0.0/8, 192.168.253.0/24
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all

    As you can see, i try to launch the '/etc/postfix/socket_connect.pl' script
    which open a socket to the java service and write the mail on it:

    #! /usr/bin/perl -w

    use strict;
    use warnings;
    use IO::Socket;

    my ($host,$port) = @ARGV;

    my $socket = IO::Socket::INET->new(Proto => "tcp",
                                       PeerAddr => $host,
                                       PeerPort => $port)
      or die "Failed : $@\n";

    for my $line (<STDIN>) {
      print $socket $line;
    }

    print $socket "<--MAIL-->";

    close($socket);

    That script is never executed.
    As my *.cf files are exactly what is said in FILTER_README, I can't see
    what's the problem...

    Can someone help me ?

    -- 
    Benoit Giannangeli
    http://www.giann.fr/
    -- 
    Benoit Giannangeli
    http://www.giann.fr/
    

  • Next message: Richard Foley: "Re: (delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]: Connection refused <- messages all of a sudden..."





    Hosted Email Solutions

    Invaluement Anti-Spam DNSBLs



    Powered By FreeBSD   Powered By FreeBSD