Qmail de giden maillere disclaimer (footer) eklemek

Serhat Selahattin Umar <serhat@secureinbox.net>
12/11/2005 21:33

Bu mini-howto Virtual domain kullanilan bir Qmail sisteminde giden postalara her domain icin farkli bir disclaimer (reklam da olabilir herhangi bir mesajda olabilir, footer diyelim) eklemeyi anlatmaktadir.

Bu howto yu hazirlarken FreeBSD kurulu bir sistem uzerinde Qmail-queue patch i yapilmis, virutal domain kullanan bir qmail ile test ettim. Howto da FreeBSD icin nasil yapilacagini anlatacagim, diger unix ve linux turevleri icin gerekli paketleri yukledikten sonra binary lerin konumlari dogru verildiginde calisacaktir.

Gerekli paketler ;

qmail-queue patch i yapilmis bir qmail
qmail-qfilter
qblibs
altermime

kurulumu portlardan yapacagim, paketleri kendiniz indirip kurmak isterseniz bglibs i de ayrica kurmaniz gerekecek.

# cd /usr/ports/mail/qmail-qfilter
# make install
# cd /usr/ports/mail/altermime
# make install

simdi /var/qmail/control altinda disclaimer adinda bir folder olusturup icerisine domain adini iceren html ve txt olarak mesajinizi dosyanin sonunda bir satir bosluk olacak sekilde girin ardindan dosyalarin gruplarini vpopmail:qmail olarak haklarini 444 olarak verin.

Ornek test.com domaini icin;

# mkdir /var/qmail/control/disclaimer
# echo "Bu bir footer dir" > /var/qmail/control/disclaimer/test.com.txt
# echo "" >> /var/qmail/control/disclaimer/test.com.txt
# echo "<html><body><HR>Bu bir footer dir</HR></body></html>" > /var/qmail/control/disclaimer/test.com.html
# echo "" >> /var/qmail/control/disclaimer/test.com.html
# chown vpopmail:qmail /var/qmail/control/disclaimer/*
# chmod 444 /var/qmail/control/disclaimer/*

simdi footer ekleme scriptimizi tetikleyecek qmail-tail scriptimizi hazirlayacagiz, bunun icin /var/qmail/bin/qmail-tail dosyasi olusturun ve icine asagidaki script i yazin.

#!/bin/sh
exec /usr/local/bin/qmail-qfilter /var/qmail/bin/qmail-disclaimer

simdi de /var/qmail/bin/qmail-disclaimer dosyasi olusturun ve icine asagidaki scripti yazin.

#!/bin/sh
INSPECT_DIR=/var/tmp/qmail-qfilter
if [ ! -f /var/qmail/control/disclaimer/$QMAILHOST.txt ]
then
cat
exit 0
fi
EX_TEMPFAIL=31
EX_UNAVAILABLE=31
trap "rm -f /var/tmp/qmail-qfilter/in.$$" 0 1 2 3 15
cd $INSPECT_DIR || { echo Error: $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
cat >$INSPECT_DIR/in.$$ || { echo Error: Cannot write to disk; exit $EX_TEMPFAIL; }
/usr/local/bin/altermime --input=$INSPECT_DIR/in.$$ \
--xheader="X-Disclaimer: $QMAILHOST" \
--disclaimer=/var/qmail/control/disclaimer/$QMAILHOST.txt \
--disclaimer-html=/var/qmail/control/disclaimer/$QMAILHOST.html || { echo Error: message rejected; exit $EX_UNAVAILABLE; }
cat $INSPECT_DIR/in.$$
rm in.$$
exit $?

simdi de scriptlere gerekli haklari verelim

# chown vpopmail:qmail /var/qmail/bin/qmail-tail
# cwmod 555 /var/qmail/bin/qmail-tail
# chown vpopmail:qmail /var/qmail/bin/qmail-disclaimer
# chmod 555 /var/qmail/bin/qmail-disclaimer

maile footer eklemek icin kullanacagimizi temproary folderi olusturup haklarini verelim.

# mkdir /var/tmp/qmail-qfilter
# chown vpopmail:qmail /var/tmp/qmail-qfilter
# chmod 555 /var/tmp/qmail-qfilter

simdi de tcp.smtp dosyamiza mail gonderirken disclaimer eklenecek networkleri belirtelim.

# vi /etc/tcp.smtp

127.:allow,RELAYCLIENT=""
10.40.1.:allow,QMAILQUEUE="/var/qmail/bin/qmail-tail"

# qmailctl cdb
# qmailctl restart

Hepsi bu kadar, 10.40.1.0/24 lü networkten mail gonderdigimde hangi domainde hesabim varsa ilgili domaine ait footer i gonderdigim maile ekledi.


Kaynaklar :
http://forum.qmailrocks.org/showthread.php?p=13009#post13009
http://lists.ziobudda.net/pipermail/qmail-it/2004-June/000868.html


Serhat Selahattin Umar
serhat@secureinbox.net