Показаны сообщения с ярлыком Exim. Показать все сообщения
Показаны сообщения с ярлыком Exim. Показать все сообщения

12 мая 2010 г.

Ubuntu: скрещиваем exim с clamav

Установить и настроить совместную работу MTA Exim4 и Clamav очень просто:

#apt-get install exim4-daemon-heavy clamav-daemon

После этого в системе установлены и настроены MTA Exim4, демон Clamav и демон обновления для Clamav - Freshclam. Настройку они имеют базовую, но для совместной работы у них уже почти все есть.

Недостает следующего:

  1. В файле /etc/exim4/conf.d/acl/40_exim4-config_check_data необходимо раскоментировать строки:

    # Deny if the message contains malware. Before enabling this check, you
    # must install a virus scanner and set the av_scanner option in the
    # main configuration.
    #
    # exim4-daemon-heavy must be used for this section to work.
    #
    deny
    malware = *
    message = This message was detected as possible malware ($malware_name).

  2. В файле /etc/exim4/conf.d/main/02_exim4-config_options необходимо указать путь к fifo демона clamav:
    av_scanner = clamd:/var/run/clamav/clamd.ctl

  3. Для доступа clamav к содержимому писем, необходимо добавить пользователя clamav в группу Debian-exim:
    #gpasswd --add clamav Debian-exim
    Если этого не выполнить в логе экзима получим:
    malware acl condition: clamd: ClamAV returned /var/spool/exim4/scan/1OC8Uk-0001pI-N3: lstat() failed: Permission denied. ERROR

  4. перезапустить демоны exim4 и clamav:
    #service exim4 restart
    #service clamav-daemon restart


После всех этих манипуляций в нашей системе Exim проверяет всю почту на вирусы с помощью демона Clamav.

В данной заметке умышленно опущены все тонкие настройки MTA Exim, такие как защита от Спам и др.

24 апр. 2009 г.

Exim4 - фильтруем почту для postmastera в ubuntu 8.10

Думаю многих администраторов почтовых серверов, принимающих сообщения на адрес "postmaster@вашдомен", замучал спам поступающий на этот адрес.

Многие либо меняют адрес постмастера, либо вовсе его отключают.
И то и то с точки зрения rfc822 неверно [2].

Чтобы хоть как-то снизить уровень спама в адрес постмастера и повысить вероятность обнаружения у него в ящике легитимных писем было предложено принимать письма только с определенной темой.

В [1] и [2] положений запрещающих какую-либо фильтрацию не нашел (если не прав, поправьте, кто знает;).

Модификация стандартного конфига Exim4 в Ubuntu 8.10.



Исходя из поставленной задачи, нам необходимо проверять в поступающих письмах адрес назначения и если оно адресовано постмастеру, то еще проверить тему письма.

Первая проблема - Exim4 позволяет проверить адрес назначения только в acl_smtp_rcpt, а тему письма мы можем проверить только на этапе acl_smtp_data.

Благодаря механизму пользовательских переменных [3], в MTA Exim4 мы имеем возможность передавать данные между разными этапами обработки письма. Переменные acl_m{цыфра} действительны входе обработки письма, их значение сбрасывается по командам HELO, MAIL и STARTTLS. Переменные acl_с{цыфра} действительны в ходе всего соединения.

В стандартной конфигурации Exim4 все проверки проходят на этапе RCPT.
Одной из первых проверок является проверка на указание адреса назначения "postmaster" или "postmaster@your.domain". Здесь мы и будем "запоминать" что это письмо для постмастера:

set acl_m0 = ${if eq{$local_part}{postmaster}{1}{0}}
set acl_m0 = ${if eq{$local_part}{CHECK_RCPT_POSTMASTER}{1}{0}}

ACL теперь будет выглядеть так:

# Accept mail to postmaster in any local domain, regardless of the source,
# and without verifying the sender.
#
accept
.ifndef CHECK_RCPT_POSTMASTER
set acl_m0 = ${if eq{$local_part}{postmaster}{1}{0}}
local_parts = postmaster
.else
set acl_m0 = ${if eq{$local_part}{CHECK_RCPT_POSTMASTER}{1}{0}}
local_parts = CHECK_RCPT_POSTMASTER
.endif
domains = +local_domains : +relay_to_domains


