Изменение sendmail.cf


Помните, я говорил, как ужасен конфигурационный файл /etc/mail/sendmail.cf? Да, вам придется изменять его. Однако не нужно редактировать sendmail.cf напрямую. На самом деле, у Sendmail есть инструменты для сборки этого конфигурационного файла из других конфигурационных файлов. Сегодня звучит странновато, но во время появления Sendmail это считалось передовым достижением. (Думаю, молодежь скажет: «Старая школа — это отпад».)

Операционная система FreeBSD включает два файла с расширением .cfsendmail.cf и submit.cf. Файл sendmail.cf содержит настройки Sendmail, которые определяют порядок пересылки почты другим системам и ее получения процессом приема почты, если таковой запущен. Файл submit.cf используется только в конфигурации передачи почты и только для обслуживания очереди неотправленных сообщений. В действительности файл submit.cf намного проще своего собрата, если у вас хватит стойкости и желания читать его. Эти два файла создаются автоматически, за счет применения правил из двух отдельных файлов, freebsd.mc и freebsd.submit.mc.

Файлы с расширением .mc — это конфигурационные файлы процессора макроязыка m4. Команда m4(1) читает инструкции из этих файлов и определения из /usr/share/sendmail/cf и на их основе создает файлы .cf. Желательное поведение Sendmail определяется в файлах .mc, а затем на их основе с помощью команды m4 создаются соответствующие конфигурационные файлы Sendmail. Например, рассмотрим файл freebsd.mc.

