Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В.

.pdf
Скачиваний:
123
Добавлен:
24.05.2014
Размер:
4 Мб
Скачать

Глава 27. Exim – почтовый транспортный агент

371

Часть 7

Программное

обеспечение

для организации службы электронной почты

372

Часть 7. Программное обеспечение для организации службы электронной почты

Глава 27

Exim – почтовый транспортный агент

В этой главе:

1. Ограничения и допущения

2.Пакеты

3.Компиляция, оптимизация и инсталляция Exim

4.Конфигурирование Exim

5.Конфигурирование Exim в режиме центрального почтового концентратора

6.Конфигурационный файл /etc/mail/exim.conf

7.Конфигурационный файл /etc/mail/localdomains

8.Конфигурационный файл /etc/mail/relaydomains

9.Конфигурационный файл /etc/mail/aliases

10. Конфигурационный файл etc/mail/access

11. Конфигурационный файл /etc/mail/system-filter

12. Конфигурационный файл /etc/sysconfig/exim

13. Файл инициализационный /etc/init.d/exim

14. Тестирование Exim

15. Аутентификация пользователей перед отправкой сообщений

16. Запуск Exim с поддержкой SSL

17. Конфигурирование Exim в качестве локального почтового сервера

Глава 27. Exim – почтовый транспортный агент

373

Exim – почтовый транспортный агент (Mail Transport Agent, MTA), разработанный в университете г. Кембридж (University of Cambridge). Данное программное обеспечение предназначено для:

доставки (приема и отправки) почтовых сообщений;

фильтрации нежелательных сообщений;

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

Exim является одним из самых безопасных почтовых транспортных агентов, именно поэтому авторы

ипредлагают устанавливать его на Linux-серверах вместо штатного агента Sendmail.

Вэтой главе рассматривается установка Exim в следующих двух конфигурациях:

центрального почтового концентратора, т. е. сервера, предназначенного для приема, отправки и перенаправления почтовых сообщений со всех систем вашей локальной сети;

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

В последнем случае Exim должен быть установлен на всех Linux-системах вашей сети. Даже если вы не собираетесь отсылать или получать почту с Linux-системы, то установка почтового сервера все равно необходима для обеспечения возможности получения служебных сообщений, адресованных пользователю

root и другим специальным пользователям.

Exim, являясь почтовым транспортным агентом, не предназначен для чтения почты. Локальные пользователи почтового сервера могут просматривать, редактировать сообщения и выполнять другие элементарные операции по работе с почтой с помощью программы mail. Для получения почты пользователями вашей сети необходима установка дополнительного программного обеспечения, реализующего протоколы POP (Post Office Protocol) или IMAP (Internet Message Access Protocol), непосредственно взаимодействующего с клиентскими почтовыми программами (Mail User Agent, MUA). Принципиальная схема организации службы электронной почты представлена на рис. 27.1.

Ограничения и допущения

Исходные коды находятся в каталоге /var/tmp.

Все операции выполняются пользователем с учетной записью root. Используется дистрибутив ASPLinux 7.3 (Vostok).

Перекомпиляция ядра не требуется.

Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистрибутивов Linux, но авторы этого не проверяли.

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы проекта Exim по состоянию на 06.06.2003. Регулярно посещайте домашнюю страницу проекта http://www.exim.org/ и отслеживайте обновления.

Исходные коды Exim содержатся в архиве exim-version.tar.gz (последняя доступная на момент написания главы стабильная версия exim-4.20.tar.gz). Подробная документация в формате

HTML содержится в архиве exim-html-version.tar.gz.

Компиляция, оптимизация и инсталляция Exim

Для инсталляции Exim необходимо выполнить следующие операции.

Шаг 1 Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кода-

ми, используя процедуры, описанные в шаге 1 радела «Компиляция, оптимизация и инсталляция OpenSSL» главы 12.

Шаг 2

Распакуйте архивы с исходными кодами Exim и документацией в каталоге /var/tmp:

[root@test tmp]# tar xzpf exim-4.20.tar.gz [root@test tmp]# tar xzpf exim-html-4.10.tar.gz

374

Часть 7. Программное обеспечение для организации службы электронной почты

Интернет

Роутер

Концентратор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шлюз,

 

Центральный почтовый

концентра-

WWW-сервер,

 

 

 

 

тор.

или IMAP,

локальный почтовый

 

 

Установлены MTA,POP

