LINUX.ORG.RU
ФорумAdmin

Spamassassin + Postfix - ошибка (не работает доставка почты)

 , ,


0

1

Здравствуйте, всем,

Почта работала. Поставил Spamassassin. Попытался настроить. Явно что-то не так сделал, попытался откатить назад (закомментарил строчки в master.cf), но все равно не работает. Пишет в mail.log:

connect to transport private/spamassassin: Connection refused

Сам файл master.cf вот:

https://www.dropbox.com/s/jerue163xnm7pj9/master.cf?dl=1

Кроме того, установлен procmail, но с ним я вообще ничего не делал. В Webmin-e написано:

Warning - any rules defined below will not be used : Procmail is not enabled in your Postfix configuration. The configuration file /etc/postfix/main.cf must have the mailbox_command option set to /usr/bin/procmail.

No Procmail actions have been configured yet.

Про Spamassassin Webmin пишет так:

Warning!  SpamAssassin does not appear to be set up in the system's Procmail configuration file /etc/procmailrc, so any configuration done using this module will have no effect unless users have it set up individually. 

Подскажите, хотя бы, в какую сторону смотреть? Я не вижу. Прочитал кучу всяких описаний по настройке, но там все целиком ставят «с нуля», причем с антивирусом и почтой через mysql, у меня все в файлах, так что, где-то что-то не так написал, и теперь все сломалось. Помогите!

-Спасибо.

Убери Webmin и делай по инструкциям к каждому отдельному приложению. Когда научишься, можешь вернуть Webmin для упрощения настроек, которые ты уже будешь понимать.

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

Я Webmin использую в основном для редактирования конфигов. Что значит «убери»? Снести его, что ли? Совсем-то сносить не хотелось бы. Я же его в данном случае не использовал для настройки. И Postfix и Dovecot я настраивал вручную по инструкциям. Инструкции (отдельной) для Spamassassin я вообще не нашел. Где-то нашел буквально 4 строчки про "раскомментприть строку …. чтобы он стал добавлять ~SPAM~ к теме письма, и практически все. Можете мне подсказать, если у меня авторизация в Postfix идет через Dovecot, юзеры виртуальные, а ящики в каталогах /var/mail/vhosts/domain.com/user, то это вообще как называется вот в этом контексте:

"если вы не используете виртуальный транспорт, то

mailbox_command = /usr/bin/spamc -s 10485760 -u debian-spamd -e /usr/lib/dovecot/dovecot-lda

если используете, то

virtual_transport = dovecot

И еще: я использую SMTP через TLS, а тут написано:

smtp      inet  n       -       -       -       -       smtpd
   -o content_filter=spamassassin
submission inet n       -       -       -       -       smtpd
   -o content_filter=spamassassin
...........
spamassassin unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

submission - это же другой сервис? У меня написано вот это:

smtps     inet  n       -       y       -       -       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

Мне сюда эту дополнительную ~-o~ строчку вставлять?

И еще там (выше) написано ~user=debian-spamd~. У меня нету никакого «debian-spamd», а есть /usr/sbin/spamd. Мне его указывать что ли?

Не могу найти подходящей инструкции. Поэтому и спрашиваю.

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

Я Webmin использую в основном для редактирования конфигов. Что значит «убери»? Снести его, что ли?

В смысле без него и с пониманием, что делаешь. Это просто общая рекомендация, не только про Postfix/Dovecot. Правил бы конфиги - знал бы, что откатить. Хотя надо было просто бакап иметь. Я, на самом деле, не помогу подробнее, так как другую пару MTA/MDA использую. Теоретически я знаю, как это у Postfix делается, но лучше пусть подсказывают те, кто им занимается.

попытался откатить назад (закомментарил строчки в master.cf), но все равно не работает

Значит не всё откатил: нет причин не работать, если работало.

mailbox_command = /usr/bin/spamc -s 10485760 -u debian-spamd -e /usr/lib/dovecot/dovecot-lda