т.е. присваиваем переменной acl_m0 значение "1" если $local_part равно "postmaster" или равно значению макроса "CHECK_RCPT_POSTMASTER".

Макрос "CHECK_RCPT_POSTMASTER" в стандартной для Ubuntu 8.10 конфигурации позволяет легко изменить адрес постмастра. Но еще раз оговорюсь, это идет в разрез с rfc.

Итак мы "пометили" письмо для постмастера.

Проверим тему


Макрос CHECK_DATA_ACL_FILE позволяет указать файл в котором будут расположены наши собственные ACL для проверки письма на этапе команды DATA.
Присваиваем ему значение, создаем файл и пишем свой ACL:

#
# Check subject in messages for postmaster
#
deny
message = We accept messages for postmaster only with Subject: "trouble". Please retry.
log_message = Not valid subject in message for postmaster - Subject=$h_Subject:
condition = ${if eq{$acl_m0}{1}{${if !eq{$h_Subject:}{trouble}{1}{0}}}{0}}


Перезапустим Exim:
#/etc/init.d/exim4 restart

Проверим работу тестовой сессией:
exim -bh 192.168.0.1
helo nethuman
mail from: <>
rcpt to: postmaster
data
Subject: trouble


Источники:



1. MAILBOX NAMES FOR COMMON SERVICES, ROLES AND FUNCTIONS (http://www.rfc-ignorant.org/rfcs/rfc2142.php)

2. STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES (ftp://ftp.rfc-editor.org/in-notes)/rfc822.txt

3. The Exim Specification - Version 4.6x, p. 119. (http://exim.org/exim-pdf-current/doc/spec.pdf)

22 апр. 2009 г.

Exim4 - включаем обработку почтовых алиасов в ubuntu 8.10

В данной заметке я расскажу как включить обработку системных почтовых алиасов Exim4 стандартной конфигурации Ubuntu 8.10.

Здесь рассматривается конфигурация на основе множества файлов в директории /etc/exim4/conf.d, конфигурация на основе плоского файла рассматриваться не будет.

Итак, в юникс-системах для указания алиасов почтовых адресов используется файл /etc/aliases.
Естественным будет использовать именно его для задания псевдонимов.

Посмотрим исходное состояние данного файла:

#cat /etc/aliases
# See man 5 aliases for format
postmaster: root
root:

Здесь видим, что для ящика "postmaster" уже задан алиас "root".
Так как данный сервер у меня является только фронтэндом для M$ Exchange 2007, и не имеет собственного почтового хранилища и pop3 сервера, естественным будет указать в качестве алиаса для "root" адрес группы рассылки администраторов на основном внутреннем почтовом сервере. Например:

#cat /etc/aliases
# See man 5 aliases for format
postmaster: root
root: admins@zavod.ru

Далее разрешим в Exim4 обработку файла псевдонимов.
В стандартной конфигурации дистрибутива ubuntu 8.10 (возможно и в Debian, не проверял) Exim4 имеет готовый маршрутизатор - находится в файле /etc/exim4/conf.d/router/400_exim4-config_system_aliases.

По умолчанию все строки данного файла закоментированы.
Нам необходимо разкомментировать все строки начиная с "system_aliases".
В моем случае разкомментированы следующие строки:

#grep -v '#' /etc/exim4/conf.d/router/400_exim4-config_system_aliases
system_aliases:
debug_print = "R: system_aliases for $local_part@$domain"
driver = redirect
domains = +local_domains
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/aliases}}

последующие строки можно разкомментировать тоже, но необходимы они только тем, кто хочет отправлять письма приходящие для алиасов в файл, директорию и тд.

делаем
#/etc/init.d/exim4 restart


и проверяем работу
$exim -bh <${some_ipaddr}>


На этом все. - алиасы работают и мы уже получаем отчеты от демона crond о выполнении заданий.