локальный почтовый

сервер.

 

 

антивирусное и антиспамерское

 

сервер.

Установлен MTA

 

 

 

 

ПО

 

 

Установлен MTA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Локальная сеть

 

 

 

 

 

 

 

 

 

На всех рабочих станциях уста-

 

Концентратор

 

 

новлены

 

клиентские

почтовые

 

 

 

 

 

 

 

 

программы (MUA)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 27.1. Принципиальная схема организации службы электронной почты.

Глава 27. Exim – почтовый транспортный агент

375

Шаг 3

Создайте специального пользователя mail, от имени которого будет запускаться Exim:

[root@test tmp]# groupadd -g 12 mail > /dev/null 2>&1 || : [root@test tmp]# useradd -u 8 -g 12 -s /bin/false -M -r -d

/var/spool/mqueue mail > /dev/null 2>&1 || :

Шаг 4

Для добавления несуществующего командного интерпретатора добавьте в файл /etc/shells стро-

ку:

/bin/false/

Шаг 5

Процедура установки Exim несколько отличается от обычной процедуры установки программ с открытыми исходными кодами, в которой Makefile создается полуавтоматически с использованием команды configure. В комплект поставки входит файл src/EDITME, который может быть использован в качестве шаблона для создания собственной версии Makefile, оптимизированной под вашу операционную систему и решаемые задачи. Для создания Makefile скопируйте src/EDITME в файл

Local/Makefile:

[root@test tmp]# cd exim-4.20

[root@test exim-4.20]# cp src/EDITME Local/Makefile

Для изменения заданного по умолчанию расположения исполняемых файлов в файле

/var/tmp/exim-4.20/Local/Makefile замените строку:

BIN_DIRECTORY=/usr/exim/bin

на:

BIN_DIRECTORY=/usr/sbin

Для изменения заданного по умолчанию расположения конфигурационного файла замените строку:

CONFIGURE_FILE=/usr/exim/configure

на:

CONFIGURE_FILE=/etc/mail/exim.conf

Для определения пользователя, от имени которого будет запускаться Exim, замените строку:

# EXIM_USER=

на:

EXIM_USER=8

Для определения группы пользователей замените cтроку:

# EXIM_GROUP=

на:

EXIM_GROUP=12

Для изменения заданного по умолчанию каталога, в котором находятся пересылаемые сообщения, замените строку:

SPOOL_DIRECTORY=/var/spool/exim

на:

SPOOL_DIRECTORY=/var/spool/mqueue

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

EXIM_MONITOR=eximon.bin

на:

# EXIM_MONITOR=eximon.bin

Для включения поддержки различных протоколов аутентификации пользователей замените строки:

#AUTH_CRAM_MD5=yes

#AUTH_PLAINTEXT=yes

на:

AUTH_CRAM_MD5=yes

AUTH_PLAINTEXT=yes

Для ведения файлов регистрации Exim с использованием службы syslog замените строку:

# LOG_FILE_PATH=syslog:/var/log/exim_%slog

376

Часть 7. Программное обеспечение для организации службы электронной почты

на:

LOG_FILE_PATH=syslog

Для указания пути к программе, используемой Exim для разархивирования файлов, замените строку:

ZCAT_COMMAND=/usr/bin/zcat

на:

ZCAT_COMMAND=/usr/bin/gunzip

Для включения поддержки интерпретатора Perl замените строку:

# EXIM_PERL=perl.o

на:

EXIM_PERL=perl.o

Для изменения заданных по умолчанию путей к программам, необходимым для функционирования Exim, замените строки:

#CHOWN_COMMAND=/usr/bin/chown

#CHGRP_COMMAND=/usr/bin/chgrp

#MV_COMMAND=/bin/mv

#RM_COMMAND=/bin/rm

#PERL_COMMAND=/usr/bin/perl

на:

CHOWN_COMMAND=/bin/chown

CHGRP_COMMAND=/bin/chgrp

MV_COMMAND=/bin/mv

RM_COMMAND=/bin/rm

PERL_COMMAND=/usr/bin/perl

Для обеспечения возможности перемещения «замороженных» сообщений замените строку:

# SUPPORT_MOVE_FROZEN_MESSAGES=yes

на:

SUPPORT_MOVE_FROZEN_MESSAGES=yes

Шаг 6

Для оптимизации компиляции исходных кодов Exim применительно к архитектуре вашего процессо-

