arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
198 lines (139 loc) • 6.96 kB
Markdown
From [Amavis's site](http://www.ijs.si/software/amavisd/):
*amavisd-new is a high-performance interface between mailer (MTA) and content checkers: virus scanners, and/or SpamAssassin. It is written in Perl for maintainability, without paying a significant price for speed. It talks to MTA via (E)SMTP or LMTP, or by using helper programs. Best with Postfix, fine with dual-sendmail setup and Exim v4, works with sendmail/milter, or with any MTA as a SMTP relay.*
## Contents
* [1 Installation and Setup](#Installation_and_Setup)
* [1.1 Basic Configuration](#Basic_Configuration)
* [1.2 Testing](#Testing)
* [2 Integration with Postfix](#Integration_with_Postfix)
* [2.1 Quick start](#Quick_start)
* [3 SpamAssassin support](#SpamAssassin_support)
* [4 Final test](#Final_test)
* [5 See also](#See_also)
## Installation and Setup
In this setup it is assumed that you are using [ClamAV](/index.php/ClamAV "ClamAV") as anti-virus scanner.
* Install [amavisd-new](https://www.archlinux.org/packages/?name=amavisd-new). You would be wise to also install optdepends such as [p7zip](https://www.archlinux.org/packages/?name=p7zip) and [unrar](https://www.archlinux.org/packages/?name=unrar) so your filters can actually see inside compressed files.
* Install [clamav](https://www.archlinux.org/packages/?name=clamav).
### Basic Configuration
If your hostname is not a FQDN, you must set `$myhostname` and `$mydomain` accordingly in `/etc/amavisd/amavisd.conf`.
You can enable [ClamAV](/index.php/ClamAV "ClamAV") support by commenting out the following lines (do not forget to put the same `clamd.sock` as in `/etc/clamav/clamd.sock`):
```
# ### http://www.clamav.net/
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}
", "/var/lib/clamav/clamd.sock"],
qr/\bOK$/m, qr/\bFOUND$/m,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
# # NOTE: run clamd under the same user as amavisd - or run it under its own
# # uid such as clamav, add user clamav to the amavis group, and then add
# # AllowSupplementaryGroups to clamd.conf;
# # NOTE: match socket name (LocalSocket) in clamav.conf to the socket name in
# # this entry; when running chrooted one may prefer a socket under $MYHOME.
```
Add a comment to this line to enable anti-virus scan:
```
# @bypass_virus_check_maps = (1); # controls running of anti-virus code
```
Add `AllowSupplementaryGroups true` to `/etc/clamav/clamd.conf`.
After that, add `clamav` user to `amavis` group to avoid permission problems:
```
# usermod -a -G amavis clamav
```
Finally restart the services:
* [restart](/index.php/Restart "Restart") `clamd.service`.
* [start](/index.php/Start "Start") `amavisd.service` and possibly [enable](/index.php/Enable "Enable") it.
Check for errors with these commands:
```
# systemctl status amavisd
# journalctl -xbo short -u amavisd
```
### Testing
To test the new configuration just telnet to the amavisd default listening port:
```
$ telnet 127.0.0.1 10024
```
You should see something like:
```
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'
220 [127.0.0.1] ESMTP amavisd-new service ready
```
Type `ehlo 127.0.0.1`:
```
EHLO localhost
250-[127.0.0.1]
250-VRFY
250-PIPELINING
250-SIZE
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 XFORWARD NAME ADDR PORT PROTO HELO IDENT SOURCE
```
Now just type `quit` to exit.
## Integration with Postfix
### Quick start
To configure amavis for [Postfix](/index.php/Postfix "Postfix") add the following to `/etc/postfix/master.cf`:
```
#
# anti spam & anti virus section
#
amavisfeed unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - y - - smtpd
-o content_filter=
-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_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o smtpd_restrictions_classes=
-o mynetworks=127.0.0.0/8
-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_milters
-o local_header_rewrite_clients=
```
In this configuration we assume that postfix and Amavis are running on the same machine (i.e. `127.0.0.1`). If that is not the case edit `/etc/amavisd/amavisd.conf` and the prevous Postfix entry accordingly.
Postfix will listen to port `10025` so that Amavis can send back checked emails to that port.
You also have to add another other configuration in your `smtp` or `submission` sections:
```
-o content_filter=amavisfeed:[127.0.0.1]:10024
```
Using this options implies that Postfix will send emails to Amavis on port `10024`, so that these can be checked. If mail passes the control then these are sent to port `10025`, as explained before.
We can now [restart](/index.php/Restart "Restart") `postfix.service` and `amavisd.service`.
To check that Postfix is listening on port `10025` do the same operations as the port `10024` case.
## SpamAssassin support
Install [spamassassin](https://www.archlinux.org/packages/?name=spamassassin)
Spamassassin is integrated in Amavis so you do not have to start `spamassassin.service`. To enable support for Spamassassin comment the following line in `/etc/amavis/amavis.conf` like this:
```
# @bypass_spam_checks_maps = (1); # controls running of anti-spam code
```
Edit the SpamAssassin configuration based on your needs:
```
$sa_tag_level_deflt = 1.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 1.0; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 5.0; # triggers spam evasive actions (e.g. blocks mail)
$sa_dsn_cutoff_level = 8; # spam level beyond which a DSN is not sent
# $sa_quarantine_cutoff_level = 25; # spam level beyond which quarantine is off
$penpals_threshold_high = $sa_kill_level_deflt; # do not waste time on hi spam
$bounce_killer_score = 100; # spam score points to add for joe-jobbed bounces
```
Before you [restart](/index.php/Restart "Restart") the `amavisd` service, run `sa-update`.
## Final test
To check that everything is working all right:
* Send a normal email.
* Send an email with an [EICAR](http://www.eicar.org/86-0-Intended-use.html) file as attachment.
* Send an email that would result as spam.
* Check both Postfix and Amavis logs.
## See also
* [Amavis official documentation](http://www.ijs.si/software/amavisd/README.postfix.html)
* [Complete Virtual Mail Server/amvisd spamassassin clamav](https://wiki.gentoo.org/wiki/Complete_Virtual_Mail_Server/amvisd_spamassassin_clamav) on Gentoo wiki.