Хотя файл начинается с символа решетки (#), обозначающего комментарии, тем не менее после начала конфигурационных определений символ решетки больше не встречается — вместо него, если нужно добавить комментарий, который будет игнорироваться утилитой m4, используется строка символов dnl. Некоторые из строк в этом файле выглядят достаточно очевидными:

Мы только что говорили о файлах access, mailertable и virtusertable! Эти инструкции предписывают утилите m4(1) включить эти особенности с помощью хешей, созданных из указанных имен файлов. Пока все это не очень пугает.

Однако взгляните на эти инструкции внимательнее. Здесь определены имена особенностей и за ними указаны имена конфигурационных файлов в апострофах. Первый апостроф — это на самом деле обратная одиночная кавычка (1), а второй — обычная одиночная кавычка (2). Апострофы следует указывать именно в таком виде и в таком порядке, в противном случае m4(1) не сможет корректно интерпретировать файл.

Здесь также можно встретить ряд конфигурационных параметров, закомментированных с помощью строки dnl:

dnl Dialup users should uncomment and define this appropriately
dnl define('SMART_HOST', 'your.isp.mail.server')

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

Изменяя записи в файле .mc и пересобирая конфигурационный файл, вы можете управлять работой Sendmail. Мы задействуем эту возможность для настройки системы. Ниже я продемонстрирую два простых примера, а полученные знания мы используем в последующих разделах.

Нестандартные файлы .mc

Файлы с инструкциями (Makefile) для сборки конфигурационных файлов Sendmail по умолчанию имеют имена, составленные из имени хоста системы с расширением .mc. Например, на моем ноутбуке pesty.blackhelicopters.org имеются два файла .mc: /etc/mail/pesty.blackhelicopters.org.mc и /etc/mail/pesty.blackhelicopters.org.submit.mc. Если такие файлы у вас отсутствуют, make(1) создаст их, скопировав содержимое файлов sendmail.mc и submit.mc.

Я не попадал в ситуации, когда приходилось бы редактировать файл submit.mc. Не исключая появления таких ситуаций, я полагаю, что желание отредактировать этот файл, скорее всего, лишнее. Практически всегда вам придется иметь дело только с файлом <имя_хоста>.mc.

Для начала скопируем файл freebsd.mc в <имя_хоста>.mc и затем внесем в него все необходимые изменения. Первым сконфигурируем интеллектуальный хост.

Интеллектуальные хосты

Интеллектуальный хост (smart host) — это локальный почтовый сервер, который знает, как отправить почту за пределы локальной сети. Я не желаю, чтобы мой ноутбук контактировал с удаленными почтовыми серверами напрямую; предпочитаю вручать свою почту моему выделенному почтовому серверу, который возьмет на себя всю грязную работу по поиску МХ-записей, идентификации серверов, а также передаче и повторной передаче моей электронной почты, пока удаленный сервер не снизойдет до того, чтобы принять ее. Ноутбук должен быть свободен для моих более важных дел, как то: слушать МРЗ-файлы и писать всю эту чепуху.

Вы можете настроить интеллектуальный хост в своем файле <имя_хоста>.mc. Помните пример интеллектуального хоста из предыдущего раздела? Просто укажите имя своего интеллектуального хоста и пересоберите файл sendmail.cf. В качестве интеллектуального хоста у себя в сети я использую перегруженный bewilderbeast.blackhelicopters.org, поэтому отредактирую свой файл /etc/mail/pesty.blackhelicopters.org.mc так:

dnl Dialup users should uncomment and define this appropriately
define('SMART_HOST', 'bewilderbeast.blackhelicopters.org')

Здесь я удалил символы dnl в начале второй строки. Тем самым я раскомментировал определение параметра SMART_HOST, сделав его доступным для m4(1). Я благоразумно не тронул символы апострофов, заключив в них имя хоста своего почтового ретранслятора. Теперь мне нужно пересобрать sendmail.cf с помощью команды make all и установить его командой make install:

# cd /etc/mail
# make all

/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4
pesty.blackhelicopters.org.mc > pesty.blackhelicopters.org.cf

# make install
install -m 444 pesty.blackhelicopters.org.cf /etc/mail/sendmail.cf
install -m 444 pesty.blackhelicopters.org.submit.cf /etc/mail/submit.cf

Здесь видно, что m4(1) использует файл <имя_хоста>.mc для сборки файла <имя_хоста>.сf, который затем устанавливается как sendmail.cf. Мои изменения вступят в силу сразу после перезапуска sendmail(8). Теперь мой ноутбук будет отправлять всю электронную почту серверу bewilderbeast.blackhelicopters.org, который и доставит ее удаленным серверам.

Если вместо файла <имя_хоста>.mc используется другой файл, укажите полный путь к этому файлу в переменной SENDMAIL_MC в файле /etc/make.conf.

Блокирование источников спама

Наверное, проще всего уменьшить поток макулатурной почты с помощью черного списка. Черный список — это список IP-адресов, откуда поступает макулатурная почта. Есть множество черных списков, созданных по разным критериям, с разной степенью детализации и уровнем серьезности. Прежде чем выбрать какой-то определенный черный список, попробуйте описать для себя предъявляемые требования. Отыскать черные списки антиспама можно с помощью любой поисковой системы.

Прежде чем использовать черный список, выясните размер организации, которая его сопровождает. Список с названием «Fred’s Anti-Spam Blacklist» может обслуживаться одним человеком, чья энергия, направленная на поддержку списка, подвержена приливам и отливам. Небольшие организации, занимающиеся ведением черных списков, могут иметь неоправданные предубеждения против некоторых видов деятельности, поэтому следует очень тщательно оценить стандарты такой организации, прежде чем использовать ее черный список. Кроме того, обязательно посмотрите, как организация добавляет и удаляет записи своего черного списка. Учитывают ли они мнение общественности? Если да, то как они проверяют это мнение? Как люди выбираются из черного списка? Помещает ли эта организация в свой черный список большие диапазоны IP-адресов из-за некорректного поведения одной или двух небольших сетей в этом диапазоне? Если да, то использование такого черного списка будет препятствовать получению электронной почты от хостов с IP-адресами из этих диапазонов. Это может никак не сказаться на вас лично, но вы должны учесть все факторы, прежде чем взяться за обслуживание электронной почты других людей.

К моменту написания этих строк моим любимым черным списком был Spamhaus (http://www.spamhaus.org). Для почтовых серверов с небольшим трафиком компания Spamhaus, созданная в 1999 году, предоставляет услугу бесплатно, а для крупномасштабных сайтов — по невысокой цене. Черный список ZEN этой компании включает IP-адреса известных производителей макулатурной почты, оконечных устройств (разного рода модемы), которые никогда не должны отправлять электронную почту непосредственно, а также адреса в ботнетах. Любые из этих адресов могут оказаться источниками спама, вирусов и прочей гадости, поэтому, отклоняя электронную почту, поступающую с этих адресов, вы сможете значительно снизить объем получаемой макулатурной почты. Если вы предоставляете услугу интеллектуального хоста клиентам, использующим SASL для доступа к ретранслятору (как будет обсуждаться в следующем разделе), список ZEN может заблокировать таких пользователей. В этом случае можно порекомендовать использовать список SBL вместо ZEN. В примерах этого раздела мы будем использовать услугу Spamhaus ZEN, но вы можете использовать любой другой черный список.

По умолчанию sendmail.mc включает пример записи, определяющей черный список:

dnl Unc

Черный список по умолчанию, расположенный на сайте http://www.mail-abuse.org, — это платная услуга для любых пользователей, даже для тех, у кого почтовый трафик очень невелик, но в рамках этой услуги предоставляется шаблон настройки черного списка. Проверьте свой черный список на наличие необходимой информации об имени хоста и затем добавьте правило, напоминающее следующее (в одной строке):

Здесь программе Sendmail предписывается использовать черный список на базе информации DNS (1) и выполнять проверку записей в домене zen.spamhaus.org (2). Кроме того, мы вставили в правило свое сообщение об ошибке (3), включив в него IP-адрес клиента (4) и указав источник дополнительной информации (5).

Пересоберите свой файл sendmail.cf, перезапустите Sendmail, чтобы задействовать черный список, и посмотрите в файле протокола на записи для входящих сообщений. Сообщения, заблокированные в результате использования черного списка, в /var/log/maillog выглядят примерно так:

Jun 16 12:10:13 bewilderbeast sm-mta[40174]: ruleset=check_relay, arg1=82- 46-225-100.cable.ubr04.dund.blueyonder.со.uk, arg2=127.0.0.4, relay=82-46- 225-100.cable.ubr04.dund.blueyonder.co.uk [82.46.225.100], reject=550 5.7.1 Mail from 82.46.225.100 refused - see http://www.spanhaus.org/zen/

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

Комментарии запрещены.