spamc получает сообщение в stdin, передаёт в spamd, получает ответ, что-то делает в соответствии с ним и выдаёт либо в stdout, либо куда -e указывает. В общем-то вот и всё. Я так понимаю, что в этой схеме Postfix полученное сливает в spamc, а тот потом в сокет dovecot-lda. А когда работало без, то Postfix напрямую лил в dovecot-lda. procmail в этой конфигурации не нужен по идее: вместо него Dovecot работает.

AS ★★★★★
()

никто тут не будет парсить ошибки от вебмина, никто им не пользуется (а те, кто пользуется, сами нуждаются в помощи и ничем не помогут) . Хочешь помощи - выкладывай логи и конфиги.

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 2)
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_tls_auth_only=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

А не слишком ли много ты закомментил? ;-)

Мне кажется, что многовато будет)

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

никто тут не будет парсить ошибки от вебмина

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

В принципе, ответы помогли примерно понять суть происходящего. Кроме того, после нескольких дней блуждания по мануалам наконец нашел то, что реально работает, хотя оно не описывает виртуальных пользователей. Это большой минус. Инструкция тут: https://samhobbs.co.uk/2014/03/raspberry-pi-email-server-part-4-spam-detection-with-spamassassin

Снес Spamassassin, затем снова его поставил, отредактировал конфиги в соотвествии с найденной инструкцией, и все в принципе заработало. Т.е. реальное письмо со спамом пометилось маркером, кроме того, я, понятно, протестировал с самотестом ассассина.

НО! Есть непонятности:

В инструкции написано:

rewrite_header Subject [***** SPAM _SCORE_ *****]

А в реальном /etc/spamassassin/

rewrite_header Subject [***** SPAM*****]

(т.е. без _SCORE_). Как правильно?

В том же local.cf написано почти по-русски :)

#   Save spam messages as a message/rfc822 MIME attachment instead of
#   modifying the original message (0: off, 2: use text/plain instead)
#
report_safe 0

Ставлю 0. При этом оригинал письма идет, как вложение. Как это понять, вообще??

Далее:

required_score 2.0

Поставил, согласно инструкции, минимальное значение, чтобы проверить вообще работает ли, и дальше уже поднимать порог. При этом в самом спамном письме он пишет вот это:

X-Spam-Status: Yes, score=8.8 required=5.0 tests=BASE64_LENGTH_79_INF,
	RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_RP_RNBL,RCVD_IN_SBL_CSS,RCVD_IN_XBL,
	URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2

Ну и где тут мое «2.0»? Я вижу «required=5.0», что вроде бы, является значением по умолчанию. Или инструкция устарела, и теперь минимум - это 5.0? Кроме того, в строчках выше упоминаются «autolearn=no» и «autolearn_force=no». Это где вообще такое? В конфиге таких нет. Есть «bayes_auto_learn 1» только. Это что за параметры? Их добавить или что?

И самое главное: Не понял, как сделать автоперемещение в IMAP каталог Spam/. В той же инструкции прочитал последнюю главу про Sieve, но там все про системных юзеров. Про виртуальных - ни звука. Попробовал сам написать Давкоту:

  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_dir=/var/mail/vhosts/%d/%n  <<<<==== это чисто мое, просто не знаю, как еще это ему сказать?

В каталоге ящика юзера user@mydomain.com /var/mail/vhosts/mydomain.com/user создал подкаталог .Spam/ (с внутренними new/ cur/ tmp/) и в самом user/ добавил файл .dovecot.sieve с содержимым, как в инструкции:

require ["fileinto","imap4flags"];
if header :contains "X-Spam-Flag" "YES" {
        addflag "\\Seen";
        fileinto "Spam";
        stop;
}

Владельцем всего вновь созданного сделал virtual:virtual, т.е. как и для всего остального в /var/mail/vhosts/

