LINUX.ORG.RU
ФорумAdmin

postfix + procmail


0

1

Здравствуйте! Есть кто-нибудь, у кого работает эта связка? Не могу разобраться с настройкой... Итак имеем: - внутренний почтовик зимбра (настроен, работает нормально), адрес 192,168,199,101 - почтовый шлюз на постфикс (настроен, работает нормально), внутренный адрес 192,168,199,150, внехний адрес ххх.ххх.ххх.ххх, внешний домен test.xxxxx.ru И вот хочется мне прикрутить к почтовому шлюзу фильтр, чтоб гибко рулить входящей и исходящей почтой. Но делаю что-то не так :( Вот мой /etc/procmailrc:

MAILDIR=/etc/postfix/procmail
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$MAILDIR/procmail.lock
SENDMAIL=/usr/sbin/sendmail
SHELL=/bin/bash

:0H
* ^From.*@list.ru
! babushkin@test.xxxxx.ru
Это правило перенаправляет все письма с ящиков @list.ru на babushkin@test.xxxxx.ru. ВОт ещё конфиг master.cf:
smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=procmail:
#submission inet n       -       n       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
    -o smtp_fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

procmail     unix  -       n       n       -       -       pipe
  flags=Rq user=mail argv=/usr/bin/procmail -f SENDER=${sender} -t RECIPIENT=${recipient} -m /etc/procmailrc
А вот что получается в логах, когда пишу со своего ящика:
Nov 15 19:19:56 test postfix/smtpd[1231]: connect from f21.mail.ru[217.69.129.88]
Nov 15 19:19:56 test postfix/smtpd[1231]: 6A6F21FF197: client=f21.mail.ru[217.69.129.88]
Nov 15 19:19:56 test postfix/cleanup[1234]: 6A6F21FF197: message-id=<E1RQJrf-0007hr-00.technotrance-list-ru@f21.mail.ru>
Nov 15 19:19:56 test postfix/qmgr[1133]: 6A6F21FF197: from=<technotrance@list.ru>, size=1606, nrcpt=1 (queue active)
Nov 15 19:19:56 test postfix/pipe[1235]: 6A6F21FF197: to=<miho@test.xxxxx.ru>, relay=procmail, delay=0.3, delays=0.17/0.04/0/0.09, dsn=2.0.0, status=sent (delivered via procmail service)
Nov 15 19:19:56 test postfix/qmgr[1133]: 6A6F21FF197: removed
Nov 15 19:19:56 test postfix/smtpd[1231]: disconnect from f21.mail.ru[217.69.129.88]
Nov 15 19:19:57 test sendmail[1237]: pAFEJuuL001237: from=mail, size=1611, class=0, nrcpts=1, msgid=<E1RQJrf-0007hr-00.technotrance-list-ru@f21.mail.ru>, relay=mail@localhost
Nov 15 19:19:57 test postfix/smtpd[1231]: connect from localhost[127.0.0.1]
Nov 15 19:19:57 test postfix/smtpd[1231]: 1EBDA1FF1E2: client=localhost[127.0.0.1]
Nov 15 19:19:57 test postfix/cleanup[1234]: 1EBDA1FF1E2: message-id=<E1RQJrf-0007hr-00.technotrance-list-ru@f21.mail.ru>
Nov 15 19:19:57 test postfix/qmgr[1133]: 1EBDA1FF1E2: from=<mail@test.xxxxx.ru>, size=1985, nrcpt=1 (queue active)
Nov 15 19:19:57 test sendmail[1237]: pAFEJuuL001237: to=babushkin@test.xxxxx.ru, ctladdr=mail (8/12), delay=00:00:01, xdelay=00:00:00, mailer=relay, pri=31611, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as 1EBDA1FF1E2)
Nov 15 19:19:57 test postfix/pipe[1235]: 1EBDA1FF1E2: to=<babushkin@test.xxxxx.ru>, relay=procmail, delay=0.2, delays=0.2/0/0/0.01, dsn=2.0.0, status=sent (delivered via procmail service)
Nov 15 19:19:57 test postfix/qmgr[1133]: 1EBDA1FF1E2: removed

...... так после 25 попыток получаем:

