這是第 10 部分 CentOS 8 / RHEL8 郵件服務器從零開始 教程系列。在本文中,我將向您展示如何使用它。 阿馬比斯 什麼時候 蛤蜊AV 掃描您的電子郵件中的病毒。
阿馬比斯 (Email Virus Scanner) 是郵件傳輸代理 (MTA) 之間的高性能接口,例如: 後綴 和內容過濾器。內容過濾器是掃描電子郵件標題和正文的程序,通常會根據發現的內容採取一些措施。內容過濾器最常見的示例是: ClamAV 病毒掃描程序 什麼時候 垃圾郵件殺手..
Amavis 使用標準的 SMTP 協議,也可以使用 Sendmailmilter 接口。 通常用於以下目的:
- 通過與 ClamAV (Clam AntiVirus) 集成進行病毒掃描
- 通過與 SpamAssassin 集成進行垃圾郵件檢查
- DKIM 簽名和驗證。 (事實上,我更喜歡使用 OpenDKIM 進行 DKIM 簽名和驗證。)
先決條件
對於本教程系列,您必須從頭開始至少完成 CentOS 8 / RHEL 8 郵件服務器的第 1 部分(Postfix SMTP 服務器)和第 2 部分(Dovecot IMAP 服務器)。 如果您使用 iRedMail 或 Modoboa 來設置您的郵件服務器,則無需遵循本教程,因為 Amavis 和 ClamAV 已經安裝和配置。
溫暖的: Amavis 和 ClamAV 需要相當多的 RAM。 在安裝 Amavis 和 ClamAV 之前,請確保您的服務器至少有 1.3GB 的可用 RAM。至少對於整個郵件服務器堆棧(Postfix、Dovecot、Amavis、ClamAV、SpamAssassin、OpenDKIM、MySQL / MariaDB、PostfixAdmin、Roundcube Webmail) 3 GB RAM 運行順暢。 內存不足可能會導致郵件服務器脫機或無響應等問題。
第 1 步:在 CentOS 8 / RHEL 8 上安裝 Amavis
Amavis 是用 Perl 編寫的。 EPEL(企業 Linux 的附加包)和 CodeReadyLinuxBuilder 存儲庫必須啟用 RHEL 8 為 Amavis 安裝一些 Perl 依賴項。
sudo dnf install epel-release sudo subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms
存在 CentOS 8啟用 EPEL(企業 Linux 的附加包)和 PowerTools 存儲庫以安裝 Amavis Perl 依賴項。
sudo dnf install epel-release -y sudo dnf config-manager --set-enabled powertools
然後安裝 amavis
盒。
sudo dnf install amavis -y
檢查版本號
amavisd -V
樣本輸出:
amavisd-new-2.12.0 (20190725)
該病毒通常以電子郵件附件的形式傳播。 在 Amavis 上安裝以下軟件包以提取和掃描電子郵件中的存檔文件。 .7z
, .cab
, .doc
, .exe
, .iso
, .jar
, 什麼時候 .rar
文檔。
sudo dnf -y install arj bzip2 cpio file gzip nomarch spax unrar p7zip unzip zip lrzsz lzip lz4 lzop
請注意,如果服務器不使用完全限定域名 (FQDN) 作為主機名,Amavis 可能無法啟動。我們還建議您直接在 Amavis 配置文件中設置有效的主機名,因為操作系統的主機名可能會發生變化。
sudo nano /etc/amavisd/amavisd.conf
找到下一行。
$mydomain = 'example.com'; # a convenient default for other settings
我們還建議您將默認 mydomain 值更改為您自己的域名。
$mydomain = 'linuxbabe.com'; # a convenient default for other settings
然後找到以下行:
# $myhostname="host.example.com"; # must be a fully-qualified domain name!
刪除和更改第一個評論字符 host.example.com
將其更改為您的郵件服務器的主機名,如下所示。
$myhostname="mail.linuxbabe.com"; # must be a fully-qualified domain name!
保存並關閉文件。您現在可以啟動 Amavis。
sudo systemctl start amavisd
啟動時啟用自動啟動。
sudo systemctl enable amavisd
檢查其狀態:
systemctl status amavisd
樣本輸出:
● amavisd.service - Amavis mail content checker Loaded: loaded (/usr/lib/systemd/system/amavisd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-11-19 01:21:26 EST; 8s ago Docs: https://www.ijs.si/software/amavisd/#doc Main PID: 18782 (/usr/sbin/amavi) Tasks: 3 (limit: 12502) Memory: 149.5M CGroup: /system.slice/amavisd.service ├─18782 /usr/sbin/amavisd (master) ├─18806 /usr/sbin/amavisd (virgin child) └─18807 /usr/sbin/amavisd (virgin child)
暗示:如果上述命令沒有立即完成,請按 Q。
如您所見,Amavis 正在運行。如果沒有,那麼(sudo journalctl -eu amavisd
)。
Amavisd 監聽 127.0.0.1:10024 並且可以看到以下內容:
sudo ss -lnpt | grep amavi
那樣 amavis
用戶。
第 2 步:將 Postfix SMTP 服務器與 Amavis 集成
Amavis 充當 SMTP 代理。電子郵件通過 SMTP 發送、處理並通過新的 SMTP 連接反饋給 MTA。
運行以下命令。此命令告訴 Postfix 通過將所有傳入的郵件消息發送到 Amavis 來打開內容過濾,Amavis 在 127.0.0.1:0024 進行偵聽。
sudo postconf -e "content_filter = smtp-amavis:[127.0.0.1]:10024"
另外,運行以下命令:這會延遲與 Postfix 的內容過濾器的連接,直到收到整個電子郵件。這可以防止內容過濾器在慢速 SMTP 客戶端上浪費時間和資源。
sudo postconf -e "smtpd_proxy_options = speed_adjust"
然後編輯 master.cf
文檔。
sudo nano /etc/postfix/master.cf
將以下行添加到文件末尾。這告訴 Postfix 使用一個特殊的 SMTP 客戶端組件,稱為 smtp-amavis
向 Amavis 發送電子郵件。在每個字符前至少放置一個空格鍵(製表符或空格鍵) -o
在 .postfix 設置中,前一個空格字符表示該行是前一行的延續。
smtp-amavis unix - - n - 2 smtp -o syslog_name=postfix/amavis -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_tls_security_level=none
然後將以下行添加到文件末尾:這告訴 Postfix 運行一個額外的 smtpd 守護進程,它在 127.0.0.1: 10025 上偵聽以接收來自 Amavis 的電子郵件。
127.0.0.1:10025 inet n - n - - smtpd -o syslog_name=postfix/10025 -o content_filter= -o mynetworks_style=host -o mynetworks=127.0.0.0/8 -o local_recipient_maps= -o relay_recipient_maps= -o strict_rfc821_envelopes=yes -o smtp_tls_security_level=none -o smtpd_tls_security_level=none -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_end_of_data_restrictions= -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings
保存並關閉文件。重新啟動 Postfix 以使更改生效。
sudo systemctl restart postfix
第 3 步:將 Amavis 與 ClamAV 集成
現在 Postfix 可以將收到的電子郵件傳遞給 Amavis,您需要安裝 ClamAV 病毒掃描程序並將其與 Amavis 集成以允許 ClamAV 掃描您的傳入電子郵件。
在 CentOS 8 / RHEL 8 上安裝 ClamAV。
sudo dnf install clamav clamav-lib clamav-data clamav-update -y
ClamAV 安裝了兩個 systemd 服務。
[email protected]
: ClamAntiVirus 用戶空間守護進程clamav-freshclam.service
: ClamAV 病毒庫更新程序
首先,開始 clamav-freshclam.service
..
sudo systemctl start clamav-freshclam.service
啟動時啟用自動啟動。
sudo systemctl enable clamav-freshclam.service
檢查狀態。
systemctl status clamav-freshclam
如您所見,它處於活動狀態並在郵件服務器上使用 27.8 RAM。然後檢查日誌/日誌。
sudo journalctl -eu clamav-freshclam
輸出:
提示:如果上述命令沒有立即退出,請按Q退出。
我們可以看到 freshclam
我下載了三個病毒庫。 CVD 代表 ClamAV 病毒數據庫。
- 每日.cvd
- 主文件
- 字節碼.cvd
這個 clamav-freshclam.service
ClamAV 病毒庫更新每小時檢查一次。
現在你可以開始了 [email protected]
..
sudo systemctl start [email protected]
啟動時啟用自動啟動。
sudo systemctl enable [email protected]
檢查其狀態:
systemctl status [email protected]
如您所見,它正在工作。順便說一句,我的郵件服務器使用 1.2G 的 RAM。如果郵件服務器沒有足夠的內存,服務就會失敗。
打開 Amavis 配置文件。
sudo nano /etc/amavisd/amavisd.conf
該文件具有以下行,可讓您檢查病毒。
# @bypass_virus_checks_maps = (1); # controls running of anti-virus code
取消註釋此行將禁用病毒檢查。
定義了許多防病毒掃描程序 @av_scanners
部門。 ClamAV 是默認設置。 Amavis 有 ClamAV /run/clamd.amavisd/clamd.sock
Unix 套接字。 ClamAV 和 Amvis amavis
用戶。
關閉文件並重新啟動 Amavis。
sudo systemctl restart amavisd
請檢查日誌。
sudo journalctl -eu amavisd
可以看到 Amavis 目前正在使用 ClamAV 掃描病毒。
mail.linuxbabe.com amavis[1233432]: Using primary internal av scanner code for ClamAV-clamd mail.linuxbabe.com amavis[1233432]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan
現在,如果您從其他郵件服務器(例如 Gmail)向您的郵件服務器發送電子郵件並檢查郵件標頭,您將看到類似於以下內容的行:這表明該電子郵件已被 Amavis 掃描。
X-Virus-Scanned: Debian amavisd-new at linuxbabe.com
您還需要檢查電子郵件日誌(/var/log/maillog
) 檢查錯誤。
第 4 步:使用專用端口發送電子郵件
ClamAV 現在可以掃描傳入和傳出的電子郵件。 Amavis 在端口 10024 上偵聽傳入和傳出的電子郵件消息。但是,我們建議您使用不同的端口(例如 10026)從經過身份驗證的用戶發送電子郵件。
編輯 Amavis 主配置文件。
sudo nano /etc/amavisd/amavisd.conf
找到下一行。
$inet_socket_port = 10024; # listen on this local TCP port(s)
添加一個 #
字符的開頭被註釋掉。
#$inet_socket_port = 10024; # listen on this local TCP port(s)
然後找到以下行:
# $inet_socket_port = [10024,10026]; # listen on multiple TCP ports
第一次刪除 #
該角色沒有被評論,因此 Amavisd 也會監聽 10026 端口。
$inet_socket_port = [10024,10026]; # listen on multiple TCP ports
向下滾動一點,您會發現以下行為端口 10026 設置了“ORIGINATING”策略。
$interface_policy{'10026'} = 'ORIGINATING';
然後您可以找到定義“ORIGINATING”策略的以下行。
$policy_bank{'ORIGINATING'} = { # mail supposedly originating from our users
originating => 1, # declare that mail was submitted by our smtp client
allow_disclaimers => 1, # enables disclaimer insertion if available
# notify administrator of locally originating malware
virus_admin_maps => ["[email protected]$mydomain"],
spam_admin_maps => ["[email protected]$mydomain"],
warnbadhsender => 1,
# forward to a smtpd service providing DKIM signing service
forward_method => 'smtp:[127.0.0.1]:10027',
# force MTA conversion to 7-bit (e.g. before DKIM signing)
smtpd_discard_ehlo_keywords => ['8BITMIME'],
bypass_banned_checks_maps => [1], # allow sending any file names and types
terminate_dsn_on_notify_success => 0, # don't remove NOTIFY=SUCCESS option
};
在上面的行中,您可以看到默認情況下,Amavis 將電子郵件轉發到提供 DKIM 簽名服務的 SMTPD 服務。 Postfix 和 OpenDKIM 處理 DKIM 簽名並且必須被註釋掉。 forward_method
我會告訴你。
# forward_method => 'smtp:[127.0.0.1]:10027',
保存並關閉文件。接下來需要告訴 SELinux Amavis 可以使用 10026 端口。安裝以下軟件包。 semanage
命令。
sudo dnf install policycoreutils-python-utils -y
然後設置10026的端口類型如下: amavisd_recv_port_t
因此,Amavis 將能夠偵聽端口 10026。
sudo semanage port -m -t amavisd_recv_port_t -p tcp 10026
檢查端口 10026。
sudo semanage port -l | grep 10026
您可以看到端口 10026 也可以與 Amavisd 一起使用。
重新啟動 Amavis
sudo systemctl restart amavisd
檢查其狀態以查看重新啟動是否成功。
systemctl status amavisd
然後編輯 Postfix 主配置文件。
sudo nano /etc/postfix/master.cf
將以下行添加到 submission
作為一項服務,來自經過身份驗證的 SMTP 客戶端的電子郵件被傳遞到 Amavis 監聽端口 10026。覆蓋此行 (-o) content_filter
參數輸入 /etc/postfix/main.cf
文檔。
-o content_filter=smtp-amavis:[127.0.0.1]:10026
像這樣:
如果啟用 smtps
Microsoft Outlook 服務用戶也需要添加此行。 smtps
服務。
保存並關閉文件。重新啟動 Postfix 以使更改生效。
sudo systemctl restart postfix
檢查其狀態以查看重新啟動是否成功。
systemctl status postfix
在 Amavis 中禁用垃圾郵件過濾
默認情況下啟用 Amavis 垃圾郵件過濾。如果您遵循我的 SpamAssassin 教程,則無需在 Amavis 中啟用垃圾郵件檢查。啟用後,SpamAssassin 將檢查所有電子郵件兩次。
要在 Amavis 中禁用垃圾郵件檢查,請編輯 Amavis 配置文件。
sudo nano /etc/amavisd/amavisd.conf
找到下一行。
# @bypass_spam_checks_maps = (1); # controls running of anti-spam code
要禁用垃圾郵件檢查,請刪除第一個評論字符。
@bypass_spam_checks_maps = (1); # controls running of anti-spam code
保存並關閉文件。然後重新啟動 Amavis。
sudo systemctl restart amavisd
在 Amavis 中禁用 DKIM
可以在 Linux 上執行 DKIM 簽名和驗證的兩種常見軟件是: OpenDKIM 什麼時候 阿馬比斯我更喜歡使用 OpenDKIM,因為它適用於 .OpenDMARC。因此,我們不會解釋如何使用 DKIM 與 Amavis 簽署電子郵件。
默認情況下,在 Amavis 上啟用 DKIM 簽名和驗證。如果您的郵件服務器正在運行 OpenDKIM,您可以在 Amavis 中禁用 DKIM。
sudo nano /etc/amavisd/amavisd.conf
找到接下來的兩行並更改兩者 1
到達 0
因此,Amavis 不會驗證傳入電子郵件的 DKIM 簽名或將 DKIM 簽名添加到傳出電子郵件。
$enable_dkim_verification = 1; # enable DKIM signatures verification $enable_dkim_signing = 1; # load DKIM signing code, keys defined by dkim_key
保存並關閉文件。然後重新啟動 Amavis。
sudo systemctl restart amavisd
Postfix 收到郵件後,通過 sendmail milter 接口調用 OpenDKIM 驗證 DKIM 簽名,並將郵件傳遞給 Amavis 進行病毒檢查。發送出站郵件時,Postfix 調用 OpenDKIM 對郵件進行簽名並將其傳遞給 Amavis 進行病毒檢查。
提高 Amavis 性能
默認情況下,Amavis 運行兩個進程。如果您在郵件日誌中看到以下行 (/var/log/maillog
),這意味著 Amavis 處理電子郵件的速度不夠快。
postfix/qmgr[1619188]: warning: mail for [127.0.0.1]:10024 is using up 4001 of 4008 active queue entries postfix/qmgr[1619188]: warning: you may need to reduce smtp-amavis connect and helo timeouts postfix/qmgr[1619188]: warning: so that Postfix quickly skips unavailable hosts postfix/qmgr[1619188]: warning: you may need to increase the main.cf minimal_backoff_time and maximal_backoff_time postfix/qmgr[1619188]: warning: so that Postfix wastes less time on undeliverable mail mail postfix/qmgr[1619188]: warning: you may need to increase the master.cf smtp-amavis process limit mail postfix/qmgr[1619188]: warning: please avoid flushing the whole queue when you have mail postfix/qmgr[1619188]: warning: lots of deferred mail, that is bad for performance
要提高性能,請編輯 Amavis 配置文件。
sudo nano /etc/amavisd/amavisd.conf
找到下一行。改變 2
到達 4
, 這會導致 Amavis 運行四個進程。 如果您有 10 個 CPU 內核,則可以將其從 4 個更改為 10 個。
$max_servers = 2; # num of pre-forked children (2..30 is common), -m
保存並關閉文件。然後編輯 Postifx 主配置文件。
sudo nano /etc/postfix/master.cf
查出 smtp-amavis
進行服務定義並將進程限制從 2 更改為 4。
smtp-amavis unix - - n - 4 smtp
-o syslog_name=postfix/amavis
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
-o smtp_tls_security_level=none
保存並關閉文件。然後重新啟動 Amavis 和 Postfix 以使更改生效。
sudo systemctl restart amavisd postfix
然後運行以下命令:您現在應該看到四個 Amavis 進程。
sudo amavisd-nanny
根據 Ctrl+C
阻止amavisd-nanny。
跳過時事通訊中的病毒檢查
如果您使用郵件服務器發送時事通訊並啟用了 Amavis 和 ClamAV,當您將時事通訊發送給訂閱者時,許多 CPU 和 RAM 資源將用於病毒檢查。郵件服務器可能變得無響應。您可以使用以下方法繞過時事通訊病毒檢查:
編輯 Postfix 主配置文件。
sudo nano /etc/postfix/master.cf
將以下行添加到此文件的開頭:這將導致 smtpd
在 localhost 端口 2525 上接受來自同一服務器的客戶端連接。如果你有另一個進程在監聽 2525 端口,你可以把 127.0.0.1:2525 改成另一個進程,比如 127.0.0.1:2552。筆記, content_filter
參數設置為 none
這意味著 ClamAV 不會掃描您的電子郵件。
127.0.0.1:2525 inet n - - - 1 smtpd -o syslog_name=postfix/2525 -o postscreen_greet_action=ignore -o content_filter=
然後將以下行添加到此文件的末尾: 將 12.34.56.78 替換為您的郵件服務器的公共 IP 地址。這將創建另一個偵聽端口 10587 的 Postfix 提交守護進程。這是用於來自另一台服務器的客戶端連接。這個 content_filter
該參數也設置為 none
..
12.34.56.78:10587 inet n - y - - smtpd
-o syslog_name=postfix/10587
-o smtpd_tls_security_level=encrypt
-o smtpd_tls_wrappermode=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o content_filter=
保存並關閉文件。然後重啟後綴。
sudo systemctl restart postfix
如果通訊應用程序正在您的郵件服務器上運行 127.0.0.1:2525
作為 SMTP 主機,不需要 SMTP 身份驗證。如果時事通訊應用程序正在另一台服務器上運行 12.34.56.78:10587
使用 SMTP 身份驗證作為 SMTP 主機。
包起來
我們希望本教程能幫助您在 CentOS 8 / RHEL8 郵件服務器上設置 Amavis 和 ClamAV。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。照顧好自己?