Linux FAQ
; TOP 10 FAQ ;
  1. Montowanie partycji FAT i NTFS
  2. Szybka instalacja Javy
  3. Kompilacja jadra
  4. polskie znki w konsoli locales
  5. Bardzo szybka instalacja flasha
  6. Polskie fonty w KDE
  7. przekierowanie adresu zewnetrznego w lan
  8. mplayer napisy pod filmem
  9. zablokowanie internetu + przekierowanie
  10. przegladanie zasobów samba
  • Media
  • Oprogramowanie
  • Sieć
  • Skrypty
  • Sprzęt
  • System
  • X windows

  • wyszukiwarka

    tematopistresc

    zaloguj sie


    Automatyczne dodawanie stopki do wyslanego maila
    » 2008-06-17 11:59:49 » dodal: HunteR »
    » czytan: 1699 » dzial: Sieć »

    Krótki opis jak wykorzystać narzędzie alterMIME aby dodawać stopkę do wszystkich wysłanych maili z naszego serwera.

    Instalujemy alterMIME
    aptitude install altermime

    Następnie tworzymy usera ‘filter’ z katalogiem domowym w /var/spool/filter (alterMIME będzie uruchamiany pod tym userem)
    useradd -r -c "Postfix Filters" -d /var/spool/filter filter

    Tworzymy katalog domowy
    mkdir -p /var/spool/filter

    I nadajemy mu odpowiednie prawa:
    chmod 750 /var/spool/filter && chown filter:filter /var/spool/filter

    Teraz możemy skopiować przykładowy plik, który będzie filtrował nasze wiadomości:
    cp /usr/share/doc/altermime/examples/postfix_filter.sh /etc/postfix/disclaimer

    i nadajemy mu odpowiednie prawa
    chmod 750 /etc/postfix/disclaimer && chgrp filter /etc/postfix/disclaimer

    Problem z tym skryptem polega jednak na tym ze dodaje on stopkę do wszystkich maili przychodzących i wychodzących, co nie jest pożądanym celem przez nas.
    Więc zrobiłem mały update skrypt aby dodawał stopkę tylko do wysyłanych maili:


    #!/bin/sh
    # Localize these.
    INSPECT_DIR=/var/spool/filter
    SENDMAIL=/usr/sbin/sendmail
    DOMAIN="test.com"

    # Exit codes from <sysexits.h>
    EX_TEMPFAIL=75
    EX_UNAVAILABLE=69

    # Clean up when done or when aborting.
    trap "rm -f in.$$" 0 1 2 3 15

    # Start processing.
    cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit
    $EX_TEMPFAIL; }

    cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }

    grep "From:" in.$$ | grep -i $DOMAIN > /dev/null
    let R=$?

    if [ $R -eq 0 ]; then
    /usr/bin/altermime --input=in.$$ \
    --disclaimer=/etc/postfix/disclaimer.txt \
    --disclaimer-html=/etc/postfix/disclaimer.txt \
    --xheader="X-Copyrighted-Material: Please visit http://www.company.com/privacy.htm" || \
    { echo Message content rejected; exit $EX_UNAVAILABLE; }
    fi

    $SENDMAIL "$@" <in.$$

    exit $?


    Zmień w powyższym skrypcie zmienna DOMAIN na własną domenę do której ma być dodawana stopka.

    Kopiujemy przykładową stopke
    cp /usr/share/doc/altermime/examples/disclaimer.txt /etc/postfix/disclaimer.txt


    Plik możemy edytować według własnych potrzeb. Tekst z tego pliku będzie doklejany do każdego wychodzącego maila.

    Teraz musimy poinformować postfixa aby skrypt /etc/postfix/disclaimer wykonywał sie podczas wysyłania maili.
    Otwórz /etc/postfix/master.cf i dodaj -o content_filter=dfilt: do pod linia smtp:
    nano /etc/postfix/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=dfilt:
    [...]


    I na koniect tego samego pliku dodaj poniżesz linie

    [...]
    dfilt unix - n n - - pipe
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}


    I teraz pozostało nam tylko zresetować postfixa
    /etc/init.d/postfix restart


    Po resecie każdy wychodzący mail z domeny podanej w pliku /etc/postfix/disclaimer będzie posiadał stopkę jaką określiliśmy w pliku /etc/postfix/disclaimer.txt.



    FAQ skrypt © raixer