LINUX.ORG.RU
ФорумAdmin

Spamassassin+Postfix

 , ,


0

1

Добрый день люди добрые!

В очередной раз прошу помочь найти проблему. Не первый день бьюсь со спамассасином.

Изначально Freebsd + Postfix + Procmail + Spamassasin.

Через процмэйл работает. Настройки конфигурационного файла:

DROPPRIVS=yes
LOGFILE=/var/log/procmail.log
VERBOSE=yes
:0fw
| /usr/local/bin/spamassassin
:0
* ^X-Spam-Status: Yes
$HOME/Maildir//
:0
* !^X-Spam-Status: Yes
$HOME/Maildir//

Все бы хорошо, да логов нет. Не найдя способа отображения логов спамассасина при его таком использовании (через процмэйл) решил я попробовать запускать его через мастер.cf

За основу взял вот это: https://wiki.apache.org/spamassassin/IntegratedSpamdInPostfix

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

Решил сделать уже самый простой вариант указанный в этом мануале:

В одну строчку как и просят в мануале:

smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin

И еще:

spamassassin     
   unix  -       n       n       -       -       pipe
   user=nobody argv=/usr/local/bin/spamc -e /usr/local/SBIN/sendmail -oi -f ${sender} ${recipient}

Первое что бросается в логе:

Jun 28 16:16:50 mail spamd[822]: spamd: creating default_prefs: /nonexistent/.spamassassin/user_prefs
Jun 28 16:16:50 mail spamd[822]: config: cannot create user preferences file /nonexistent/.spamassassin/user_prefs: No such file or directory
Jun 28 16:16:50 mail spamd[822]: spamd: failed to create readable default_prefs: /nonexistent/.spamassassin/user_prefs

От какого тогда пользователя запускать, если от рута нельзя?

Далее тоже самое:

Jun 28 16:16:56 mail spamd[822]: plugin: eval failed: bayes: (in learn) locker: safe_lock: cannot create tmp lockfile /nonexistent/.spamassassin/bayes.lock.mail.avtodiagnost.pro.822 for /nonexistent/.spamassassin/bayes.lock: No such file
Jun 28 16:16:56 mail spamd[822]: spamd: clean message (-101.0/10.0) for nobody:58 in 6.7 seconds, 639 bytes.

Создаю пользователя и добавляю в группу спамд, которая видимо образовалась в момент установки спамассасина.

Jun 28 16:55:26 mail postfix/cleanup[4234]: 5AFB97D3E288: reject: header From: =?UTF-8?B?0J/QsNC50LrQvtCyINCQLtChLg==?= <as@мойдомен> from local; from=<as@мойдомен> to=<spambox@мойдомен>: 5.7.1 Spoofing
Jun 28 16:55:26 mail postfix/pipe[4235]: DFE8D7D3E252: to=<spambox@мойдомен>, relay=spamassassin, delay=2.5, delays=0.03/0.01/0/2.4, dsn=2.0.0, status=sent (delivered via spamassassin service)
Jun 28 16:55:26 mail postfix/cleanup[4234]: 5AFB97D3E288: message-id=<178ee2c0-0b5a-9112-8dba-fa58854a2cfd@мойдомен>

5.7.1 Spoofing - это ограничение для 25 порта ДЛЯ ВНЕШНЕГО АЙПИ!!!

Я так понимаю что спамасасин возвращает после обработки на внешний интрфейс? подскажите где я затупил!!!!



Последнее исправление: beastie (всего исправлений: 1)

Говорят rspamd хорошо выглядит.

sin_a ★★★★★
()

Частичное решение

Нашел схожую пробему на форуме - просто напросто создают необходимый файл для процесса спамассасина который пытается создать этот файл и никак не может.

А вот что делать с тем, что мое сообщение обрабатывается spamd относящийся к внещнему интерфейсу.

Я ради эксперемента закомментировал все строки ограничителей на внутреннем интерфейся и этот мой Spoofing уже приходит вслывающим окном в момент отправки письма.