ра в файле /var/tmp/exim-4.20/OS/Makefile-Linux замените строку:

CFLAGS=-0

на:

CFLAGS=-O2 -march=i686 -funroll-loops

Шаг 7

Откомпилируйте, проинсталлируйте Exim, создайте и сохраните в надежном месте список установленных файлов:

[root@test exim-4.20]# make

[root@test exim-4.20]# find /* > /root/exim1 [root@test exim-4.20]# make install

[root@test exim-4.20]# ln -fs /usr/sbin/exim-4.20-1 /usr/lib/sendmail [root@test exim-4.20]# ln -fs /usr/sbin/exim-4.20-1 /usr/lib/sendmail [root@test exim-4.20]# ln -fs /usr/sbin/exim-4.20-1 /usr/sbin/sendmail [root@test exim-4.20]# ln -fs /usr/sbin/exim-4.20-1 /usr/bin/mailq [root@test exim-4.20]# ln -fs /usr/sbin/exim-4.20-1 /usr/bin/runq [root@test exim-4.20]# mv /etc/aliases /etc/exim-4.20

[root@test exim-4.20]# strip /usr/sbin/exim-4.20-1 [root@test exim-4.20]# chown 0.mail /var/spool/mail [root@test exim-4.20]# chmod 1777 /var/spool/mail

[root@test exim-4.20]# find /* > /root/exim2

[root@test exim-4.20]# diff /root/exim1 /root/exim2 > exim.installed [root@test exim-4.20]# mv /root/exim.installed

/very_reliable_place/exim.installed.YYYYMMDD

Шаг 8 Удалите архивы и каталоги с исходными кодами программ и документацией:

[root@test exim-4.20]# cd /var/tmp/ [root@test tmp]# rm -rf exim-4.20/

Глава 27. Exim – почтовый транспортный агент

377

[root@test tmp]# rm -f exim-4.20.tar.gz [root@test tmp]# rm -rf exim-html-4.10/ [root@test tmp]# rm -f exim-html-4.10.tar.gz

Конфигурирование Еxim

Конфигурирование Exim осуществляется с использованием следующих файлов:

главного конфигурационного файла /etc/mail/exim.conf;

файла /etc/mail/localdomains, содержащего имена ваших доменов;

файла /etc/mail/relaydomains, содержащего имена доменов, которым разрешена рассылка почты с использованием вашего сервера;

файла псевдонимов /etc/mail/aliases;

файла доступа /etc/mail/access;

файла фильтров /etc/mail/system-filter;

системного конфигурационного файла /etc/sysconfig/exim, необходимого для передачи опций, с которыми должен запускаться Exim;

файла инициализации /etc/init.d/exim, необходимого для запуска Exim.

Конфигурирование Exim в режиме центрального почтового концентратора

Конфигурационный файл /etc/mail/exim.conf

Шаг 1

Создайте файл /etc/mail/exim.conf, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

######################################################################

# MAIN CONFIGURATION SETTINGS #

######################################################################

primary_hostname = test.bruy.info acl_smtp_rcpt = check_recipient acl_smtp_data = check_message

domainlist local_domains = @ : lsearch;/etc/mail/localdomains hostlist relay_hosts = lsearch;/etc/mail/relaydomains hostlist auth_relay_hosts = *

log_selector = \ +all_parents \ +received_sender \

+received_recipients \ +smtp_confirmation \ +smtp_syntax_error

allow_domain_literals = false never_users = root:daemon:bin:sync:named host_lookup = *

trusted_users = mail gecos_pattern = ^([^,:]*) gecos_name = $1 freeze_tell = postmaster auto_thaw = 1h

ignore_bounce_errors_after = 30m timeout_frozen_after = 7d

received_header_text = "Received: \

${if def:sender_rcvhost {from ${sender_rcvhost}\n\t}\ {${if def:sender_ident {from ${sender_ident} }}\

${if def:sender_helo_name {(helo=${sender_helo_name})\n\t}}}}\ by ${primary_hostname} \

