| [FrontPage] [TitleIndex] [WordIndex]

# tmda-postfix-policy.sh

    #!/bin/bash

    export PATH=/usr/local/src/tmda/bin:/usr/local/bin:/usr/bin:/bin

    # Unset the following if you have the logger program available and you want
    # log output to syslog
    #LOGGER=/usr/bin/logger

    check() {
        ## determine which user's TMDA config will apply
        USER=`echo $recip | cut -f1 -d@ | cut -f1 -d-`
        export HOME=`grep $USER /etc/passwd | cut -f6 -d:`

        ## Check to see if user has a ~/.tmda/config
        if [ ! -s $HOME/.tmda/config ] && [ -r $HOME/.tmda/config ] && \
                                    [ -r $HOME/.tmda/crypt_key ]; then
            [ -n "$LOGGER" ] && $LOGGER -p mail.info -t postfix/tmda \
                          "Permitting email received for non-TMDA user $USER"
            echo action=permit
            echo
        fi

        ## Check if sender & recip match anything in the incoming filter
        ## files.

        tmda-filter -M $recip $sender | grep MATCH | grep -q bounce$
        ## If they find something in the filters, dispose of the message.
        if [ $? = 0 ]; then
            [ -n "$LOGGER" ] && $LOGGER -p mail.info -t postfix/tmda \
                     "Rejecting email recieved from $sender to $recip"
            echo "action=reject Message rejected by recipient (TMDA)."
            echo
        else
            [ -n "$LOGGER" ] && $LOGGER -p mail.info -t postfix/tmda \
                       "Permitting email recieved from $sender to $recip"
            echo action=permit
            echo
        fi
    }

    ## Extract sender & recipient addresses
    while IFS='=' read var val; do
        case "x$var" in
            "xrecipient")
                recip="$val";;
            "xsender")
                sender="$val";;
            "x")
                if [ -z $sender ]; then
                    echo action=permit
                    echo
                else
                    check
                fi;;
            *)      ;;
        esac
    done

2007-07-30 15:45