Spam
Arch Linux:Dovecot Sieve 腳本無法編譯
- Arch Linux
- Linux 核心 4.9.36(64 位)
- 鴿舍 2.2.31 (65cde28)
- 在 Perl 版本 5.26.0 上執行的 SpamAssassin 版本 3.4.1
- 鴿巢 0.4.19-1
嘗試按照 Arch Linux Wiki 的Sieve 教程(我從遵循虛擬使用者郵件系統教程結束)來為第一批人設置郵件伺服器。
這應該啟用
spamtest
和spamtestplus
。逐字記錄 Wiki 所要求的內容,但sieve_trace_debug
為了便於閱讀並刪除了文件註釋。
/etc/dovecot/conf.d/90-sieve.conf
:plugin { sieve = file:~/sieve;active=~/.dovecot.sieve # Start Arch Linux Wiki Config <https://wiki.archlinux.org/index.php/Dovecot#Sieve> sieve_extensions = +spamtest +spamtestplus sieve_spamtest_status_type = score sieve_spamtest_status_header = \ X-Spam_score: (-?[[:digit:]]+\.[[:digit:]]).* sieve_spamtest_max_value = 5.0 sieve_before = /var/lib/dovecot/sieve/global_sieves/move_to_spam_folder.sieve # End Arch Linux Wiki Config sieve_trace_debug = yes }
這應該將垃圾郵件路由到垃圾文件夾。
/var/lib/dovecot/sieve/global_sieves/move_to_spam_folder.sieve
:require "spamtestplus"; require "fileinto"; require "relational"; require "comparator-i;ascii-numeric"; if spamtest :value "ge" :comparator "i;ascii-numeric" "5" { fileinto "Junk"; }
試圖編譯上面的。
$ sudo sievec /var/lib/dovecot/sieve/global_sieves/move_to_spam_folder.sieve
:move_to_spam_folder: line 1: error: require command: unknown Sieve capability `spamtestplus'. move_to_spam_folder: line 6: error: unknown test 'spamtest' (only reported once at first occurrence). move_to_spam_folder: error: validation failed. sievec(foo): Error: failed to compile sieve script '/var/lib/dovecot/sieve/global_sieves/move_to_spam_folder.sieve’
沒有工作,因為它找不到
spamtest
andspamtestplus
。所以我測試了配置。
sudo sieve-test -t - -Tlevel=matching /etc/dovecot/conf.d/90-sieve.conf /home/foo/test.eml
:90-sieve.conf: line 2: error: unexpected character(s) starting with '='. 90-sieve.conf: line 2: error: expected end of command ';' or the beginning of a compound block '{', but found unknown characters. 90-sieve.conf: line 2: error: unexpected character(s) starting with '~'. 90-sieve.conf: line 2: error: unexpected character(s) starting with '='. 90-sieve.conf: line 2: error: expected end of command ';' or the beginning of a compound block '{', but found unknown characters. 90-sieve.conf: line 2: error: unexpected character(s) starting with '.'. 90-sieve.conf: line 2: error: unexpected character(s) starting with '.'. 90-sieve.conf: line 5: error: unexpected character(s) starting with '='. 90-sieve.conf: line 5: error: unexpected character(s) starting with '+'. 90-sieve.conf: line 5: error: unexpected character(s) starting with '+'. 90-sieve.conf: line 7: error: unexpected character(s) starting with '='. 90-sieve.conf: line 8: error: unexpected character(s) starting with '='. 90-sieve.conf: line 8: error: unexpected character(s) starting with '\'. 90-sieve.conf: line 9: error: unexpected character(s) starting with '-'. 90-sieve.conf: line 9: error: unexpected character(s) starting with '-'. 90-sieve.conf: line 9: error: unexpected character(s) starting with '+'. 90-sieve.conf: line 9: error: unexpected character(s) starting with '.'. 90-sieve.conf: line 10: error: unexpected character(s) starting with '='. 90-sieve.conf: line 10: error: unexpected character(s) starting with '.'. 90-sieve.conf: line 12: error: unexpected character(s) starting with '='. 90-sieve.conf: line 12: error: unexpected character(s) starting with '.'. 90-sieve.conf: line 15: error: unexpected character(s) starting with '='. 90-sieve.conf: error: parse failed.
顯然它甚至無法讀取
/etc/dovecot/conf.d/90-sieve.conf
?它在等號上窒息?看來如果我修復了這個錯誤,我可以啟用
spamtest
andspamtestplus
,這反過來會$$ potentially $$修復
sievec
編譯錯誤。
doveconf -n
:# 2.2.31 (65cde28): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.19 (e5c7051) # OS: Linux 4.9.36-x86_64-linode85 x86_64 Arch Linux mail_home = /home/vmail/%d/%n mail_location = maildir:~ managesieve_notify_capability = mailto managesieve_sieve_capability = 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 passdb { args = /etc/dovecot/dovecot-sql.conf driver = sql } protocols = imap pop3 service auth { unix_listener auth-client { group = postfix mode = 0660 user = postfix } user = root } ssl_cert = </etc/ssl/private/vmail.crt ssl_key = # hidden, use -P to show it userdb { args = /etc/dovecot/dovecot-sql.conf driver = sql }
Dovecot 根本不提供您的篩網特定配置。如果您使用“per-feature”配置文件,您的
/etc/dovecot/dovecot.conf
文件應包含如下語句# Most of the actual configuration gets included below. The filenames are # first sorted by their ASCII value and parsed in that order. The 00-prefixes # in filenames are intended to make it easier to understand the ordering. !include conf.d/*.conf
哪個源中的各個配置文件
conf.d
。