Automatyczne dodawanie stopki do wysłanej wiadomości
Krótki opis jak wykorzystać narzędzie alterMIME aby dodawać stopkę do wszystkich wysłanych wiadomości z naszego serwera.
Instalujemy pakiet alterMIME
Następnie tworzymy użytkownika ,,filter’' z katalogiem domowym w
/var/spool/filter (narzędzie alterMIME będzie uruchamiane z poziomu wspomnianego użytkownika)
Kod: Zaznacz cały
useradd -r -c "Postfix Filters" -d /var/spool/filter filter
Tworzymy katalog domowy
I nadajemy mu odpowiednie prawa:
Kod: Zaznacz cały
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:
Kod: Zaznacz cały
cp /usr/share/doc/altermime/examples/postfix_filter.sh /etc/postfix/disclaimer
i nadajemy mu odpowiednie prawa:
Kod: Zaznacz cały
chmod 750 /etc/postfix/disclaimer && chgrp filter /etc/postfix/disclaimer
Problem z tym skryptem polega jednak na tym, że dodaje on stopkę do wszystkich wiadomości przychodzących i wychodzących, co nie jest pożądanym przez nas efektem.
Więc zrobiłem małą aktualizację skryptu aby dodawał stopkę tylko do wysyłanych wiadomości:
Kod: Zaznacz cały
#!/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 zmienną
DOMAIN na własną domenę, do której ma być dodawana stopka.
Kopiujemy przykładową stopkę:
Kod: Zaznacz cały
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żdej wychodzącej wiadomości.
Teraz musimy poinformować postfiksa aby skrypt /etc/postfix/disclaimer wykonywał się podczas wysyłania wiadomości.
Otwórz /etc/postfix/master.cf i dodaj ,,-o content_filter=dfilt:'' (to pod linią smtp):
Kod: Zaznacz cały
#
# Postnik 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 koniec tego samego pliku dodaj poniższy wpis:
Kod: Zaznacz cały
[...]
dfilt unix - n n - - pipe
flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}
Całość skryptu ma wyglądać tak:
Kod: Zaznacz cały
#
# Postnik 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:
dfilt unix - n n - - pipe
flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}
I teraz pozostało nam tylko zresetować postfiksa
Po resecie każda wychodząca wiadomość z domeny podanej w pliku:
będzie posiadała stopkę jaką określiliśmy w pliku