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

Исходное сообщение
"postfix content_filter напомните"

Отправлено anton , 05-Сен-03 11:15 
Как правильно
в main.cf
content_filter = /usr/local/bin/procmail:?????????

надо всю почту через фильтр пускать


Содержание

Сообщения в этом обсуждении
"postfix content_filter напомните"
Отправлено anton , 05-Сен-03 13:09 
>Как правильно
>в main.cf
>content_filter = /usr/local/bin/procmail:?????????
>
>надо всю почту через фильтр пускать

Блин помогите я туплю по страшному. Filter_Readme прочитал. Никак не могу понять как должна выглядеть строчка в main.cf и/или в master.cf. Эксперементировать не хочеться т.к. сервак рабочий


"postfix content_filter напомните"
Отправлено Mikhail , 05-Сен-03 13:24 
Пример (почти рабочий :-) )
#протокол:хост:порт
main.cf:
content_filter = lmtp:localhost:10025
...

#собственно, сам фильтр: где, что, от кого и т.п.
master.cf:
localhost:10025     inet  n      n      n      -      10     spawn
   user=filter   argv=/opt/kav/bin/smtpscanner                    


"postfix content_filter напомните"
Отправлено anton , 05-Сен-03 14:13 
>Пример (почти рабочий :-) )
>#протокол:хост:порт
>main.cf:
>content_filter = lmtp:localhost:10025
>...
>
>#собственно, сам фильтр: где, что, от кого и т.п.
>master.cf:
>localhost:10025     inet  n    
> n      n    
>  -      10  
>  spawn
>   user=filter   argv=/opt/kav/bin/smtpscanner

пробую так

main.cf
content_filter = smtp:localhost:10025
master.cf:
localhost:10025     inet  n     n      -    -      10   pipe
   user=filter   argv=/usr/local/bin/procmail -t /usr/local/etc/procmailrc

и получаю в лог
Sep  5 13:59:04 Master postfix/smtp[4224]: 783AF2C7: to=<khouabed@airfrance.fr>, relay=none, delay=1047, status=deferred (connect to localhost[127.0.0.1]: Connection refused)

и письмо висит в очереди

mynetwork = 102.168.1.0/24, 127.0.0.1

Где торможу??



"postfix content_filter напомните"
Отправлено Mikhail , 05-Сен-03 15:21 
Ну, pipe же...
У меня работает так:
master.cf:
smtp    inet    n       -       y       -       10      smtpd -o content_filter=filter:dummy
...
filter  unix  -       n       n       -       -   pipe                    
  flags=Rq user=filter argv=<path>/filter.sh -f ${sender} -- ${recipient}

----
а в filter.sh -
cat | $SPAMASSASSIN | $PROCMAIL | $SENDMAIL "$@" || \      
    { echo Message content rejected; exit $EX_UNAVAILABLE; }
т.е. все по readme. Тестировал на другом сервере, перенес готовые настройки (и права).


"postfix content_filter напомните"
Отправлено anton , 05-Сен-03 16:03 
>Ну, pipe же...
>У меня работает так:
>master.cf:
>smtp    inet    n    
>   -       y
>      -    
>  10      smtpd -o content_filter=filter:dummy
>
>...
>filter  unix  -       n
>      n    
>  -       -  
> pipe
>  flags=Rq user=filter argv=<path>/filter.sh -f ${sender} -- ${recipient}
>
>----
>а в filter.sh -
>cat | $SPAMASSASSIN | $PROCMAIL | $SENDMAIL "$@" || \
>    { echo Message content rejected; exit $EX_UNAVAILABLE; }
>
>т.е. все по readme. Тестировал на другом сервере, перенес готовые настройки (и
>права).


да по мануалу вроде прошло как теперь присобачить туда procmail c файлом procmailrc
:0hbHc
* >1000000
! anton@overseas.spb.ru


при локальной доставке работает проверено


"postfix content_filter напомните"
Отправлено Mikhail , 05-Сен-03 16:12 
в начале filter.sh:
PROCMAIL="<where_is>/procmail -m <where_is>/procmailrc_my"

man procmail, опять же.


"postfix content_filter напомните"
Отправлено anton , 05-Сен-03 17:22 
>в начале filter.sh:
>PROCMAIL="<where_is>/procmail -m <where_is>/procmailrc_my"
>
>man procmail, опять же.

вообщем сил моих нету больше.