Nov 15 19:20:00 test postfix/smtpd[1231]: disconnect from localhost[127.0.0.1]
Nov 15 19:20:00 test sendmail[1261]: pAFEK0Kj001261: from=mail, size=5698, class=0, nrcpts=1, msgid=<E1RQJrf-0007hr-00.technotrance-list-ru@f21.mail.ru>, relay=mail@localhost
Nov 15 19:20:01 test sendmail[1261]: pAFEK0Kj001261: SYSERR(mail): Too many hops 26 (25 max): from mail via localhost, to babushkin@test.xxxxx.ru
Nov 15 19:20:01 test sendmail[1261]: pAFEK0Kj001261: pAFEK0Kk001261: DSN: Too many hops 26 (25 max): from mail via localhost, to babushkin@test.xxxxx.ru
Nov 15 19:20:01 test postfix/smtpd[1231]: connect from localhost[127.0.0.1]
Nov 15 19:20:01 test postfix/smtpd[1231]: 2C8221FF1F4: client=localhost[127.0.0.1]
Nov 15 19:20:01 test postfix/cleanup[1234]: 2C8221FF1F4: message-id=<201111151420.pAFEK0Kk001261@test.xxxxx.ru>
Nov 15 19:20:01 test postfix/qmgr[1133]: 2C8221FF1F4: from=<>, size=7773, nrcpt=1 (queue active)
Nov 15 19:20:01 test sendmail[1261]: pAFEK0Kk001261: to=mail, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=36722, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as 2C8221FF1F4)
Nov 15 19:20:01 test postfix/pipe[1235]: 2C8221FF1F4: to=<mail@test.xxxxx.ru>, relay=procmail, delay=0.25, delays=0.11/0/0/0.14, dsn=2.0.0, status=sent (delivered via procmail service)
Nov 15 19:20:01 test postfix/qmgr[1133]: 2C8221FF1F4: removed
Nov 15 19:20:01 test postfix/smtpd[1231]: disconnect from localhost[127.0.0.1]
Гуглив на эту тему, я где-то наткнулся на то, что люди говорят, что дело в sendmail. И вот тут я не совсем понимаю... Т.е. надо отучить procmail пользоваться сэндмэйлом? Помогите вникнуть пожалуйста...

По-моему, чесать правой пяткой левое ухо и проще и приятнее.

procmail искони юзают для раскладки прилетающей почты по локальным боксам, а редиректить почту прекрасно умеет сам постфикс. Зачем Вы делаете такой заколупистый костыль (да еще и sendmail приплели) - тайна великая есть.

billy ()

>Это правило перенаправляет все письма с ящиков @list.ru на babushkin@test.xxxxx.ru

постфикс умеет алиасы. нахрена этот огород? или ты парсить ТЕКСТ сообщений собираешься перед заворотом куда-то?

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

ммм... Сейчас попробую объяснить свою конечную цель. Дело в том, что у нас щас рабочая почта работает на виндовом Mdaemon. Я же хочу отказаться от винды и от MDaemon. Хочу мигрировать на свободное ПО. Но мешает мне это сделать вот что: На MDaemon у нас настроен глобальный почтовый фильтр. На нём прописаны вот такие правила:

Apply this rule to messages in the LOCAL & REMOTE queue

If the MESSAGE BODY contains 'порево' or ' секс ' or ' проститут ' or ' xxx ' or ' xxxx ' or ' жопа ' or 'задница' ...then send note 1 "to <admin@xxxxxxxxxxxxx. ru >","from <MDaemon@xxxxxx... and delete this message

-------------------------------------------------------------- Apply this rule to messages in the REMOTE queue

If the MESSAGE SIZE is greater than '10000K' ...then send note 1 "to <admin@xxxxxxxxx.ru>","from <MDaemon@xxxxxxxx... and send note 2 "to <$SENDER$>","from <MDaemon@xxxxxxxxxxxxx.ru>","subj... and delete this message

-------------------------------------------------------------- Apply this rule to messages in the LOCAL & REMOTE queue

If the FROM HEADER contains 'poltava@intellin.ru' or 'iramitrofanova@awerynos.ru' or 'hddurzzx@inbox.ru' or 'allafedorova@coperfilus.ru' or 'info@lode.de' or 'zo@mail495.ru' or 'mirtesen' or 'royalceramic.com' or 'bolid-src.ru' or 'gvc.com' or 'estrostudio.it' or 'abt-tuning.ru' or 'rachuba.com' or 'dialognn.ru' or 'pickuplife.ru' or 'prime-line.ru' or 'srgnv@yahoo.com' or 'derrylnero@mail.ru' or 'twilalindberg@mail.ru' or 'rolphmeling@mail.ru' or 'genevieschofield@mail.ru' or 'ryanneharleman@mail.ru' or '3710020@mail.ru' or 'irmaschorder@mail.ru' or 'mm-agency.ru' or If the REPLY-TO HEADER contains 'qip.ru' ...then delete this message

-------------------------------------------------------------- Apply this rule to messages in the LOCAL & REMOTE queue

If the FROM HEADER contains 'ao@xxxxxxxxxxxx.ru' and If the TO HEADER does not contain '@xxxxxxxxxxxxxx.ru' ...then copy this message to "ivanov@xxxxxxxxxxxx.ru"

-------------------------------------------------------------- Apply this rule to messages in the LOCAL & REMOTE queue

If the TO HEADER contains 'yyyyyyyyyy' ...then send note 1 "to <admin@xxxxxxxxxx.ru>","from <MDaemon@xxxxxxxxx... and header - search and replace "To","yyyyyyyyyyy","xxxxxxxxxxx","0,0," and body - search and replace "yyyyyyyyyy","xxxxxxxxxxxx","0,0"

-------------------------------------------------------------- Apply this rule to messages in the REMOTE queue

If the FROM HEADER contains 'petrova@xxxxxxxxxxx.ru' and If the TO HEADER does not contain 'xxxxxxxxxxxxxxx' ...then copy this message to "ivanov@xxxxxxxxxxxxx.ru"

