Toto je část 11 v sérii výukových programů pro poštovní server Ubuntu od nuly. V tomto článku vám ukážu, jak používat Amavis a ClamAV pro kontrolu virů v e-mailových zprávách.
Amavis (A Mail Virus Scanner) je vysoce výkonné rozhraní mezi agentem přenosu zpráv (MTA), jako je Postfix a obsahové filtry. Filtr obsahu je program, který kontroluje záhlaví a tělo e-mailové zprávy a na základě toho, co najde, obvykle provádí nějakou akci. Nejběžnějšími příklady jsou virový skener ClamAV a SpamAssassin .
Amavis mluví standardním protokolem SMTP a může také používat rozhraní Sendmail milter. Běžně se používá pro
- Prohledávání virů pomocí integrace s ClamAV (Clam AntiVirus)
- kontrola spamu díky integraci se SpamAssassin
- Podepisování a ověřování DKIM. (Ve skutečnosti raději používám OpenDKIM pro podepisování a ověřování DKIM.)
Předpoklady
Měli byste mít dokončenou alespoň část 1 (server Postfix SMTP) a část 2 (server Dovecot IMAP) série výukových programů pro poštovní server Ubuntu od nuly. Všimněte si, že pokud jste k nastavení svého poštovního serveru použili iRedMail nebo Modoboa, Amavis a ClamAV jsou již nainstalovány a nakonfigurovány, takže nemusíte postupovat podle tohoto návodu.
Upozornění :Amavis a ClamAV vyžadují značné množství paměti RAM. Před instalací Amavis a ClamAV se ujistěte, že máte na serveru alespoň 1,3 GB volné paměti RAM. Celý zásobník poštovního serveru (Postfix, Dovecot, Amavis, ClamAV, SpamAssassin, OpenDKIM, MySQL/MariaDB, PostfixAdmin a Roundcube Webmail) potřebuje alespoň 3 GB RAM pro hladký chod. Pokud dojde vaše RAM, budete mít problémy, jako je přepnutí poštovního serveru do režimu offline nebo přerušení odezvy.
Krok 1:Nainstalujte Amavis na Ubuntu
Amvis je dostupný z výchozího úložiště Ubuntu, takže jej nainstalujte spuštěním následujícího příkazu.
sudo apt install amavisd-new -y
Po instalaci se automaticky spustí. Jeho stav můžete zkontrolovat pomocí:
stav systemctl amavis
Výstup:
● amavis.service – LSB:Spustí amavisd-new mailfilter Načteno:načteno (/etc/init.d/amavis; vygenerováno) Aktivní:aktivní (běžící) od pá 2020-08-07 15:43:40 HKT; 1min 1s ago Dokumenty:man:systemd-sysv-generator(8) Úkoly:3 (limit:9451) Paměť:75,4M CGroup:/system.slice/amavis.service ├─1794260 /usr/sbin/amavisd-new (master ) ├─1794263 /usr/sbin/amavisd-new (panenské dítě) └─1794264 /usr/sbin/amavisd-new (panenské dítě)
Pokud neběží, můžete jej spustit pomocí:
sudo systemctl spustit amavis
Povolit automatické spouštění při spouštění.
sudo systemctl povolit amavis
Ve výchozím nastavení naslouchá na 127.0.0.1:10024 , jak je vidět na:
sudo netstat -lnpt | grep amavis
A běží jako amavis
uživatel. Chcete-li zkontrolovat číslo verze, spusťte
amavisd-new -V
Ukázkový výstup:
amavisd-new-2.11.0 (20160426)
Chcete-li zkontrolovat protokoly Amavisu, můžete spustit
sudo journalctl -eu amavis
Viry se běžně šíří jako přílohy e-mailových zpráv. Nainstalujte následující balíčky pro Amavis pro extrahování a skenování archivních souborů v e-mailových zprávách, jako je .7z
, .cab
, .doc
, .exe
, .iso
, .jar
a .rar
soubory.
sudo apt install arj bzip2 cabextract cpio rpm2cpio soubor gzip lhasa nomarch pax rar unrar p7zip-full unzip zip lrzip lzip liblz4-tool lzop unrar-free
Pokud používáte Ubuntu 18.04, nainstalujte si také ripole
balíček.
sudo apt install ripole
Pamatujte, že pokud váš server nepoužívá jako název hostitele plně kvalifikovaný název domény (FQDN), Amavis se nemusí spustit. A název hostitele OS se může změnit, takže se doporučuje nastavit platný název hostitele přímo v konfiguračním souboru Amavis.
sudo nano /etc/amavis/conf.d/05-node_id
Najděte následující řádek.
#$myhostname ="mail.example.com";
Odstraňte znak komentáře (#) a změňte mail.example.com
na vaše skutečné jméno hostitele.
$myhostname ="mail.linuxbabe.com";
Uložte a zavřete soubor. Restartujte Amavis, aby se změny projevily.
sudo systemctl restart amavis
Krok 2:Integrujte Postfix SMTP Server s Amavis
Amavisd-new funguje jako proxy SMTP. E-mail je do něj přiváděn prostřednictvím SMTP, zpracováván a odesílán zpět do MTA prostřednictvím nového připojení SMTP.
Upravte hlavní konfigurační soubor Postfixu.
sudo nano /etc/postfix/main.cf
Přidejte následující řádek na konec souboru. To Postfixu říká, aby zapnul filtrování obsahu odesláním každé příchozí e-mailové zprávy společnosti Amavis, která naslouchá na 127.0.0.1:10024 .
content_filter =smtp-amavis:[127.0.0.1]:10024
Přidejte také následující řádek.
smtpd_proxy_options =speed_adjust
To zdrží připojení Postfixu k filtru obsahu, dokud nebude přijata celá e-mailová zpráva, což může zabránit tomu, aby filtry obsahu plýtvaly časem a zdroji pro pomalé klienty SMTP.
Uložte a zavřete soubor. Poté upravte master.cf
soubor.
sudo nano /etc/postfix/master.cf
Přidejte následující řádky na konec souboru. Toto instruuje Postfix, aby použil speciální komponentu SMTP klienta nazvanou smtp-amavis
k doručování e-mailových zpráv společnosti Amavis. Před každým -o
ponechte alespoň jeden prázdný znak (tabulátor nebo mezerník). . V konfiguracích postfixu předchozí prázdný znak znamená, že tento řádek je pokračováním předchozího řádku.
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 -otlo sm_use=20otlo sm_use=20Poté přidejte následující řádky na konec souboru. Toto říká Postfixu, aby spustil dalšího smtpd démona naslouchajícího na 127.0.0.1:10025 pro příjem e-mailových zpráv zpět od společnosti 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_recipient_recips=-o relay 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 zamítnout -o smtpd_helo_restrictions =-o smtpd_sender_restrictions =-o smtpd_recipient_restrictions =permit_mynetworks zamítnout -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 recipient_preknown_nocipsdress_ppingUložte a zavřete soubor. Restartujte Postfix, aby se změny projevily.
sudo systemctl restart postfixKrok 3:Integrujte Amavis s ClamAV
Nyní, když Postfix může předávat příchozí e-maily společnosti Amavis, musíme nainstalovat antivirový skener ClamAV a integrovat jej s Amavisem, aby mohl ClamAV skenovat příchozí e-maily.
Nainstalujte ClamAV na Ubuntu.
sudo apt install clamav clamav-daemonClamAV nainstaluje dvě systémové služby:
clamav-daemon.service
:démon uživatelského prostoru Clam AntiVirusclamav-freshclam.service
:aktualizátor virové databáze ClamAV
Nejprve zkontrolujte stav clamav-freshclam.service
.
stav systemctl clamav-freshclam
Jak můžete vidět, je aktivní (běží) a využívá 217,6 M RAM na mém poštovním serveru. Poté zkontrolujte deník/protokol.
sudo journalctl -eu clamav-freshclam
Výstup:
Tip:Pokud se výše uvedený příkaz neukončí okamžitě, ukončete jej stisknutím klávesy Q.
Můžeme vidět, že freshclam
staženy 3 virové databáze. CVD je zkratka pro ClamAV Virus Database.
- daily.cvd
- main.cvd
- bytecode.cvd
Nicméně clamd
nebyl upozorněn, protože freshclam se nemůže připojit k clamd prostřednictvím /var/run/clamav/clamd.ctl
. Zkontrolujte stav clamav-daemon.service
.
stav systemctl clamav-daemon
Výstup:
Jak vidíte, nepodařilo se spustit, protože nebyla splněna podmínka. V /lib/systemd/system/clamav-daemon.service
soubor, existují dvě podmínky:
ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc}ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc}
clamav-daemon.service
se nepodařilo spustit, protože main.cvd a daily.cvd nebyly při spuštění ještě staženy. Takže musíme tuto službu restartovat.
sudo systemctl restart clamav-daemon
Nyní by to mělo běžet. Mimochodem, používá 731,4M RAM na mém poštovním serveru. Pokud vašemu poštovnímu serveru nezbývá dostatek paměti RAM, služba selže.
stav systemctl clamav-daemon.service
clamav-freshclam.service
bude jednou za hodinu kontrolovat aktualizace virové databáze ClamAV.
Nyní musíme v Amavisu zapnout antivirovou kontrolu.
sudo nano /etc/amavis/conf.d/15-content_filter_mode
Chcete-li povolit antivirovou kontrolu, odkomentujte následující řádky.
#@bypass_virus_checks_maps =(# \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
Uložte a zavřete soubor. V /etc/amavis/conf.d/15-av_scanners
je spousta antivirových skenerů soubor. ClamAV je výchozí. Amavis zavolá ClamAV prostřednictvím /var/run/clamav/clamd.ctl
Unixový socket. Potřebujeme přidat uživatele clamav
do amavis
skupina.
sudo adduser clamav amavis
Poté restartujte Amavis a démona ClamAV, aby se změny projevily.
sudo systemctl restart amavis clamav-daemon
Zkontrolujte protokoly.
sudo journalctl -eu amavis
Můžete vidět, že Amavis nyní používá ClamAV ke skenování virů.
Aug 08 17:26:19 mail.linuxbabe.com amavis[1233432]:Použití primárního interního kódu AV skeneru pro ClamAV-clamdAug 08 17:26:19 mail.linuxbabe.com amavis[1233432]:Nalezen sekundární AV skener ClamAV-clamscan na /usr/bin/clamscan
Pokud nyní odešlete e-mail z jiných poštovních serverů, jako je Gmail, na svůj vlastní poštovní server a zkontrolujete záhlaví e-mailů, můžete najít řádek jako níže, který znamená, že tento e-mail byl zkontrolován Amavisem.
X-Virus-Scanned:Debian amavisd-new na linuxbabe.com
Měli byste také zkontrolovat protokol pošty (/var/log/mail.log
), abyste zjistili, zda tam nejsou nějaké chyby.
Krok 4:Použijte vyhrazený port pro odesílání e-mailů
ClamAV nyní dokáže skenovat příchozí i odchozí e-maily. Amavis naslouchá na portu 10024 pro příchozí i odchozí e-mailové zprávy. Je však dobrým zvykem používat pro odesílání e-mailů od ověřených uživatelů jiný port, například 10026. Upravte konfigurační soubor Amavis.
sudo nano /etc/amavis/conf.d/50-user
Vlastní nastavení by měla být přidána mezi use strict;
a 1;
čára. Ve výchozím nastavení Amavis naslouchá pouze na portu 10024. Přidejte následující řádek, aby naslouchal také na portu 10026.
$inet_socket_port =[10024,10026];
Poté přidejte následující řádek, který nastavuje zásadu „ORIGINATING“ pro port 10026.
$interface_policy{'10026'} ='ORIGINATING';
Dále přidejte následující řádky, které definují zásadu „ORIGINACE“.
$policy_bank{'ORIGINATING'} ={ # e-mail údajně pocházející od našich uživatelů pocházející => 1, # deklarovat, že e-mail byl odeslán naším klientem smtp allow_disclaimers => 1, # umožňuje vložení prohlášení o vyloučení odpovědnosti, pokud je k dispozici # upozornit administrátora na lokálně původní malware virus_admin_maps => ["virusalert\@$mydomain"], spam_admin_maps => ["virusalert\@$mydomain"], warningbadhsender => 1, # vynutit konverzi MTA na 7bitovou (např. před podpisem DKIM) smtpd_words =>ehlo_keywords ['8BITMIME'], bypass_banned_checks_maps => [1], # povolit odesílání jakýchkoli názvů a typů souborůterminer_dsn_on_notify_success => 0, # neodstraňovat možnost NOTIFY=SUCCESS};
Uložte a zavřete soubor. Restartujte Amavis.
sudo systemctl restart amavis
Zkontrolujte jeho stav a zjistěte, zda byl restart úspěšný.
stav systemctl amavis
Dále upravte hlavní konfigurační soubor Postfixu.
sudo nano /etc/postfix/master.cf
Přidejte následující řádek do submission
e-maily od ověřených klientů SMTP budou předány Amavisu naslouchajícímu na portu 10026. Tento řádek přepíše (-o
) content_filter
parametr v /etc/postfix/main.cf
soubor, který jsme přidali v kroku 2.
-o content_filter=smtp-amavis:[127.0.0.1]:10026
Takhle:
Pokud jste povolili smtps
službu pro uživatele Microsoft Outlook, pak musíte také přidat tento řádek do smtps
službu.
Uložte a zavřete soubor. Restartujte Postfix, aby se změny projevily.
sudo systemctl restart postfix
Zkontrolujte jeho stav a zjistěte, zda byl restart úspěšný.
příspěvek stavu systemctl
Filtrování spamu v Amavisu
Poznámka :Pokud jste postupovali podle mého návodu SpamAssassin, nemusíte v Amavisu povolovat kontrolu spamu. Pokud to povolíte, každý e-mail bude SpamAssassin zkontrolován dvakrát.
Chcete-li povolit kontrolu spamu v Amavisu, nainstalujte SpamAssassin a související balíčky.
sudo apt install spamassassin libnet-dns-perl libmail-spf-perl pyzor razor
Upravte konfigurační soubor Amavis.
sudo nano /etc/amavis/conf.d/15-content_filter_mode
Chcete-li povolit kontrolu spamu, odkomentujte následující řádky.
#@bypass_spam_checks_maps =(# \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Uložte a zavřete soubor. Poté restartujte Amavis.
sudo systemctl restart amavis
DKIM v Amavisu
Dva běžné kusy softwaru, které mohou provádět podepisování a ověřování DKIM v Linuxu, jsou OpenDKIM a Amavis. Raději používám OpenDKIM, protože to funguje lépe s OpenDMARC. Nebudu tedy vysvětlovat, jak DKIM podepsat váš e-mail v Amavisu.
Ve výchozím nastavení může Amavis ověřit podpis DKIM příchozích e-mailových zpráv. Pokud máte na poštovním serveru spuštěný OpenDKIM, můžete ověření DKIM v Amavisu zakázat.
sudo nano /etc/amavis/conf.d/21-ubuntu_defaults
Najděte následující řádek a změňte 1
na 0
, takže Amavis nebude ověřovat podpisy DKIM.
$enable_dkim_verification =1;
Uložte a zavřete soubor. Poté restartujte Amavis.
sudo systemctl restart amavis
Při přijímání příchozích e-mailů zavolá Postfix OpenDKIM přes rozhraní sendmail milter, aby ověřil podpisy DKIM, a poté předá e-mail společnosti Amavis ke kontrole virů. Při odesílání odchozích e-mailů Postfix zavolá OpenDKIM, aby e-maily podepsal, a poté je předá společnosti Amavis ke kontrole virů.
Zlepšení výkonu Amavis
Ve výchozím nastavení Amavis spouští 2 procesy. Pokud v protokolu pošty uvidíte následující řádky (/var/log/mail.log
), znamená to, že Amavis nedokáže zpracovávat e-maily dostatečně rychle.
postfix/qmgr[1619188]:varování:pošta pro [127.0.0.1]:10024 využívá 4001 ze 4008 položek aktivní frontypostfix/qmgr[1619188]:varování:možná budete muset snížit časové limity připojení smtp-amavis post a helo /qmgr[1619188]:varování:aby Postfix rychle přeskočil nedostupný hostspostfix/qmgr[1619188]:varování:možná budete muset zvýšit main.cf minimal_backoff_time a maximal_backoff_timepostfix/qmgr[1619188]:varování:aby Postfix ztrácel méně času nedoručitelná pošta postfix/qmgr[1619188]:varování:možná budete muset zvýšit proces master.cf smtp-amavis limitmail postfix/qmgr[1619188]:varování:vyhněte se proplachování celé fronty, když máte mail postfix/qmgr[1619188]:varování:spousta odložené pošty, to je špatné pro výkon
Chcete-li zlepšit výkon, upravte konfigurační soubor Amavis.
sudo nano /etc/amavis/conf.d/50-user
Přidejte následující řádek do souboru mezi use strict;
a 1;
čára. To způsobí, že Amavis spustí 4 procesy. Pokud máte 10 jader CPU, můžete změnit 4 na 10. Pamatujte, že spuštění více než 10 procesů Amavis má malý vliv na výkon.
$max_servers =4;
Uložte a zavřete soubor. Poté upravte hlavní konfigurační soubor Postifx.
sudo nano /etc/postfix/master.cf
Najděte smtp-amavis
definice služby a změňte limit procesu z 2 na 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=noneUložte a zavřete soubor. Poté restartujte Amavis a Postfix, aby se změny projevily.
sudo systemctl restart amavis postfixNyní spusťte následující příkaz. Měli byste vidět, že nyní existují 4 procesy Amavis.
sudo amavisd-nanny
Stiskněte
Ctrl+C
zastavit amavisd-chůvu.Přeskočte antivirovou kontrolu pro vaše zpravodaje
Pokud používáte svůj poštovní server k zasílání newsletterů a povolíte Amavis a ClamAV, pak bude pro kontrolu virů při zasílání newsletterů vašim odběratelům použita spousta zdrojů CPU a RAM. Mohlo by to způsobit, že váš poštovní server nebude reagovat. Antivirovou kontrolu pro své zpravodaje můžete přeskočit pomocí metody níže.
Upravte hlavní konfigurační soubor Postfixu.
sudo nano /etc/postfix/master.cfPřidejte následující řádky na začátek tohoto souboru. Tím povolíte
smtpd
na portu 2525 localhost a může přijímat klientská připojení zahájená ze stejného serveru. Pokud na portu 2525 naslouchá jiný proces, můžete změnit 127.0.0.1:2525 na něco jiného, například 127.0.0.1:2552. Všimněte si, žecontent_filter
parametr je nastaven nanone
, což znamená, že e-maily nebudou skenovány ClamAV.127.0.0.1:2525 inet n - - - 1 smtpd -o syslog_name=postfix/2525 -o postscreen_greet_action=ignore -o content_filter=Poté přidejte následující řádky na konec tohoto souboru. Nahraďte 12.34.56.78 veřejnou IP adresou poštovního serveru. Tím se vytvoří další démon odesílání Postfixu naslouchající na portu 10587. Toto je pro připojení klientů z jiného serveru.
12.34.56.78:10587 inet n - r - - smtpd -o syslog_name =postfix / 10587 -o smtpd_tls_security_level =šifrování -o smtpd_tls_wrappermode =ne -o smtpd_sasl_auth_enable =ano -o smtpd_relay_restrictions =permit_sasl_authenticated, odmítnutí -o smtpd_recipient_restrictions =permit_mynetworks, permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o content_filter=Uložte a zavřete soubor. Potom Restartujte postfix.
sudo systemctl restart postfixPokud vaše aplikace pro zpravodaj běží na poštovním serveru, zadejte
127.0.0.1:2525
jako hostitel SMTP, bez ověřování SMTP. Pokud vaše aplikace pro zpravodaj běží na jiném serveru, zadejte12.34.56.78:10587
jako hostitel SMTP s ověřováním SMTP.Odstraňování problémů
Pokud váš server Postfix SMTP nemůže odesílat odchozí e-maily a v protokolu pošty najdete následující chybovou zprávu (
/var/log/mail.log
),relé=žádné, zpoždění=239, zpoždění=239/0.04/0/0, dsn=4.3.0, stav=odloženo (server nedostupný nebo nemůže přijímat poštu)může se stát, že amavis neběží, takže musíte zkontrolovat jeho stav:
sudo systemctl status amavisMůžete jej restartovat pomocí:
sudo systemctl restart amavisDalší příčinou této chyby je, že při odesílání odchozích e-mailů vynucujete připojení TLS pro Postfix s následujícím nastavením v
/etc/postfix/main.cf
soubor.smtp_tls_security_level =vynutitProtože Postfix nemůže navázat TLS připojení k Amavisu, e-mail je odložen. Měli byste použít následující nastavení.
smtp_tls_security_level =mayPoté restartujte Postfix.
Nainstalujte Mautic Self-Hosted Email Marketing na Ubuntu 20.04 Nastavte SSH dvoufaktorové ověřování (2FA) na serveru UbuntuUbuntu