Почтовая связка fetcmail-procmail-mutt

Здесь обсуждаются все вопросы, не попадающие под другие категории
Аватара пользователя
sanitar
Неотъемлемая часть форума
Сообщения: 1116
Зарегистрирован: 28 ноя 2002, 02:23
Откуда: Минск

Почтовая связка fetcmail-procmail-mutt

Сообщение sanitar »

Имею несколько внешних почтовых ящиков.
До сих пор пользовался thunderbird, однако к нему был ряд претензий --
1) утомительное тупое мышекликанье при настройке многочисленных фильтров
2) привязка настроек пользователя к мозилльному chrome-профилю, который имеет способность слетать без предупреждения при невежливом обращении.
3) загаживание системы лишним тяжеловесным гуем

Решил опробовать классическую связку.
Сейчас почту сгребает fetchmail в /var/spool/username, оттуда ее procmail по мере появления расколбашивает по mbox-ам, где почта читается mutt-ом.

Хотелось бы получить общие рекомендации опытных людей о том в каком направлении копать для реализации следующих задач:

1) прикрутка в цепочку spamassassina --> каким путем его наиболее правильно прикручивать, чтобы не мешать procmail-у?
2) В силу разных причин необходимо использовать несколько smarthosts для отправки мейлов, причем некоторые из них используют SMTP-авторизацию, некоторые SSL. Через какой smarthost слать --необходимо определяеть по полю From исходящего письма либо (если по другому не получится) -- руками при отсылке.
Есть ли возможность реализовать это без написания собственного MTA? Если есть, то какой MTA лучше использовать, и в какую сторону над ним трясти бубном?

Опциональные задачи на будушее
3) каким-либо образом научить fetchmail авторизовываться на хостах, где имя юзера включает @ и доменную часть

4) не качать спам-траффик. Предполагаю что для этого потребуется соорудить следующую конструкцию (если реально):
a) по POP-3 либо IMAP качаются заголовки писем
б) отдаются spamassassin-у либо аналогу
в) по POP-3 либо IMAP -соединению с сервера убиваются письма, забракованные на предыдущем шаге cпам-фильтром
г) оставшееся качается целиком и отдается procmail-у по стандартной схеме.
Последний раз редактировалось sanitar 10 фев 2005, 14:18, всего редактировалось 1 раз.
I'll kill this code without a knife -- with only fork().

Аватара пользователя
sanitar
Неотъемлемая часть форума
Сообщения: 1116
Зарегистрирован: 28 ноя 2002, 02:23
Откуда: Минск

Сообщение sanitar »

В связи с тем что для реализации вышеуказанных задач требуется прочесть изрядное количество документации, буду благодарен за следующую помощь в повышении КПД данного чтения:

1) определение задач которые реализовать невозможно по определению
2) названия проверенных в деле программ, линки на хорошо зарекомендовавшую себя документацию
3) общее краткое описание возможных граблей и направления их обхода

Спасибо.

PS. Используемый дистр -- Debian Sarge
I'll kill this code without a knife -- with only fork().

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Re: Почтовая связка fetcmail-procmail-mutt

Сообщение Llama »

sanitar писал(а): Опциональные задачи на будушее
3) каким-либо образом научить fetchmail авторизовываться на хостах, где имя юзера включает @ и доменную часть

Код: Выделить всё

poll nnn.mmm.by with proto POP3
       user 'username@nnn.mmm.by' there with password 'password' keep
Работает без проблем.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
invox
Неотъемлемая часть форума
Сообщения: 395
Зарегистрирован: 12 сен 2002, 17:53
Откуда: Минск
Контактная информация:

Сообщение invox »

a) по POP-3 либо IMAP качаются заголовки писем
б) отдаются spamassassin-у либо аналогу
это как-то совсем извращенчески :)
SA нужно все тело письма, он его целиком парсит и проверяет на наличие определенных образцов. На уровне проверки только заголовков осеиваться будет очень небольшая часть

Аватара пользователя
invox
Неотъемлемая часть форума
Сообщения: 395
Зарегистрирован: 12 сен 2002, 17:53
Откуда: Минск
Контактная информация:

Сообщение invox »