Ну и не работает. Вообще ноль реакции. Письма как валились во Входящие, так и валятся. Кто работал с Sieve и с виртуалами - подскажите, плиз!

-Спасибо.

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

Что бы не перечислять все ошибки и не понимание «в слове». Вы не знаете ничего про sa, так какая разница чего изучать. Сейчас «модно-молодежно» rspamd. Народ говорит лучше sa работает. Сам «все ещё хочу» попробовать, но все больше подбивают отзывы на него перейти. Так что я бы в 2020 попробовал его вместо sa.

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

(т.е. без _SCORE_). Как правильно?

Как хочешь. Хочешь число видеть, показывающее показатель спама, пиши так.

Кто работал с Sieve и с виртуалами

Правило на глаз правильное, но у меня Cyrus-IMAP. И я сам лично addflag не использовал. С fileinto «Spam» - тут каталог «Spam» в соответствии с регистром в правиле?

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

Касательно Sieve: выкинул .Spam/, назвал его .Junk/ и в ящиках Dovecot приписал описание каталога Junk. С клиента каталог виден, работает кнопка «Переместить в спам», но автоперенос как сделать? Приичем, хотелось бы это на уровне пользователя настраивать. Что, Sieve так не умеет? Не работает с виртуальными ящиками?

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

но автоперенос как сделать?

у Sieve есть глобальные правила для всех юзеров

Не работает с виртуальными ящиками?

виртуальные ящики это как раз стандарт.

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

Ну да, я просто написал, что про это все думает Webmin. Ну, вдруг, это поможет ответить? Ну, не помогло :) я уже понял. Да и черт с ним. Лучше по существу ответьте, если можете.

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

Так. Пошагово:

Конкретно про это что можете сказать?

sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_dir=/var/mail/vhosts/%d/%n

Правильно или неправильно?

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

по существу ответьте

по существу, я не очень понимаю, какую мы проблему обсуждаем. То, что сиви не складывает письма в спам или то, что нет коннекта к спамассамину?

По второму мне надо логи и конфиги. По первому мне надо тоже конфиги сиви.

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

Вот каталог ящика:

drwxr-sr-x 10 virtual virtual  4096 Jan 14 17:55  .
drwxr-sr-x  5 virtual virtual  4096 Jan  5 19:20  ..
drwx--S---  2 virtual virtual  4096 Jan 14 17:54  cur
drwxr-sr-x  5 virtual virtual  4096 Jan 14 17:53 '.Deleted Messages'
-rw-r--r--  1 virtual virtual   872 Jan 14 11:47  dovecot.index
-rw-r--r--  1 virtual virtual 29700 Jan 14 17:54  dovecot.index.cache
-rw-r--r--  1 virtual virtual  7788 Jan 14 17:55  dovecot.index.log
-rw-r--r--  1 virtual virtual 32800 Jan 14 11:47  dovecot.index.log.2
-rw-r--r--  1 virtual virtual    25 Jan  9 01:50  dovecot-keywords
-rw-r--r--  1 virtual virtual   888 Jan 14 14:31  dovecot.list.index
-rw-r--r--  1 virtual virtual  4232 Jan 14 18:15  dovecot.list.index.log
-rw-r--r--  1 virtual virtual  8204 Jan 14 14:31  dovecot.list.index.log.2
-rw-r--r--  1 virtual virtual   216 Jan 14 11:47  dovecot.mailbox.log
-rwxr-xr-x  1 virtual virtual   146 Jan 14 11:55  .dovecot.sieve
-rw-r--r--  1 virtual virtual   746 Jan 14 17:54  dovecot-uidlist
-rw-r--r--  1 virtual virtual     8 Jan 14 11:47  dovecot-uidvalidity
-r--r--r--  1 virtual virtual     0 Jan  6 01:22  dovecot-uidvalidity.5e124587
drwxr-sr-x  5 virtual virtual  4096 Jan  6 01:28  .Drafts
drwxr-sr-x  5 virtual virtual  4096 Jan 14 17:54  .INBOX.Trash
drwxr-sr-x  5 virtual virtual  4096 Jan 14 17:55  .Junk
drwx--S---  2 virtual virtual  4096 Jan 14 17:53  new
drwxr-sr-x  5 virtual virtual  4096 Jan  9 01:45 '.Sent Messages'
-rw-r--r--  1 virtual virtual    76 Jan 14 11:47  subscriptions
drwx--S---  2 virtual virtual  4096 Jan 14 17:46  tmp
DeadlineX
() автор топика
Ответ на: комментарий от constin