Получается что постфикс сам меня отправил на spamd с внешним айпишником???

vehpbkrby
() автор топика

Может так?
Создать пользователя, например, mailagent. Потом в master.cf

spamassassin   unix  -       n       n       -       -       pipe
   flags=R user=mailagent argv=/usr/local/bin/spamc -u mailagent -e /usr/local/sbin/sendmail -f $sender $recipient 
Раньше надо было создать каталог /etc/mail/spamassassin/bayes (или где оно у тебя там указано в bayes_path) и назначить владельцем пользователя mailagent с правами 0755.

Логи можно перенаправить при запуске

spamd -l -d -s /var/log/spamd/spamd.log

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

а не могли бы разжевать что в итоге эта строка будет делать flags=R user=mailagent argv=/usr/local/bin/spamc -u mailagent -e /usr/local/sbin/sendmail -f $sender $recipient ???????????? я что не понимаю.. Флаг R будет заголовок возвращать... Зачем? Мы передали процессу спамс а он вызывается с параметром сэндмэйла? а почему в офиц документации пишут сэндмэйл , если у нас MTA postfix? объясните пожалуйста.

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

Плохо маны читаете. У меня вот так:

user=spamd argv=/usr/local/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Дам подсказку - spamc надо вызывать под тем же юзером, под которым работает сервер spamd. Во Фряхе по моему init скрипт даже по дефолту его использует, но можно прописать в rc.conf Ну и очевидные man 8 pipe, man 1 spamc, man 1 sendmail(вот тут вы удивитесь)

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

Частичное решение проблемы Спасибо, запуская от спамд, действительно помогло! ошибки в логах исчезли. Но письма не доходят до адресата:

Jun 29 08:00:09 mail postfix/cleanup[13277]: 63DA77D3E42B: reject: header From: =?UTF-8?B?0J/QsNC50LrQvtCyINCQLtChLg==?= <as@мой домен.ru> from local; from=<as@мойдомен.ru> to=<spambox@мойдомен.ru>: 5.7.1 Spoofing Но, что делать с обработкой рестрикшинами относящимися к другому интерфейсу?

3.2.4.23:smtp inet n - n - - smtpd внешний

Там есть ограничение -o smtpd_recipient_restrictions описывающий вот такое ограничение: /From:(.*)мойдомен\.ru>(.*)/ REJECT Spoofing

И есть внутренний интерфейс 192.168.1.1:smtp inet n - n - - smtpd -o content_filter=spamassassin

в котором нет такого ограничения.

user=spamd argv=/usr/local/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} -видимо перенаправление вывода на сендмэйл отправляет почему то на обработчик внешний... Как его перенаправить на внутренний? может в мастере первым описать внутренний интерфейс а ниже внешний?

*** поменял местами в мастере внутренний и внешний - не играет роли.

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

man 1 sendmail говорит нам что

«Postfix sendmail(1) relies on the postdrop(1) command to create a queue file in the maildrop directory»

Читаем http://www.postfix.org/OVERVIEW.html

Побуду телепатом и предположу что у вас main.cf глобальный header_checks и вы туда прописали что то типа «не принимать, если из моего домена». Проверку на спуфинг надо реализовать на уровне smtpd(8) с помощью check_sender_access, а не на pickup(8). Поэтому у вас письма и отбрасываются. И еще что-то не пойму пока зачем вам какой то внутренний и внешний интерфейс. У вас по идее должна быть только одна запись для трансфера писем на 25 порту для smtpd и как бест практис еще один submission smtpd на 587 порту для «своих», без привязки к физ. интерфейсу.

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

Спасибо за терпимость к моей бестолковости :)

Сейчас попытаюсь разобраться. Отпишусь. Еще раз спасибо ОГРОМНОЕ!!!! :)

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

Попробуйте использовать его - milter сильно упрощает взаимодействие postfix и сторонних приложений. Мне правда не приходилось использовать его на freebsd, так что по особенностям не подскажу.

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