2) В силу разных причин необходимо использовать несколько smarthosts для отправки мейлов, причем некоторые из них используют SMTP-авторизацию, некоторые SSL. Через какой smarthost слать --необходимо определяеть по полю From исходящего письма либо (если по другому не получится) -- руками при отсылке.
По-идее, задача проста - если есть у тебя несколько адресов, почта с которых должна уходить через разные SMTP, открой несколько account'ов в почтовом клиенте. Соответственно, на каждом из них будет указан свой сервер для отправки

Это если я правильно понял постановку задачи :)

PS. Идея со smarthost идеологически неверная. Это как default route, их не может быть несколько

Аватара пользователя
invox
Неотъемлемая часть форума
Сообщения: 395
Зарегистрирован: 12 сен 2002, 17:53
Откуда: Минск
Контактная информация:

Сообщение invox »

1) прикрутка в цепочку spamassassina --> каким путем его наиболее правильно прикручивать, чтобы не мешать procmail-у?
видимо, procmailrc - самое подходящее место. Пример :

Код: Выделить всё

LOGFILE=/var/log/procmail
:0fw
* < 256000
        | spamc
        :0e
        {
                EXITCODE=$?
        }
:0
* ^X-Spam-Status: Yes
| /usr/sbin/sendmail -oi spam@domain.com
Это если хочешь коллекционировать образцы спама в специальном ящике

как это мешает procmail'у???

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

из ~./procmailrc
:0fw: $MAILDIR/spamassassin.lock
*
| spamc
#| spamassassin --local -a
есть и новый и старый варианты использования (старый - закомментарен)

выгребание в /var/mail/$USERNAME с последующим раскладыванием - не практикую, у меня проще и страшнее:
poll mail.net with proto pop3
user 'user' there with password 'password' is 'mend0za' here options fetchall
mda 'procmail -Y -d %T'

то бишь раскладка проходит мимо mail-сервера прямо в ящики в папке ~/mail

хорошо натаскать как следует sa (см sa-learn), как на
спам, и на хорошую почту.

Обобщу:
У меня сейчас работает следующим образом:
fetchmail->sa (в серверном варианте, но настройки берёт из юзерского каталога)->procmail->папки в $HOME/mail->mutt

папки из $HOME/mail прописаны как mailbox'es в .muttrc.

отсылка - через smarthost (единый) в exim
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Аватара пользователя
sanitar
Неотъемлемая часть форума
Сообщения: 1116
Зарегистрирован: 28 ноя 2002, 02:23
Откуда: Минск

Сообщение sanitar »

Llama, cпасибо. Тут подвела излишняя доверчивость к докам -- прочел в процессе освоения фетчмайла, что подобные адреса могут вызвать у него несварение... ну и не стал пробовать, начал искать костыли :)
PS. Идея со smarthost идеологически неверная. Это как default route, их не может быть несколько
Не спорю что дефолтный релей должен быть один. Вопрос был в том, что нужны релеи для специфических задач. :) Например, для мыла которое должно бегать исключительно внутри одного почтового сервера, а наружу выходить сугубо к юзерам по SSL :)
Развиваю аналогию с маршрутизацией -- дефолтный маршрут наружу один, но не обязательно внутренний траффик пускать через него :)
I'll kill this code without a knife -- with only fork().

Аватара пользователя
sanitar
Неотъемлемая часть форума
Сообщения: 1116
Зарегистрирован: 28 ноя 2002, 02:23
Откуда: Минск

Сообщение sanitar »

Народ, спасибо за советы по прикручиванию sa.
Маленький дурацкий вопрос по опции --fw в процмайле.

В документации на сей счет написано, что дождавшись exitcode от фильтра, и если этот экзиткод не равен нулю... фильтрованное сообщение будет считаться не прошедшим фильтр.
Куда оно дальше отправится в варианте мендозы?
в /dev/null?
I'll kill this code without a knife -- with only fork().

tungus
Интересующийся
Сообщения: 44
Зарегистрирован: 11 авг 2002, 04:19

Re: Почтовая связка fetcmail-procmail-mutt

Сообщение tungus »