пытаюсь реализовать копирование на определённый e-mail сообщений больше определенного объема средствами postfix и procmail

procmailrc

:0hbHc
* >5000
! anton@overseas.spb.ru

прекрасно работает для локальной доставки, ради alias и virtual сделал

master.cf

smtp      inet  n       -       n       -       -       smtpd -o content_filter=test:dummy

test      unix  -       n       n       -       -       pipe
flags=Rq  user=test argv=/usr/local/etc/postfix/filter.sh -f ${sender} -- ${recipient}

(Все как в описалове) в filter.sh засунул
PROCMAIL="/usr/local/bin/procmail -m /usr/local/etc/procmailrc"

сделал postfix reload отправил тестовое сообщение
получаю в лог

Sep  5 16:46:56 Master postfix/qmgr[7758]: A5D4C2D1: from=<anton@overseas.spb.ru>, size=8765, nrcpt=1 (queue active)
Sep  5 16:46:56 Master postfix/pipe[7763]: A5D4C2D1: to=<anton@radio.rtr.spb.ru>, relay=test, delay=1, status=sent (dummy)
Sep  5 16:46:56 Master postfix/smtpd[7760]: disconnect from altlinux.overseas.spb.ru[ххх.ххх.ххх.ххх]
типа путем но нигде этого письма больше нету т.е. никуда не попало.

Я щас уже соображаю плохо мог где лажануться так что не обесутте. Но просьба ткнуть носом где косяк!!! Да а вообще кто как решает эту задачу?



"postfix content_filter напомните"
Отправлено Mikhail , 05-Сен-03 17:46 
cat filter.sh?
--------
#!/bin/sh
SENDMAIL="/usr/sbin/sendmail -i"                  
PROCMAIL="/usr/bin/procmail -m /home/filter/procmailrc"
INSPECT_DIR=/var/spool/filter
EX_TEMPFAIL=75              
EX_UNAVAILABLE=69            

trap "rm -f in.$$" 0 1 2 3 15
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
cat | $PROCMAIL | $SENDMAIL "$@" || \                      
    { echo Message content rejected; exit $EX_UNAVAILABLE; }  

exit 0
--------

cat /home/filter/procmailrc
---------
ORGMAIL=/var/spool/filter/filter
LOGFILE=/var/tmp/procmail.log  
HOME=/var/spool/filter          
SHELL=/bin/sh                  
MAILDIR=/var/spool/filter      
SPOOLDIR=/var/spool/filter      
#LOGABSTRACT=all                #*
#VERBOSE=on                     #*
SENDMAIL=/usr/sbin/sendmail    
DROPPRIVS=yes                  
DEFAULT=|                       #*

-----------
Права проверил? Он же от filter работает...
* - эти пункты выставил? Выставь, потом почитаешь /var/tmp/procmail.log.
DEFAULT=|? Если нет, ничего на выходе и не увидишь.


"postfix content_filter напомните"
Отправлено anton , 08-Сен-03 09:36 
>cat filter.sh?
>--------
>#!/bin/sh
>SENDMAIL="/usr/sbin/sendmail -i"
>PROCMAIL="/usr/bin/procmail -m /home/filter/procmailrc"
>INSPECT_DIR=/var/spool/filter
>EX_TEMPFAIL=75
>EX_UNAVAILABLE=69
>
>trap "rm -f in.$$" 0 1 2 3 15
>cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
>
>cat | $PROCMAIL | $SENDMAIL "$@" || \
>    { echo Message content rejected; exit $EX_UNAVAILABLE; }
>
>
>exit 0
>--------
>
>cat /home/filter/procmailrc
>---------
>ORGMAIL=/var/spool/filter/filter
>LOGFILE=/var/tmp/procmail.log
>HOME=/var/spool/filter
>SHELL=/bin/sh
>MAILDIR=/var/spool/filter
>SPOOLDIR=/var/spool/filter
>#LOGABSTRACT=all            
>    #*
>#VERBOSE=on            
>         #*
>SENDMAIL=/usr/sbin/sendmail
>DROPPRIVS=yes
>DEFAULT=|            
>          
>#*
>
>-----------
>Права проверил? Он же от filter работает...
>* - эти пункты выставил? Выставь, потом почитаешь /var/tmp/procmail.log.
>DEFAULT=|? Если нет, ничего на выходе и не увидишь.


да заработало видать в понедельник с утра голова лучше варит нежели в пятницу вечером. Спасибо