#>mcedit /etc/amavis/conf.d/15-content_filter_mode
и раскомментируем строки, начинающиеся с:
@bypass_virus_checks_maps
@bypass_virus_checks_maps
Рассмотрим еще один конфиг /etc/amavis/conf.d/20-debian_defaults. Его непосредственно, лучше не править. Чтоб поправить его настройки - правильнее будет править /etc/amavis/conf.d/50-user и добавим в него:
$sa_spam_subject_tag = '***SPAM***';
$QUARANTINEDIR = '/var/vmail/spamvirusmails';
$spam_quarantine_method = 'local:spam-%b-%i-%n';
$spam_quarantine_to = 'spam-quarantine';
$final_spam_destiny = D_DISCARD;
$sa_tag_level_deflt = undef;
$spam_admin = "root\@$mydomain";
1; # ensure a defined return
Возможные параметры:
$sa_spam_subject_tag: если установлен этот параметр - к теме email`а, который AMaViS сочтет спамом, будет добавлена строка "***SPAM***", установленная в этом параметре. Если мы хотим оставить "оригинальную" тему письма, то необходимо оставить этот параметр в виде: "$sa_spam_subject_tag = undef". Служебная инфа о том, что AMaViS пометил письмо "как спам", для пользователя все равно останется в X-Spam-Status заголовке.
$sa_tag_level_deflt: параметр спам-уровня (число). В зависимости от установленного уровня: выше или ниже, в заголовок письма будет добавляться спам-заголовки (т.е., на сколько я понял, в заголовок письма добавятся заголовки о спам проверке, вне зависимости от того, будет ли письмо расценено как спам или нет). Для упрощения отладки, мы всегда будем добавлять эти заголовки, поэтому этот параметр установлен в самый низкий уровень, т.е. "undef".
$sa_tag2_level_deflt: этот параметр спам-уровня отвечает за чувствительность спам-фильтра к определению спама. Лучше оставить его по-умолчанию (или вообще не определять в конфиге), ибо при слишком низком уровне - может проскочить много спама, при слишком высоком уровне - как спам могут быть расценены совершенно безобидные сообщения.
#> chown amavis:amavis -R /var/vmail/spamvirusmails
#> /etc/init.d/amavis restart
Проверяем, чтоб AMaViS слушал 10024 порт:
#> netstat -nap | grep 10024
Должно быть что то типа:
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 12345/amavisd
Если получили похожую строку - значит AMaViS запущен и ждет SMTP сессии. В противном случае - смотри логи (/var/log/mail.log)
Теперь, рассмотрим как это работает. Кто то отправляет нам мыло из инета. Postfix его получает через TCP порт 25 (SMTP). Если Postfix пропускает это сообщение - он форвардит его AMaViS`у на TCP порт 10024 (SMTP). Далее, если AMaViS`а устраивает содержимое письма, то форвардит мыло обратно Postfix`у на TCP порт 10025 (SMTP). И после всего этого Postfix уже отправляет мыло до конечного получателя.
Объясняем Postfix`у вышеуказанную модель и укажем еще один важный параметр "receive_override_option", назначение которого рассмотрим позже:
#>postconf -e content_filter=smtp-amavis:[127.0.0.1]:10024
#>postconf -e receive_override_options=no_address_mappings
Также, необходимо объявить службу smtp-amavis в параметрах /etc/postfix/master.cf. Плюс, указать Postfix`у слушать 10025 порт, для получения писем от AMaViD:
smtp-amavis 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 - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-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_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-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
-o local_header_rewrite_clients=
Важно! В данном случае -o mynetworks=127.0.0.0/8 необходимо оставить именно в таком виде, а не указывать mynetworks как /etc/postfix/main.cf. Ибо связка Postfix - AMaViS крутятся на одном сервере и находятся в пределах одной подсети 127.0.0.0/8.
Перезагрузим Postfix:
#> postfix reload
Дадим некоторые пояснения. Сначала мы установили опцию receive_override_options в значение no_address_mapping, ее мы упоминали выше. Она отключает все сопоставления (mapping) адресов. Для чего это нужно?
Postfix принимает письмо. Правила редиректа (таблица forwardings в MySQL) из-за отключения сопоставления адресов не сработали (не подтверждены). Письмо пересылается в службу smtp-amavis, после чего опять возвращается на 127.0.0.1:10025 уже с кучей параметров. Один из этих параметров как раз опять receive_override_option, но теперь уже без значения no_address_mapping (т.е. теперь сопоставление адресов включено). И уже на этом этапе происходит обработка таблицы forwardings. Т.е. эта опция необходима, что бы не задваивать письма при форвардинге.
Внимание! receive_override_option = no_address_mapping фактически дает директиву Postfix отключить форвардинг. И если впоследствии мы решим отключить AMaViS, то нужно будет убрать и эту опцию!!!
Напомним, что пользователь "clamav" должен быть в группе "amavis", что бы эти службы могли общаться друг сдругом. Добавим его туда:
#>adduser clamav amavis
#>/etc/init.d/clamav-daemon restart
Отключим спам проверку для нашей (внутри нашего домена) исходящей почты. Для этого в /et/amavis/conf.d/50-user перед "1;" добавим такие строки:
@lookup_sql_dsn = ( ['DBI:mysql:database=mail;host=127.0.0.1;port=3306',
'mail_admin',
'mailadminpass']);
$sql_select_policy = 'SELECT domain FROM domains WHERE CONCAT("@",domain) IN (%k)';
@lookup_sql_dsn определяет параметры доступа AMaViS кнашей базе данных mail в MySQL. А $sql_select_policy задает SQL запрос, который выполняется когда AMaViS определяет из какого домена идет отсылка и принадлежит ли полученный домен нашему. %k - набор строк, с которыми идет сопоставление. Т.е. полноценный SQL запрос будет выглядеть следующим образом:
SELECT domain FROM domains WHERE CONCAT("@",name)
IN ( 'john@example.com',
'john',
'@example.com',
'@.example.com',
'@.com',
'@.')
Выглядит, конечно странно... Но в конечном итоге получим строку '@exemple.com'.
Перегрузим AMaViS:
#>/etc/init.d/amavis restart
Пробуем отослать мыло на john@exemple.com. Если просмотреть заголовки письма, то мы должны найти строки, добавленные AMaViS:
X-Virus-Scanned: Debian amavisd-new at mymailserver
X-Spam-Score: 0
X-Spam-Level:
X-Spam-Status: No, score=0 tagged_above=-9999 required=6.31 tests=[none]
На этом настройка завершена! Все входящие письма теперь будут проверяться на вирусы и спам. Выполним еще одну проверку. Пример спама есть в /usr/share/docs/spamassasin/exemples/sample-spam.txt. Отправим спам-сообщение на jhon@exemple.com:
#>sendmail john@example.com < /usr/share/doc/spamassassin/examples/sample-spam.txt
Смотрим в логи /var/log/mail.log, должны увидеть что AMaViS отработал:
amavis[13001]: (13001-02) Passed SPAM, <...> ->, ...
Отлично! Письмо помечено как спам и отправлено Jhon`у. И, наконец, устанавливаем необходимые права:
#>chmod o= /etc/amavis/conf.d/50-user
есть способ намного проще iredmail называется
ОтветитьУдалитьоб установке почтового сервера – http://www.iredmail.ru/index.php/install
за 10 минут поднимается рабочий сервак(зависит от скорости интернета)
http://www.iredmail.ru/
У него есть минус, он не переносит установку рядом с чем-то и ставить на голый сервак, если ты поставишь хоть что-то, то его скрипт установки даст сбой
ОтветитьУдалитьИ еще он во многом стал платным.
ОтветитьУдалитьСпасибо за статью, особенно за postconf -e receive_override_options=no_address_mappings
ОтветитьУдалитьПожалуйста :)
Удалить