sanitar писал(а): Сейчас почту сгребает fetchmail в /var/spool/username, оттуда ее procmail по мере появления расколбашивает по mbox-ам, где почта читается mutt-ом.
Лучше по-моему использовать сразу procmail. См. параметр mda у fetchmail
sanitar писал(а): 2) В силу разных причин необходимо использовать несколько smarthosts для отправки мейлов, причем некоторые из них используют SMTP-авторизацию, некоторые SSL. Через какой smarthost слать --необходимо определяеть по полю From исходящего письма либо (если по другому не получится) -- руками при отсылке.
Есть ли возможность реализовать это без написания собственного MTA? Если есть, то какой MTA лучше использовать, и в какую сторону над ним трясти бубном?
msmtp? Он делался под mutt ( хотя можно использовать его и без mutt).
sanitar писал(а): Маленький дурацкий вопрос по опции --fw в процмайле.

В документации на сей счет написано, что дождавшись exitcode от фильтра, и если этот экзиткод не равен нулю... фильтрованное сообщение будет считаться не прошедшим фильтр.
Куда оно дальше отправится в варианте мендозы?
в /dev/null?
Может быть :fw? Если письмо прошло фильтр, то для следующих правил в procmailrc используется вывод фильтра. Если не прошло фильтр - то дальше использутся то-что было до фильтра.
sanitar писал(а): 4) не качать спам-траффик. Предполагаю что для этого потребуется соорудить следующую конструкцию (если реально):
Так просто как уже сказали не получиться, т. к. надо ещё тело письма. Но можно использовать public spamfiltr ( типа spamtest.ru).

Аватара пользователя
sanitar
Неотъемлемая часть форума
Сообщения: 1116
Зарегистрирован: 28 ноя 2002, 02:23
Откуда: Минск

Сообщение sanitar »

thxs за дополнительные идеи...
I'll kill this code without a knife -- with only fork().

Аватара пользователя
Andrej Ramaszeuski
Неотъемлемая часть форума
Сообщения: 507
Зарегистрирован: 28 ноя 2003, 11:42
Откуда: Pardubice, CZ
Контактная информация:

Сообщение Andrej Ramaszeuski »

sanitar писал(а):Маленький дурацкий вопрос по опции --fw в процмайле.
Если утомит сражаться с procmail - попробуй посмотреть в сторону maildrop - imho много приятнее.
Linux is like a wigwam: no Windows, no Gates and Apache inside.

Аватара пользователя
invox
Неотъемлемая часть форума
Сообщения: 395
Зарегистрирован: 12 сен 2002, 17:53
Откуда: Минск
Контактная информация:

Сообщение invox »

Если утомит сражаться с procmail - попробуй посмотреть в сторону maildrop - imho много приятнее.
По-моему, так тот же геморрой, только другого вида.
Да, язык управления потоками другой, но функционал не впечатляет.
Попробуйте поработать, отлаживая свой скрипт и поймете о чем я.

Иногда проще свой обработчик на perl написать. IMHO

Аватара пользователя
sanitar
Неотъемлемая часть форума
Сообщения: 1116
Зарегистрирован: 28 ноя 2002, 02:23
Откуда: Минск

Сообщение sanitar »

М-м-м... еще вопросик насчет sa.

Смущало меня, что в спамные письма не добавляется никаких заголовков при фильтрации.
И вообще реакция spamc незаметна.

Делаем следующее:

Вводим в .procmailrc строку
| spamc -R >> spamtest.txt

Берем в mutt заведомый спам
| sa-learn --spam
| procmail -Y -d sanitar

Берем заведомый ham
| sa-learn --ham
| procmail -Y -d sanitar

В обоих случаях в файл spamtest добавляются строки "0/0"
Т.е. ни одно ни другое письмо sa спамом не считает.
Хотя обучается нормально -- когда пайпишь sa-learn письмо в первый раз, он сообщает что обучился на 1 месседже, второй раз -- что обучился на 0 месседжей.

Вопрос -- в какую сторону собака порылась?
I'll kill this code without a knife -- with only fork().

Аватара пользователя
sanitar
Неотъемлемая часть форума
Сообщения: 1116
Зарегистрирован: 28 ноя 2002, 02:23
Откуда: Минск

Сообщение sanitar »

Мой вариант лечения такой -- фильтруем мыло через сам spamassassin, без spamc.

ассассин прекрасно отрабатывает свою задачу -- упаковывает спамовое письмо аттачем, и ставит ему спамстатус yes.

И следующим правилом мыло с "X-spam-status: Yes" щвыряем в отстойник, который изредка просматриваем в поисках случайных жертв, и периодически удаляем целиком.
I'll kill this code without a knife -- with only fork().

Ответить