URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 61734
[ Назад ]

Исходное сообщение
"postfix pipe"

Отправлено Terkin Vasya , 12-Ноя-05 08:53 
Драсте!
как передать внешнему скрипту кому пришло письмо?
Делал как написано тут http://www.opennet.me/tips/info/634.shtml
ниче не работает . БЭкапить почту я не хочу... просто нужно передать скрипту, что пришла почта для юзера пупкина к примеру..

Содержание

Сообщения в этом обсуждении
"postfix pipe"
Отправлено jonatan , 14-Ноя-05 09:10 
1. Можно и через pipe. В скрипте проверяется получатель, записывается в файл лога и письмо отправляется дальше, тому кому и предназначалось.
2. Можно использовать SMTP Access Policy Delegation:
http://www.postfix.org/SMTPD_POLICY_README.html
и указать, например,
smtpd_end_of_data_restrictions = check_policy_service ...

"postfix pipe"
Отправлено Terkin Vasya , 14-Ноя-05 12:39 
А можно пример с 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" мне ведь ненужно контент фильтровать , просто передать скрипту отправителя получателя а письмо как есть так и дальше пусть идёт.


"postfix pipe"
Отправлено jonatan , 14-Ноя-05 13:02 
>А можно пример с 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 другому Вашему скрипту, или вызывайте его каждый раз с параметрами -получатель -размер. Вообщем дальше Ваша фантазия.

"postfix pipe"
Отправлено Terkin Vasya , 15-Ноя-05 14:43 
блин целые сутки  убил ... ниче понять ен могу :(

########################################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 15

cat | $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 должна появляться новая строчка, но её там нету :(

Помогите плз!


"postfix pipe"
Отправлено jonatan , 15-Ноя-05 14:59 
>########################################3
>#!/bin/sh
SENDER="$1"
shift
RECIPIENT="$@"
Далее с этой переменной можете делать, что угодно.
Записать ее в файл, вызвать другой скрипт и передать ему ее в качестве параметра и т.п.

"postfix pipe"
Отправлено Terkin Vasya , 15-Ноя-05 15:11 
########################################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 15

cat | $FILTER_SPAMC > $INSPECT_DIR/in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
$SENDMAIL "$@" <${INSPECT_DIR}/in.$$
exit 0
#########################################


"postfix pipe"
Отправлено jonatan , 15-Ноя-05 15:16 
>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