Назад | Перейти на главную страницу

Dovecot Sieve не запускается?

Я новичок в Dovecot, но до сих пор у меня все получалось довольно хорошо. Я запускаю dovecot с postfix, amavis и spamassassin, и все работает нормально, письма помечаются как нежелательные, отправка, получение, все в порядке.

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

Итак, я поискал в Интернете и нашел способ устранения неполадок, в котором говорилось, что сито, вероятно, не работает. Мне не удалось найти никаких записей журнала, сделанных ситом, так что это могло быть проблемой. Здесь я обнаружил, что вам нужно поместить сито в протоколы, я думаю, в dovecot.conf.

Я попробовал, но dovecot больше не публиковал неизвестный протокол: сито. Я добавил lmtp в протоколы, так как хочу его использовать, и он был опубликован в другом потоке, но я получил сообщение об ошибке: service (lmtp) accces failed: нет такого файла или каталога.

Некоторая системная информация:
ОС: Debian 7
Версия Dovecot: 2.1.7

Файлы конфигурации: dovecot.conf (уменьшается при изменении / добавлении)

protocols = imap pop3

plugin {
    sieve_before = /var/vmail/sieve/spam-global.sieve
    sieve_dir = /var/vmail/%d/%n/sieve/scripts/
    sieve = /var/vmail/%d/%n/sieve/active-script.sieve
}

conf.d / 20-lmtp.conf (создал его)

protocol lmtp {  
    # Space separated list of plugins to load (default is global mail_plugins).  
    mail_plugins = $mail_plugins sieve  
}  

spam-global.sieve

require "fileinto";  
if header :contains "X-Spam-Flag" "YES" {  
    fileinto "Spam";  
}  

Как я могу проверить, работает ли решето?

Afaik Postfix необходимо настроить для работы с ситом. Я не уверен, что делал это до сих пор, но пока сито не работает, это не решит проблему, верно?

Спасибо за любую помощь Недействительный

Вы говорите, что вам нужно было создать файл?

Похоже, вы никогда не устанавливали плагин протокола под dovecot.

  1. Во-первых, НЕ редактируйте (и не создавайте) установленные conf файлы, когда этого можно избежать. Сделай свой собственный. Создать /etc/dovecot/local.cf ИЛИ /etc/dovecot/conf.d/99-custom.conf (например).

  2. В более новых версиях дистрибутива Dovecot LDA (15-lda.conf) плагин установлен по умолчанию, но не плагин LMTP (20-lmtp.conf). Вы можете использовать плагин LDA. (Местный агент доставки).

  3. Если вы все еще хотите использовать LMTP, вам необходимо установить плагин: sudo apt install dovecot-lmtpd. Если бы вы это сделали, вам не нужно было бы создавать .conf файл для него.

Соответствующие области сита моего /etc/dovecot/local.cf:

protocol imap {

  mail_plugins = autocreate
}
plugin {
   autocreate = Spam
   autosubscribe = Spam
}

# SIEVE STUFF
# Include already included protocols and sieve:
protocols = $protocols sieve

# Allow sieve to be run out of LDA plugin/protocol:
protocol lda {
  mail_plugins = $mail_plugins sieve
}

# Sieve plugin settings
plugin {
   sieve = file:~/sieve;active=~/.dovecot.sieve
   sieve_default = /usr/local/lib/dovecot/sieve/default.sieve
   sieve_global = /usr/local/lib/dovecot/sieve/
}

# May not need this, but it doesn't hurt:
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}

Соответствующие области сита моего /etc/postfix/main.cf (используя dovecot lda / delivery):

mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

Мой default.sieve:

require ["envelope", "fileinto", "mailbox", "subaddress"];

if header :contains "X-Spam-Flag" "YES" {
        fileinto :create "Spam";
}
if header :contains "X-Amavis-Alert" "BAD HEADER SECTION" {
        fileinto :create "Spam";
}
if address :domain "From" "mydomain.net" {
   if not envelope :domain "From" "mydomain.net" {
      fileinto "Spam";
      stop;
   }
}
if address :domain "From" "mydomain.com" {
   if not envelope :domain "From" "mydomain.com" {
      fileinto "Spam";
      stop;
   }
}