${if def:received_protocol {with ${received_protocol}}} \ (Exim ${version_number} #${compile_number})\n\t\

378 Часть 7. Программное обеспечение для организации службы электронной почты

id ${message_id}\

${if def:received_for {\n\tfor <$received_for>}}"

system_filter = /etc/mail/system-filter message_body_visible = 5000 message_size_limit = 10M smtp_accept_max = 2048 smtp_connect_backlog = 256

queue_only split_spool_directory queue_run_max = 1 remote_max_parallel = 1 rfc1413_hosts = * rfc1413_query_timeout = 0s

smtp_banner = "Welcome on our mail server!\n\ This system does not accept Unsolicited \ Commercial Email\nand will blacklist \

offenders via our spam processor.\nHave a \ nice day!\n\n${primary_hostname} ESMTP Exim \ ${version_number} ${tod_full}"

######################################################################

#

ACL CONFIGURATION

#

#

Specifies access control lists for incoming SMTP mail

#

######################################################################

begin acl

 

 

check_recipient:

 

accept

hosts = :

 

deny

local_parts

= ^.*[@%!/|]

deny

senders

= *@dbm;/etc/mail/access.db : \

 

 

dbm;/etc/mail/access.db

require

verify

= sender

deny

message

= unrouteable address

 

hosts

= !127.0.0.1/8:0.0.0.0/0

 

!verify

= recipient

accept

domains

= +local_domains

 

endpass

 

 

message

= unknown user

 

verify

= recipient

accept

hosts

= +relay_hosts

accept

hosts

= +auth_relay_hosts

 

endpass

 

 

message

= authentication required

 

authenticated

= *

deny

message

= relay not permitted

check_message: accept

######################################################################

# ROUTERS CONFIGURATION #

Глава 27. Exim – почтовый транспортный агент

379

#

Specifies how addresses are handled

#

######################################################################

#

THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!

#

# An address is passed to each router in turn until it is accepted. #

######################################################################

begin routers

dnslookup:

driver = dnslookup

domains = ! +local_domains transport = remote_smtp

ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 no_more

system_aliases: driver = redirect allow_fail allow_defer

data = ${lookup{$local_part}lsearch{/etc/mail/aliases}} user = mail

file_transport = address_file pipe_transport = address_pipe

userforward:

driver = redirect check_local_user

file = $home/.forward no_verify

no_expn check_ancestor allow_filter modemask = 002

file_transport = address_file pipe_transport = address_pipe reply_transport = address_reply

localuser:

driver = accept check_local_user

transport = local_delivery

######################################################################

# TRANSPORTS CONFIGURATION #

######################################################################

#

ORDER DOES NOT MATTER

#

#

Only one appropriate transport is called for each delivery.

#

######################################################################

begin transports

remote_smtp: driver = smtp

local_delivery: driver = appendfile

file = /var/mail/$local_part delivery_date_add envelope_to_add return_path_add

group = mail mode = 0600

address_pipe:

380

Часть 7. Программное обеспечение для организации службы электронной почты

driver = pipe return_output

address_file:

driver = appendfile delivery_date_add envelope_to_add return_path_add

address_reply: driver = autoreply

######################################################################

# RETRY CONFIGURATION #

######################################################################

begin retry

 

 

# Domain

Error

Retries

# ------

-----

-------

*

*

F,2h,15m; G,16h,1h,1.5; F,4d,6h

######################################################################

# REWRITE CONFIGURATION #

######################################################################

begin rewrite

######################################################################

# AUTHENTICATION CONFIGURATION #

######################################################################

begin authenticators

Рассмотрим более подробно настройки каждого раздела главного конфигурационного файла.

Вразделе MAIN CONFIGURATION SETTINGS определяются основные настройки Exim.

Встроке:

primary_hostname = test.bruy.info

определяется полное имя вашего сервера. Возможно, это единственный параметр, который необходимо изменить в данном файле для нормальной работы Exim.

Строки:

acl_smtp_rcpt = check_recipient

acl_smtp_data = check_message

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

Строки:

domainlist local_domains = @ : lsearch;/etc/mail/localdomains hostlist relay_hosts = lsearch;/etc/mail/relaydomains

hostlist auth_relay_hosts = *

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

В первой строке определяется имя домена, который обслуживается SMTP-сервером, при этом знак @ означает домен, указанный в строке primary_hostname =…, т. е. test.bruy.info. Директива lsearch добавляет к множеству обслуживаемых доменов список из файла /etc/mail/localdomains.

Во второй строке определяются хосты, которые могут использовать ваш почтовый сервер для отправки почты на любой почтовый адрес в Интернет. Директива lsearch указывает на то, что список хостов содержится и может быть получен вашим почтовым сервером из файла /etc/mail/relaydomains.