-------------------------------------------------------------- Apply this rule to messages in the LOCAL & REMOTE queue

If the FROM HEADER contains 'zzzzzz@epn.ru' ...then copy this message to "evi@xxxxxxxxxxxxx.ru","sidorov@xxxxxxxxxxxx.ru"

-------------------------------------------------------------- Apply this rule to messages in the LOCAL & REMOTE queue

If the message contains a PASSWORD-PROTECTED ZIP file ...then send note 1 "to <admin@xxxxxxxxxxx.ru>","from <MDaemon@xxxxxxxxxx...
Можно ли аналогично настроить чисто средствами postfix? Я поэтому и захотел прикрутить procmail — на нём то ведь можно такие правила сделать. Или я неправильно мыслю?

technotrance ()
Ответ на: комментарий от technotrance

>Можно ли аналогично настроить чисто средствами postfix?

нет

Я поэтому и захотел прикрутить procmail — на нём то ведь можно такие правила сделать


можно, но не нужно. Для твоих целей подойдет spamassassin. Вот под него правила и пиши

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

>Можно ли аналогично настроить чисто средствами postfix?

нет


хотя я погорячился. есть body_check, но поверь - он тебе не нужен...

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

В данном случае, моя цель — это не фильтр спама, а настройка фильтра, с помощью которого мы сможем гибко и аккуратно перекрывать кислород пользователям. Я перечитал несколько статей про spamassassin, но так и не понял, имеет ли он такие же возможности, как procmail ?

technotrance ()
Ответ на: комментарий от technotrance

Такс, похоже что проблема решилась наибональнейше... yum remove sendmail

technotrance ()
Ответ на: комментарий от technotrance

>так и не понял, имеет ли он такие же возможности, как procmail ?

блокирование почтовые сообщения - это задача фильтра. В данном случае - спам-фильтра

Pinkbyte ★★★★★ ()

Снова вопросы...

Здравствуйте!

И снова вопрос по procmail... Подскажите, как научить procmail, чтоб он понимал шифрованное содержимое письма? Дело в том, что я хочу проводить определённые действия с письмами, сожержании которых, допустим, есть слово «porno». Пишу письмо с мэйловского ящика, в тексет которого встречается «porno», но письмо приходит вот в таком виде:

From SENDER=technotrance@list.ru Thu Dec 1 15:45:09 2011
Return-Path: <technotrance@list.ru>
Received: from f30.mail.ru (f30.mail.ru [217.69.129.95])
by test.example.ru (Postfix) with ESMTP id 585691FF17D
for <miho@test.example.ru>; Thu, 1 Dec 2011 15:45:09 +0500 (YEKT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail;
h=Message-Id:Content-Type:Reply-To:Date:Mime-Version:Subject:To:From; bh=b9O6z0pa79kRPAYw9kDy54Pkq09csjzXBzZqMH49M/I=;
b=CSs3jIyPL/Jko/RaNsnEJFBbMvdYmMdZ//aI+cFVdB87mFsAEYBXDERe8WASkCBdiNuM84ve7MnymdKDBKujnvykO5HEckW47n73FG3/GPx2aGF35nTs90eRcgGlkVAP;
Received: from mail by f30.mail.ru with local
id 1RW48a-0007Bf-00
for miho@test.example.ru; Thu, 01 Dec 2011 14:45:08 +0400
Received: from [91.191.234.235] by e.mail.ru with HTTP;
Thu, 01 Dec 2011 14:45:08 +0400
From: =?UTF-8?B?0J3QuNC60L7Qu9Cw0Lk=?= <technotrance@list.ru>
To: =?UTF-8?B?bWlobw==?= <miho@test.example.ru>
Subject: =?UTF-8?B?bWc=?=
Mime-Version: 1.0
X-Mailer: mPOP Web-Mail 2.19
X-Originating-IP: [91.191.234.235]
Date: Thu, 01 Dec 2011 14:45:08 +0400
Reply-To: =?UTF-8?B?0J3QuNC60L7Qu9Cw0Lk=?= <technotrance@list.ru>
X-Priority:
Content-Type: multipart/alternative;
boundary="--ALT--4zEDEMZ61322736308"
Message-Id: <E1RW48a-0007Bf-00.technotrance-list-ru@f30.mail.ru>
X-Spam: Not detected
X-Mras: Ok


----ALT--4zEDEMZ61322736308
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

bWpnbW5nIHBvcm5vIGtqeWZnCg==

----ALT--4zEDEMZ61322736308
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64

CjxIVE1MPjxCT0RZPm1qZ21uZyBwb3JubyBranlmZzxiciBkYXRhLW1jZS1ib2d1cz0iMSI+PC9C
T0RZPjwvSFRNTD4K

----ALT--4zEDEMZ61322736308--
Поэтому, правило в procmail не срабатывает. Подскажите, есть ли способы решить проблему? Или может как-то можно posfix настроить, чтоб он сначала расшифровывал содержимое, а уже потом отправлял его на procmail ?

P.S. сразу оговорюсь, что мне это надо не для фильтрации спама. Слово «porno» я чисто условно взял.

technotrance ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.