Mini-HOWTO по преобразованию адресов в sendmail |
---|
Пред. | | След. |
Настройка sendmail
Основной файл конфигурации
Sendmail использует очень сложную систему правил для своей конфигурации.
Несмотря на то, что с этой системой можно сделать некоторые хитрости,
писать файл sendmail.cf с нуля достаточно
необычно, и требует больших временных затрат. Если вам интересно все-таки
это проделать, вы должны остановить чтение и прочитать вместо этого
книгу "Bat Book" автора O'Reilly.
Вместо колдования над этими правилами, мы положимся на
макро-процессор m4, чтобы собрать наш
конфигурационный файл из готовых частей, поставляемых вместе с sendmail.
Давайте рассмотрим первые строки файла sendmail.mc:
include(/usr/lib/sendmail.cf/m4/cf.m4)
VERSIONID(`sendmail.mc - roessler@guug.de')
OSTYPE(debian)
define(`ALIAS_FILE',`/etc/mail/aliases') |
В начале подключается (include) файл cf.m4
Этот m4-макро файл содержит большое количство макро-определений для
остальной части файла. Удостоверьтесь, что путь, который вы укажете, верный
- тот который написан у нас, типичен для Debian GNU/Linux. Макрос OSTYPE используется для задания некоторых важных
значений для конфигурации. Если у вас не Debian, вы должны заменить слово
"debian" словом "linux". ALIAS_FILE
указываеи sendmail-у, где искать список псевдонимов (alias list).
Следующие строки указывают sendmail-у на использование функции
genericstable , а также на файлы
конфигурации, необходимые для этого:
FEATURE(masquerade_envelope) FEATURE(genericstable, `hash
-o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain') |
Функция
masquerade_envelope приводит к
тому, что sendmail производит преобразование адреса отправителя в
заголовке, взяв его с
конверта (envelope). Это тот
адрес, куда внешние почтовые системы будут посылать сообщения об ошибках
при доставке. Файлы
generics* описываются
ниже.
Теперь, мы должны определить так называемый "смарт-хост" (smart host), то
есть, машину, которая будет обрабатывать почту, исходящую с вашей системы.
Заметьте, что это не обязательно POP или IMAP сервер вашего провайдера.
Если возникнут затруднения, свяжитесь с горячей линией. Строка в основном
файле конфигурации:
define(`SMART_HOST',`mail-out.your.provider') |
Здесь замените
mail-out.your.provider полным именем
хоста вашего интернет-провайдера.
Последние две строчки включают определения "mailer"-ов, которые нужны
sendmail-у для определения действий, необходимых для работы с различными
видами почты:
MAILER(local)
MAILER(smtp) |
Чтобы создать файл sendmail.cf из
sendmail.mc, запустите следующее (в качестве
root-а):
# m4 sendmail.mc > _sendmail.cf
# mv -f _sendmail.cf sendmail.cf |
Заметьте, что здесь применена техника вывода результата во временный файл,
с последующим переносом этого файла на нужное место. Это помогает
предотвратить чтение частично готового файла конфигурации sendmail-ом.
Преобразование адресов
Сначала, необходимо сообщить sendmail-у, что адреса являются локальными (и
поэтому должны быть подвергнуты преобразованию). Это очень просто: просто
поместите полное (fully qualified) имя вашего хоста в файл
/etc/mail/genericsdomain. Чтобы
узнать это имя, наберите:
Теперь перейдем к правилам преобразования адресов, т.е. к файлу:
/etc/mail/genericstable. Этот
файл состоит из двух колонок, разделенных пробелами. Первая колонка
содержит локальный адрес, вторая колонка содержит почтовый адрес, который
должен быть использован вместо локального. Файл выглядит примерно так:
harry harryx@your.isp
maude maudey@her.isp
root fredx@your.isp
news fredx@your.isp |
Заметьте, что должна быт строка для каждого пользователя
на локальной машине, чтобы автоматически созданная почта на локальной
машине, выходя из системы, содержала правильную информацию в заголовке.
Из соображений быстродействия, sendmail не использует этот текст напрямую,
а опирается на "хешированную" (hashed) версию. Чтобы создать ее, наберите:
# makemap -r hash genericstable.db < genericstable |
Заметьте, что правила преобразования из файла
genericstable не будут
воздействовать на локальную почту, или на почту, получаемую извне - эти
правила работают только тогда, когда письмо покидает вашу локальную систему,
направляясь к смарт-хосту провайдера.
Алиасы (aliases)
Файл алиасов содержит локальные имена, которые верны только для внутренней
почты. Это применимо для администраторов, например root, который получает автоматически сгенерированные
сообщения от вашей системы.
Наиболее удачным началом файла
/etc/mail/aliases может быть
примерно следующее:
root: fred
news: root
postmaster: root
mail: root
www: root
nobody: /dev/null
MAILER-DAEMON: nobody |
В соответствии с этим, локальная почта для пользователей root, news, postmaster,
mail и www
передается пользователю fred, а сообщения для nobody и MAILER-DAEMON
отправляются в /dev/null.
Как и в случае с genericstable, файл aliases может содержать
множество строк. Поэтому будет
неэффективно sendmail-у использовать текстовый файл, как описано выше. Для
файла aliases используется тот же механизм,
что и для genericstable - генерируется
хешированная база данных. Вместо того, чтобы напрямую запускать makemap, вы можете набрать команду newaliases. Она автоматически позаботится обо всем, что
нужно сделать.