База данных доступа (access database)
База данных доступа (access database)
Альтернативная система, которая предлагает большую гибкость и управление в ручной конфигурации, это свойство sendmail
access_db. База данных позволяет Вам конфигурировать, от кого вы примете почту и для кого ее передадите.
Это очень важный аспект, поскольку такой подход позволяет бороться со спамерами, обходящими Real-time Blackhole List. Вместо того, чтобы посылать почту Вам непосредственно, спамер передаст почту через некоторый другой компьютер, который в списке не отмечен. В результате спам дойдет-таки до адресата! Чтобы гарантировать, что Ваш компьютер не используются таким образом, Вы должны передавать почту только для известных компьютеров. Версии sendmail 8.9.0 и старше вообще блокируют ретрансляцию почты по умолчанию.
Получив входящее соединение по SMTP, sendmail берет данные из заголовка и сравнивает их с базой данных, чтобы узнать, что ему с этим письмом делать.
База данных доступа это совокупность правил, которые описывают, какое действие должно быть выполнено для сообщений, полученных от указанных компьютеров. Заданный по умолчанию файл управления доступом называется /etc/mail/access. Таблица в нем имеет простой формат. Каждая строка таблицы содержит правило доступа. Левая сторона каждого правила образец, используемый, чтобы сравнивать с ним адреса. Это может быть полный адрес email, hostname или адрес IP. Правая сторона задает действие. Имеются пять типов действия, а именно:
OKПринять сообщение почты.
RELAYПринять сообщения с этого компьютера или от заданного пользователя, даже если они не предназначены для нашего компьютера. То есть, сообщения для передачи на другие компьютеры через наш.
REJECTОтклонить сообщение почты.
DISCARDОтклонить сообщение почты, используя транспорт $#discard.
### any textВернуть сообщение об ошибке, используя код ошибки ### (указаны в RFC-821) или "any text" в качестве ответного сообщения.
Простой пример файла /etc/mail/access:
friends@cybermail.com REJECT aol.com REJECT 207.46.131.30 REJECT postmaster@aol.com OK linux.org.au RELAY |
Этот пример отклонит все письма с адреса friends@cybermail.com, любого хоста в домене aol.com и хоста 207.46.131.30. Следующее правило разрешает принять почту с postmaster@aol.com, несмотря на тот факт, что домен имеет запрещающее правило. Последнее правило позволяет передачу почты с любого хоста в домене linux.org.au.
Для включения поддержки access database впишите определение в sendmail.mc:
FEATURE(access_db) |
Заданное по умолчанию определение формирует базу данных, используя вызов hash -o /etc/mail/access, который генерирует простую базу данных из текстового файла. Этого достаточно в большинстве случаев. Есть другие параметры, которые Вы должны изучить при использовании большой базы данных доступа. Но ввиду малой распространенности таких конфигураций, я не буду рассматривать их.