То, что сиви не складывает письма в спам

Spamassassin письма метит. С этим нет проблем. Но они остаются во Входящих.

Щас будут конфиги…

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

Вот типичная реакция на спам (mail.log):

Jan 14 17:46:36 raspberrypi postfix/smtpd[31227]: connect from unknown[190.152.19.62]
Jan 14 17:46:40 raspberrypi postfix/smtpd[31227]: 7510C43A58: client=unknown[190.152.19.62]
Jan 14 17:46:43 raspberrypi postfix/cleanup[31232]: 7510C43A58: message-id=<7E3E1B34.48E4BEC0@cnt-grms.ec>
Jan 14 17:46:43 raspberrypi postfix/qmgr[26554]: 7510C43A58: from=<PaulHilllbni@cnt-grms.ec>, size=2081, nrcpt=1 (queue active)
Jan 14 17:46:43 raspberrypi spamd[944]: spamd: connection from ::1 [::1]:33696 to port 783, fd 5
Jan 14 17:46:43 raspberrypi spamd[944]: spamd: setuid to debian-spamd succeeded
Jan 14 17:46:43 raspberrypi spamd[944]: spamd: processing message <7E3E1B34.48E4BEC0@cnt-grms.ec> for debian-spamd:114
Jan 14 17:46:44 raspberrypi postfix/smtpd[31227]: disconnect from unknown[190.152.19.62] ehlo=1 mail=1 rcpt=1 data=1 commands=4
Jan 14 17:46:49 raspberrypi spamd[944]: spamd: identified spam (29.1/2.0) for debian-spamd:114 in 5.8 seconds, 2046 bytes.
Jan 14 17:46:49 raspberrypi spamd[944]: spamd: result: Y 29 - CK_HELO_GENERIC,DRUGS_ERECTILE,HELO_DYNAMIC_SPLIT_IP,HTML_MESSAGE,HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY,ONLINE_PHARMACY,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_MSPIKE_BL,RCVD_IN_MSPIKE_L5,RCVD_IN_PSBL,RCVD_IN_RP_RNBL,RCVD_IN_SBL_CSS,RCVD_IN_XBL,RDNS_NONE,SUBJECT_DRUG_GAP_C,TVD_RCVD_IP,TVD_VISIT_PHARMA,URIBL_ABUSE_SURBL,URIBL_BLACK,URIBL_DBL_SPAM,URIBL_SBL,URIBL_SBL_A scantime=5.8,size=2046,user=debian-spamd,uid=114,required_score=2.0,rhost=::1,raddr=::1,rport=33696,mid=<7E3E1B34.48E4BEC0@cnt-grms.ec>,autolearn=spam autolearn_force=no
Jan 14 17:46:49 raspberrypi postfix/pickup[31226]: 4F09443A5D: uid=114 from=<PaulHilllbni@cnt-grms.ec>
Jan 14 17:46:49 raspberrypi postfix/cleanup[31232]: 4F09443A5D: message-id=<7E3E1B34.48E4BEC0@cnt-grms.ec>
Jan 14 17:46:49 raspberrypi postfix/pipe[31234]: 7510C43A58: to=<user@domain.com>, relay=spamassassin, delay=10, delays=4.5/0.05/0/5.9, dsn=2.0.0, status=sent (delivered via spamassassin service)
Jan 14 17:46:49 raspberrypi postfix/qmgr[26554]: 7510C43A58: removed
Jan 14 17:46:49 raspberrypi postfix/qmgr[26554]: 4F09443A5D: from=<PaulHilllbni@cnt-grms.ec>, size=5033, nrcpt=1 (queue active)
Jan 14 17:46:49 raspberrypi postfix/virtual[31240]: 4F09443A5D: to=<user@domain.com>, relay=virtual, delay=0.07, delays=0.03/0.02/0/0.02, dsn=2.0.0, status=sent (delivered to maildir)
Jan 14 17:46:49 raspberrypi postfix/qmgr[26554]: 4F09443A5D: removed
Jan 14 17:46:49 raspberrypi spamd[840]: prefork: child states: II
DeadlineX
() автор топика
Ответ на: комментарий от DeadlineX