Соответствующая область /etc/amavis/conf.d/50-user (или сделайте свой: 99-custom):

@local_domains_acl  = ( [ ".$mydomain", '.mydomain.net', '.mydomain.com' ] );
@local_domains_maps = ( [ ".$mydomain", '.mydomain.net', '.mydomain.com' ] );
# Do not quarantine or trash emails - hand off to LDA instead
$final_spam_destiny=D_PASS;
$final_virus_destiny=D_PASS;
$final_bad_header_destiny=D_PASS;
@addr_extension_spam_maps=('Spam');

Перезагрузите Dovecot и проверьте порт:

# sudo systemctl restart dovecot
# telnet 10.10.10.100 4190
Trying 10.10.10.100...
Connected to 10.10.10.100.
Escape character is '^]'.
"IMPLEMENTATION" "Dovecot (Ubuntu) Pigeonhole"
"SIEVE" "fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext"
"NOTIFY" "mailto"
"SASL" "PLAIN"
"STARTTLS"
"VERSION" "1.0"
OK "Dovecot (Ubuntu) ready."

Вывод отладки Dovecot - можно увидеть, как он работает:

2019-05-16 15:29:49 lda(emailuser1): Debug: Loading modules from directory: /usr/lib/dovecot/modules
2019-05-16 15:29:49 lda(emailuser1): Debug: Module loaded: /usr/lib/dovecot/modules/lib90_sieve_plugin.so
2019-05-16 15:29:49 lda(emailuser1): Debug: Effective uid=1000, gid=1000, home=/home/emailuser1
2019-05-16 15:29:49 lda(emailuser1): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/home/emailuser1/Maildir
2019-05-16 15:29:49 lda(emailuser1): Debug: maildir++: root=/home/emailuser1/Maildir, index=, indexpvt=, control=, inbox=/home/emailuser1/Maildir, alt=
2019-05-16 15:29:49 lda(emailuser1): Debug: userdb lookup skipped, username taken from USER environment
2019-05-16 15:29:49 lda(emailuser1): Debug: none: root=, index=, indexpvt=, control=, inbox=, alt=
2019-05-16 15:29:49 lda(emailuser1): Debug: Destination address: emailuser1@mydomain.net (source: -a parameter)
2019-05-16 15:29:49 lda(emailuser1): Debug: sieve: Pigeonhole version 0.4.21 (92477967) initializing
2019-05-16 15:29:49 lda(emailuser1): Debug: sieve: file storage: Storage path `/home/emailuser1/sieve' not found
2019-05-16 15:29:49 lda(emailuser1): Debug: sieve: file storage: Storage path `/home/emailuser1/.dovecot.sieve' not found
2019-05-16 15:29:49 lda(emailuser1): Debug: sieve: storage: Trying default script location `/usr/local/lib/dovecot/sieve/default.sieve'
2019-05-16 15:29:49 lda(emailuser1): Debug: sieve: file storage: Using Sieve script path: /usr/local/lib/dovecot/sieve/default.sieve
2019-05-16 15:29:49 lda(emailuser1): Debug: sieve: file script: Opened script `default' from `/usr/local/lib/dovecot/sieve/default.sieve'
2019-05-16 15:29:49 lda(emailuser1): Debug: sieve: Using the following location for user's Sieve script: /usr/local/lib/dovecot/sieve/default.sieve

Сито теперь работает. Ответ на ваш вопрос.

Что касается того, что я, возможно, упустил - каждая настройка может отличаться. Пожалуйста, просмотрите несколько статей, если вы все еще застряли. Мои глобальные правила сита хранят карантин в папках «Спам» для каждого пользователя (пользователи не являются виртуальными). Как уже указывалось, вам, вероятно, потребуется отредактировать свой постфикс main.cf (и master.cf, если виртуальные пользователи / vmail) как отмечено здесь использовать Dovecot LDA. Вам также, вероятно, потребуется отредактировать свой контент-фильтр (например, amavis-new), как указано. Есть статьи там для этого.