Драсте!
как передать внешнему скрипту кому пришло письмо?
Делал как написано тут http://www.opennet.me/tips/info/634.shtml
ниче не работает . БЭкапить почту я не хочу... просто нужно передать скрипту, что пришла почта для юзера пупкина к примеру..
1. Можно и через pipe. В скрипте проверяется получатель, записывается в файл лога и письмо отправляется дальше, тому кому и предназначалось.
2. Можно использовать SMTP Access Policy Delegation:
http://www.postfix.org/SMTPD_POLICY_README.html
и указать, например,
smtpd_end_of_data_restrictions = check_policy_service ...
А можно пример с pipe?
у меня в master.cf есть
spamchk unix - n n - 10 pipe
flags=Rq user=user argv=/usr/bin/spamcheck -f $f{sender} --${recipient}
и в самом низу
smtp inet n - n - - smtpd
-o content_filter=spamchk=dummy
По этой схеме письмо передаётся скрипту, где и проверяется спамассассин
По аналогии хотел сделать так:
myscript unix - n n - 10 pipe
flags=Rq user=user argv=/usr/bin/myscript -f $f{sender} --${recipient}.
НО ну жно ли сдесь "-o content_filter=spamchk=dummy" мне ведь ненужно контент фильтровать , просто передать скрипту отправителя получателя а письмо как есть так и дальше пусть идёт.
>А можно пример с pipe?
>у меня в master.cf есть
>spamchk unix - n n - 10 pipe
>flags=Rq user=user argv=/usr/bin/spamcheck -f $f{sender} --${recipient}
>и в самом низу
>smtp inet n - n - - smtpd
> -o content_filter=spamchk=dummy
>По этой схеме письмо передаётся скрипту, где и проверяется спамассассин
Раз уже есть скрипт spamcheck, то просто добавьте в него обработку передающихся в него переменных отправителя и получателя. Сделайте условную проверку на получателя и если "истина", то добавляйте запись в Ваш лог файлы или передавайте через pipe другому Вашему скрипту, или вызывайте его каждый раз с параметрами -получатель -размер. Вообщем дальше Ваша фантазия.
блин целые сутки убил ... ниче понять ен могу :(########################################3
#!/bin/sh
echo "test" >> ~qua/test.txt
INSPECT_DIR=/tmp #Каталог куда будут сохраняться письма для сканирования
SENDMAIL="/usr/sbin/sendmail -i"
FILTER_SPAMC="/usr/bin/spamc -u filter -U /var/run/spamd.sock"
trap "rm -f $INSPECT_DIR/in.$$ $INSPECT_DIR/vr.$$ $INSPECT_DIR/vr1.$$" 0 1 2 3 15cat | $FILTER_SPAMC > $INSPECT_DIR/in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
$SENDMAIL "$@" <${INSPECT_DIR}/in.$$
exit 0
#########################################вот просто для проверки всунул первой строчкой
echo "" >> ~qua/test.txt , по идее , когда МТА передаёт скрипту что-то в файле ~qua/test.txt должна появляться новая строчка, но её там нету :(Помогите плз!
>########################################3
>#!/bin/sh
SENDER="$1"
shift
RECIPIENT="$@"
Далее с этой переменной можете делать, что угодно.
Записать ее в файл, вызвать другой скрипт и передать ему ее в качестве параметра и т.п.
########################################3
#!/bin/sh
SENDER="$1"
shift
RECIPIENT="$@"# вот тут отправитель и получатель должны записать в файл чего не происходит , хотя запуск spamc происходит и письмо успешно проверяется спамотсосиным
echo "$SENDER $RECIPIENT" >> /home/qua/test.txt
INSPECT_DIR=/tmp #Каталог куда будут сохраняться письма для сканирования
SENDMAIL="/usr/sbin/sendmail -i"
FILTER_SPAMC="/usr/bin/spamc -u filter -U /var/run/spamd.sock"
trap "rm -f $INSPECT_DIR/in.$$ $INSPECT_DIR/vr.$$ $INSPECT_DIR/vr1.$$" 0 1 2 3 15cat | $FILTER_SPAMC > $INSPECT_DIR/in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
$SENDMAIL "$@" <${INSPECT_DIR}/in.$$
exit 0
#########################################
>echo "$SENDER $RECIPIENT" >> /home/qua/test.txt
А у юзера, под которым работает скрипт, есть права на доступ в эту директорию и на запись в этот файл?
И сделайте проще
flags=Rq user=user argv=/usr/bin/spamcheck ${sender} ${recipient}smtp inet n - n - - smtpd
-o content_filter=spamchk:dummy