Безопасность и оптимизация Linux.Редакция для Red Hat

Файл “/etc/sendmail.mc” для центрального почтового концентратора


Вместо того, чтобы иметь индивидуальные сервера или рабочие станции обрабатывающие свою почту, намного выгоднее иметь в сети единый мощный центральный сервер, который обрабатывает всю почту. Такой сервер называется Почтовый концентратором. Преимущества Центрального Почтового Концентратора:

  • Вся входящая почта отправляется на концентратор, никогда почта не отправляется клиенту напрямую.
  • Вся исходящая почта от клиентов отправляется на концентратор, и уже он отправляет ее по назначению.
  • Вся исходящая почта поступает от одного сервера, поэтому во внешнем мире не требуется знать имена клиентских машин.
  • Клиенту не надо запускать демон sendmail для получения почты.
  • Файл “sendmail.cf” первым считывается Sendmail при запуске и является одним из самых важных файлов для него. В нем определяются месторасположения остальных файлов, права доступа к файлам и каталогам нужных Sendmail. Макро препроцессор m4 из Linux используется Sendmail V8 для создания конфигурационного файла.

    Он будет создавать конфигурационный файл “/etc/mail/sendmail.cf”, обрабатывая файл имя которого заканчивается на “.mc”.

    Мы создадим файл (sendmail.mc) и внесем в него необходимые макро значения, которые препроцессор m4 прочитает, соберет определения макросов и затем, заменит эти макросы их значениями, создавая в результате своей работы файл “sendmail.cf”. Пожалуйста, обратитесь к документации Sendmail и файлу README из каталога “cf” дерева исходных фалов Sendmail V8 для получения большей информации.

    Шаг 1

    Создайте файл sendmail.mc (touch /var/tmp/sendmail-version/cf/cf/sendmail.mc) и добавьте в него следующие строки:

    define(`confDEF_USER_ID',``8:12'')dnl

    OSTYPE(`linux')dnl

    DOMAIN(`generic’)dnl

    define(`confTRY_NULL_MX_LIST',true)dnl

    define(`confDONT_PROBE_INTERFACES',true)dnl

    define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl



    define(`LOCAL_MAILER_FLAGS', `ShPfn')dnl

    define(`LOCAL_MAILER_ARGS', `procmail -a $h -d $u')dnl

    FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

    FEATURE(`mailertable’)dnl

    FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl


    FEATURE(`redirect’)dnl

    FEATURE(`always_add_domain’)dnl

    FEATURE(`use_cw_file’)dnl

    FEATURE(`local_procmail’)dnl

    FEATURE(`access_db')dnl

    FEATURE(`blacklist_recipients')dnl

    FEATURE(`dnsbl')dnl

    MAILER(`local’)dnl

    MAILER(`smtp’)dnl

    MAILER(`procmail’)dnl

    Где:

    define(`confDEF_USER_ID',``8:12'')dnl

    Эта конфигурационная опция определяет id пользователя по умолчанию. В нашем случае пользователь “mail” и группа “mail”, которые отвечают следующим идентификатор “8:12” (смотрите /etc/passwd и /etc/group file).

    OSTYPE(`linux’)dnl

    Эта конфигурационная опция задает операционную систему под которой будет запускаться Sendmail; в нашем случае это “linux”. Этот элемент является минимально необходимым для “mc” файла.

    DOMAIN(`generic’)dnl

    Эта конфигурационная опция будет определять и описывать домен соответствующий вашему окружению.

    define(`confTRY_NULL_MX_LIST',true)dnl

    Эта конфигурационная опция определяет, является ли принимающий сервер лучшим MX для хоста, и если это так, то соединяется с ним напрямую.

    define(`confDONT_PROBE_INTERFACES',true)dnl

    Эта конфигурационная опция, если она установлена в true, говорит Sendmail не вставлять имена и адреса любых локальных интерфейсов в класс $=w (список известных “эквивалентных” адресов).

    define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl

    Эта опция определяет путь к программе procmail, инсталлированной на вашей системе. Так как в Red Hat Linux он отличается от других Linux версий, мы должны определить новый путь в этом макросе. Важно заметить, что этот макрос также используется в FEATURE(`local_procmail’), как будет определено позже в этом файле.

    define(`LOCAL_MAILER_FLAGS', `ShPfn')dnl

    Эта конфигурационная опция определяет флаги, которые должны быть использованы локальным агентом доставки (procmail). Смотрите документацию Sendmail для получения большей информации о них.

    define(`LOCAL_MAILER_ARGS', `procmail -a $h -d $u')dnl

    Эти конфигурационные опции определяют аргументы которые должны быть переданы локальному агенту доставки (procmail). Смотрите документацию Sendmail для получения информации о них.



    FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

    Этот m4 макроопределение включает использование “smrsh” (ограниченная оболочка sendmail) вместо “/bin/sh”, используемого по умолчанию) для почтовых программ. При помощи этой опции вы можете контролировать какие программы могут запускаться через электронную почту через файлы “/etc/mail/aliases” и “~/.forward”. По умолчанию программа “smrsh” находится в “/usr/libexec/smrsh”; так как мы проинсталлировали “smrsh” в другое место, нам нужно добавить аргумент smrsh, указывающий новое месторасположение “/usr/sbin/smrsh”. Использование “smrsh” рекомендовано CERT, так что вы должны поддерживать использование этой возможности так часто, как возможно.

    FEATURE(`mailertable’)dnl

    Это макроопределение m4 включает возможность использования “mailertable” (базы данных выбора нового агента доставки). mailertable – это база данных которая связывает имена “host.domain” со специальными агентами доставки. Благодаря этой возможности, почта может доставляться специфическими агентами доставки к новым доменным именам. Обычно, эта возможность используется только на Центральном Почтовом концентраторе.

    FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl

    Это макроопределение m4 включает использование “virtusertable” (поддержка виртуальных доменов), которая позволяет на одной машине размещать много виртуальных доменов. virtusertable – это база данных, которая связывает виртуальные домены с новыми адресами. Благодаря использованию этой возможности, почта для виртуальных почтовых доменов может быть доставлена на локальные, удаленные или единичные адреса пользователей. Обычно, эта возможность используется только на Центральном Почтовом Концентраторе.

    FEATURE(`redirect’)dnl

    Это макроопределение m4 включает использование “redirect” (поддержка для address.REDIRECT). С этой возможностью, почтовый адрес удаленного бюджета, например, “wahib”, будет отражаться с информацией о новом адресе. Удаленный бюджет должен быть определен в файле псевдонимов на почтовом сервере. Обычно, эта возможность используется только на Центральном Почтовом Концентраторе.



    FEATURE(`always_add_domain’)dnl

    Это макроопределение m4 включает использование “always_add_domain” (добавлять локальный домен в локальной почте). Благодаря этой возможности, все локально доставляемые адреса будут полностью квалифицированными.

    FEATURE(`use_cw_file’)dnl

    Это макроопределение m4 включает использование “use_cw_file” (использование файла /etc/mail/local-host-names для локальных имен компьютеров). Используя эту возможность вы можете объявить список хостов в файле “/etc/mail/local-host-names” для которых локальных хост выступает MX получателем. Другими словами файл “/etc/mail/local-host-names” будет содержать альтернативные имена локального компьютера.

    FEATURE(`local_procmail’)dnl

    Это макроопределение m4 включает использование “local_procmail” (использовать procmail, как локальный агент доставки). Благодаря этой функции вы можете использовать procmail, как агент доставки Sendmail.

    FEATURE(`access_db')dnl

    Это макроопределение m4 включает использование базы данных доступа. Благодаря этой функции, вы можете в базе данных access разрешать или запрещать прием почты из определенных доменов. Обычно, эта возможность используется только на Центральном Почтовом Концентраторе.

    FEATURE(`blacklist_recipients')dnl

    Это макроопределение m4 включает возможность блокирования входящей почты от определенных отправителей, компьютеров и адресов. Используя эту функцию, например, вы можете блокировать входящую почту от пользователя nobody, хоста foo.mydomain.com или guest@bar.mydomain.com.

    FEATURE(`dnsbl')dnl

    Это макроопределение m4 разрешает Sendmail отклонять почту от любых сайтов, входящих в базу данных Realtime Blackhole List "rbl.maps.vix.com". Базирующееся на DNS блокирование основывается на базе данных, содержащей DNS имена спаммеров. За подробной информацией обращайтесь на "".

    MAILER(`local’), MAILER(`smtp’) и MAILER(`procmail’)dnl

    Это макроопределение m4 включает использование агентов доставки “local”, “smtp” и “procmail” (по умолчанию Sendmail, агенты доставки автоматичнски не объявляются). Используя эту возможность, вы можете определить какие агенты использовать, а какие игнорировать. Опции MAILER(`local’), MAILER(`smtp’) и MAILER(`procmail’) поддерживают local, smtp, esmtp, smtp8, relay procmail агенты доставки. Важно отметить, что MAILER(`smtp’) должен всегда предшествовать MAILER(`procmail’).



    ЗАМЕЧАНИЕ. Иногда, домен с которым вы хотите продолжить общаться может входить в список RBL. В этом случае, Sendmail позволит вам переписать разрешение на прием их почты. Чтобы сделать это, просто отредактируйте файл "/etc/mail/access" и добавить соответствующую доменную информацию.

    Например:

    blacklisted.domain OK

    Шаг 2

    Сейчас, когда файл с макроопределениями “sendmail.mc” создан, мы создадим конфигурационный файл sendmail (“sendmail.cf”). Для этого используйте следующие команды:

    [root@deep /]# cd /var/tmp/sendmail-version/cf/cf/

    [root@deep cf]# m4 ../m4/cf.m4 sendmail.mc > /etc/mail/sendmail.cf

    ЗАМЕЧАНИЕ. Здесь “../m4/cf.m4” говорит программе m4, где находится конфигурационный файл с информацией по умолчанию.

    Так как локальные клиентские машины никогда не получают почту напрямую из внешнего мира и пересылают (отправляют) почту через Центральный Почтовый Концентратор, мы создаем специальный фал, называемый “null.mc”, из которого позже мы получим конфигурационный файл “sendmail.cf”, отвечающий специальным установкам для граничных и локальных серверов. Этот файл с макроопределениями m4 легко создается и конфигурируется, потому, что ему не нужно столько возможностей как на Центральном Почтовом Концентраторе.

    Шаг 1

    Создаем фал null.mc (touch /var/tmp/sendmail-version/cf/cf/null.mc) и добавляем в него следующие строки: OSTYPE(`linux')dnl

    DOMAIN(`generic’)dnl

    FEATURE(`nullclient',`mail.openna.com')dnl

    undefine(`ALIAS_FILE')dnl

    где,

    OSTYPE(`linux’)

    Эта конфигурационная опция задает операционную систему под которой будет запускаться Sendmail; в нашем случае это “linux”. Этот элемент является минимально необходимым для “mc” файла.

    DOMAIN(`generic’)

    Эта конфигурационная опция будет определять и описывать домен соответствующий вашему окружению.

    FEATURE(`nullclient',`mail.openna.com')

    Это макроопределение m4 говорит вашей клиентской машине никогда не принимать почту напрямую, посылать ее через почтовый концентратор, и пересылать всю почту через этот же сервер, вместо того, чтобы отправлять напрямую. Эта возможность создает небольшой конфигурационный файл ни содержащий ничего, кроме информации о пересылки всей почты на почтовый концентратор через локальную сеть, базирующуюся на SMTP-based. Аргумент “mail.openna.com’, включенный в это определение, является каноническим именем Почтового концентратора. Вы должны, конечно, изменить это имя на ваш Почтовый концентратор, например: FEATURE(`nullclient',` my.mailhub.com').



    undefine(`ALIAS_FILE')

    Эта конфигурационная опция предотвращает доступ к файлам “/etc/mail/aliases” и “/etc/mail/aliases.db” со стороны nullclient-ской версии Sendmail. С этой строкой в “.mc” файле, вам не нужно создавать файл “aliases” на вашем внутреннем сервере. Эти файлы необходимы только для Центрального почтового севера.

    ЗАМЕЧАНИЕ. Хочется отметить, что со всеми типами конфигураций, должны быть определены no mailers, no aliasing и forwarding.

    Шаг 2

    Сейчас, когда у нас есть конфигурационный файл с макроопределениями “null.mc”, мы будем на его основе создавать конфигурационный файл Sendmail “sendmail.cf” для граничных серверов и клиентских машин, используя следующие команды:

    [root@deep /]# cd /var/tmp/sendmail-version/cf/cf/

    [root@deep cf]# m4 ../m4/cf.m4 null.mc > /etc/mail/sendmail.cf

    Шаг 3

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

    Для остановки демона Sendmail, редактируйте или создайте файл “/etc/sysconfig/sendmail” и измените/добавьте следующие строки:

    DAEMON=yes

    Должна читаться:

    DAEMON=no

    И: QUEUE=1h

    ЗАМЕЧАНИЕ. “QUEUE=1h” в файле “/etc/sysconfig/sendmail” говорит Sendmail, что необходимо обрабатывать очередь каждый час. Мы оставим эту строку, так как Sendmail необходимо периодически выполнять эту операцию, если Почтовый концентратор не работает.

    Шаг 4

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

    /usr/bin/newaliases

    /usr/man/man1/newaliases.1

    /usr/man/man5/aliases.5

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

    [root@client /]# rm -f /usr/bin/newaliases

    [root@client /]# rm -f /usr/man/man1/newaliases.1

    [root@client /]# rm -f /usr/man/man5/aliases.5

    Шаг 5

    Удалите неиспользуемую программу Procmail с ваших локальных серверов и клиентских машин. Так как локальные машины отправляют всю внутреннюю и исходящую почту на центральный почтовый концентратор для дальнейшей доставки, нам нет необходимости использовать локальный агент доставки подобный Procmail. Вместо него мы можем использовать программу “/bin/mail”. Для удаления Procmail с вашего сервера используйте следующую команду:

    [root@client]# rpm -e procmail


    Содержание раздела