Функция bash для `pv fileName | sha256sum -b`

Это было мое окончательное решение после исследований и помощи от @tarleb

Моя доставка почты происходила через программу sendmail, которая добавляла некоторые дополнительные заголовки к моей почте. Я мог бы использовать mitter (почтовый фильтр) для фильтрации входящей почты и отказаться от использования sendmail, однако я решил перейти на Dovecot LDA для доставки.

Мой первоначальный фильтр был в начале файла Postfix master.cf:

smtp      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}

Я изменил конец файла для использования локальной доставки Dovecot на:

spamassassin unix -     n   n   -   -   pipe
    flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e 
    /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} 

Теперь отредактируйте Postfix main.cf и добавьте (необязательно, проверьте (3) ниже):

spamassassin_destination_recipient_limit = 1

Теперь ваша почта будет доставляться через Dovecot LDA без изменения заголовков. Для любопытных, вот некоторые подробности моего конфига:

  1. Этот конфиг можно использовать с разделителями плюс-адрес/под-адрес/получатель (письма, адресованные user+nospam@example.com будут доставлены в user@example.com inbox) -. Вот почему я добавил -d ${user}@${nexthop} это удалит + и все до домена. Чтобы включить эту возможность, также не забудьте добавить recipient_delimiter = + в main.cf;
  2. Мои флаги flags=DROhu, они не добавляют ничего аномального, но их можно понять здесь: http://www.postfix.org/pipe.8.html;
  3. spamassassin_destination_recipient_limit = 1 требуется для того, чтобы каждый получатель индивидуально обрабатывался spamassassin. Это требуется из-за D флага выше (Включает X-Original-To заголовок). Если у вас установлен флаг D и вы не установили spamassassin_destination_recipient_limit = 1, письма с несколькими пунктами назначения не будут доставлены! Если вам не важен этот заголовок, вы можете убрать флаг, и он не понадобится.

Редактирование: Бонусный контент - Переместите ваш СПАМ в папку Junk!

Вы также можете настроить Dovecot на перемещение почты, обнаруженной как SPAM, в папку Junk IMAP. Это, безусловно, облегчит вам жизнь. Просто выполните следующее:

  1. Отредактируйте /etc/dovecot/conf.d/15-mailboxes.conf и откомментируйте / добавьте папку Junk с (должно быть в разделе namespace inbox рядом с mailbox Trash):

    mailbox Junk {
     special_use = \Junk
    }
    
  2. Установите dovecot-sieve с помощью apt-get install dovecot-sieve;

  3. Отредактируйте /etc/dovecot/conf.d/90-sieve.conf и закомментируйте строку: #sieve = ~/.dovecot.sieve

  4. Редактируем /etc/dovecot/conf.d/90-plugin.conf так:

    plugin {
     sieve = /etc/dovecot/sieve/default.sieve
    }
    
  5. Отредактируйте /etc/dovecot/conf.d/15-lda.conf и /etc/dovecot/conf.d/20-lmtp.conf для соответствия:

    protocol lda/lmtp { # не копируйте/вставьте эту строку!
     mail_plugins = $mail_plugins sieve
    }
    

    WARNING: У вас могут быть другие настройки в строке protocol, сохраните их. Строка protocol lda/lmtp изменяется в файлах, сохраните оригинал.

  6. Создайте папку /etc/dovecot/sieve/

  7. Создайте файл /etc/dovecot/sieve/default.sieve с таким содержимым:

    require "fileinto";
    if header :contains "X-Spam-Flag" "YES" {
     fileinto "Junk"
    }
    
  8. Измените права доступа к папке на пользователя и группу виртуальной почты следующим образом: chown vmail:vmail /etc/dovecot/sieve/ -R. Если вы пропустите это, dovecot будет жаловаться!

  9. Перезапустите все: service postfix restart; service dovecot restart; service spamassassin restart

  10. Попробуйте отправить письмо на какой-нибудь email на сервере (с внешнего сервера), сначала обычное письмо, а затем другое с такой темой: XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X. Второе письмо должно попасть в папку Junk, а первое - в папку "Входящие".

Если это не сработает с первой попытки, посмотрите журналы: tail -f /var/log/mail.log и отправьте письмо, пока работает tail. Хорошая рабочая установка должна сообщать о сохраненной почте в почтовый ящик 'INBOX' или сохраненной почте в почтовый ящик 'Junk'.

4
19.10.2017, 16:22
0 ответов

Теги

Похожие вопросы