Spamassassin + Postfix - ошибка (не работает доставка почты)

тогда может другой почт сделать лучше?

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

postfix/main.cf:

mailbox_transport = lmtp:unix:private/dovecot-lmtp

postfix/master.cf:

smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
.........
smtps     inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
.........
dovecot   unix  -       n       n       -       -       pipe
  #flags=DRhu user=virtual:virtual argv=/usr/lib/dovecot/deliver -d ${recipient}
  flags=DRhu user=virtual:virtual argv=/usr/bin/spamc -u spamd -s 10485760 -e /usr/lib/dovecot/deliver -d ${recipient}
  #flags=DRhu user=virtual:virtual argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
spamassassin
          unix  -       n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
  #flags=DROhu user=virtual:virtual argv=/usr/bin/spamc -f -e /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}

dovecot/conf.d/10-master.cf

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0666
  }

dovecot/conf.d/15-mailboxes.cf

namespace inbox {
  # These mailboxes are widely used and could perhaps be created automatically:
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Trash {
    special_use = \Trash
  }

  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }

dovecot/conf.d/90-sieve.cf

  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_dir=/var/mail/vhosts/%d/%n

  sieve_default = /var/lib/dovecot/sieve/default.sieve

Здесь я sieve_default написал просто для эксперимента, но все равно нет эффекта никакого.

Если еще какие конфиги надо - говорите, я просто не знаю, куда еще заглянуть.

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

Spamassassin письма метит. С этим нет проблем. Но они остаются во Входящих.

То есть, письмо уже теперь попадает в нужный ящик с нужными пометками от spamassassin-а? Тогда теперь разбирайся с Dovecot, конфиги Postfix и Spamassassin смотреть больше не нужно. Не путай и не пиши лишнее. Как только Dovecot сообщение получил от Postfix или spamc, дальнейшая раскладка по ящикам/папкам дело исключительно его.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 3)
Ответ на: комментарий от AS

Spamassassin + Postfix - ошибка (не работает доставка почты) [Solved]

В общем, победа, вроде :) В вышеприведенной инструкции не было сказано про виртуальных юзеров. В этом случае успех принесло вот это:

В /etc/postfix/main.cf:

virtual_transport = lmtp:unix:private/dovecot-lmtp

В /etc/dovecot/conf.d/10-master.conf

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
 }

Собственно, это последнее было написано по инструкции, но вот первого в инструкции не было,

Ну, и в /etc/dovecot/conf.d/90-sieve.conf:

plugin {
..........
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_dir=/var/mail/vhosts/%d/%n
..........
}

После этого скрипт в каталоге ящика юзера начинает работать. Кстати, в 90-sieve.conf есть директивы для отладчика скриптов, что позволяет проверять, как именно работает sieve.

Всем, спасибо!

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

Поставь на теме отметку «Решено»

Куда конкретно тыкануться для этого?

А мог бы просто сразу скинуть конфиги и логи

А здесь можно ссылки на конфиги постить? Типа на dropbox какой-нибудь? Или обязательно в тексте? В тексте же очень неудобно читать.

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