Библиотека сайта rus-linux.net
- Содержание
- 1. Авторские права
- 2. Введение
- 3. Расположение файлов
- 4. Настройка sendmail
- 5. Дополнительная информация
1. Авторские права
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но
при этом сохранить авторские права и быть уведомленными о всех планах
распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь
к координатору проекта Linux HOWTO по электронной почте:
<linux-howto@metalab.unc.edu>
, или к координатору русского
перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу
<linux-howto@asplinux.ru>
2. Введение
Мы предполагаем, что у вас один из наиболее распространенных в университетах и он-лайн сервисах доступ к интернету: вы дозваниваетесь по телефону к вашему провайдеру, используя PPP на последовательном порту через модем. Ваша входящая почта складывается на сервере POP или IMAP провайдера, а отправляемая почта отсылается через SMTP. У вас нет собственного домена, поэтому используется один общий электронный адрес.
Мы также предполагаем, что у вас установлена достаточно новая версия программы sendmail, написанной Eric Allman (версия 8.8.8 является текущей, на момент написания документа, и должна работать хорошо).
Этот документ частично ссылается на специфические свойства системы Debian GNU/Linux; пользователи других дистрибутивов должны быть осторожны.
Убедитесь, что у вас под рукой находится следующая информация:
Адрес почтового сервера вашего провайдера
Ваш почтовый адрес в Internet
Файл настройки, который мы планируем сделать, ставит перед собой две главные цели:
Должна работать пересылка почты между двумя любыми локальными пользователями.
Внешний мир должен видеть почтовые адреса локальных пользователей, заданные провайдером, а не локальной системой.
Чтобы этого достичь, воспользуемся функцией
genericstable
.
3. Расположение файлов
Мы поместим все файлы конфигурации sendmail-а в отдельный подкаталог
каталога /etc
: /etc/mail
. Обычно, sendmail использует файлы,
находящиеся в /etc
. Для того, чтобы
избежать возможных проблем, создадим файл символьной связи (symbolic
link)/etc/sendmail.cf
, указывающий на
/etc/mail/sendmail.cf
.
В директории /etc/mail
будут
находиться следующие файлы:
aliases
- содержит дополнительные локальные адресаgenericsdomain
- содержит некоторую информацию о конфигурации вашего локального хоста (host)genericstable
- содержит собственно правила преобразования адресаsendmail.cf
- файл конфигурации sendmail-аsendmail.mc
- исходный текстsendmail.cf
.
Некоторые из этих файлов будут сопровождаться файлами с расширением
.db
. Они содержат хешированные (hashed) базы
данных, напрямую используемые sendmail-ом.
Мы также исходим из того, что остальная cf
часть исходных текстов sendmail-а находится в каталоге /usr/lib/sendmail.cf
. Но это в случае дистрибутива
Debian GNU/Linux. Другие поставки могут поместить эту информацию в другие
каталоги. Подробнее об этом читайте в документации к вашему дистрибутиву.
4. Настройка sendmail
4.1. Основной файл конфигурации
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).
genericstable
, а также на файлы
конфигурации, необходимые для этого:
FEATURE(masquerade_envelope) FEATURE(genericstable, `hash -o /etc/mail/genericstable') GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')Функция
masquerade_envelope
приводит к
тому, что sendmail производит преобразование адреса отправителя в
заголовке, взяв его с конверта (envelope). Это тот
адрес, куда внешние почтовые системы будут посылать сообщения об ошибках
при доставке. Файлы generics*
описываются
ниже.define(`SMART_HOST',`mail-out.your.provider')Здесь замените mail-out.your.provider полным именем хоста вашего интернет-провайдера.
MAILER(local) MAILER(smtp)
sendmail.cf
из
sendmail.mc
, запустите следующее (в качестве
root-а):
# m4 sendmail.mc > _sendmail.cf # mv -f _sendmail.cf sendmail.cfЗаметьте, что здесь применена техника вывода результата во временный файл, с последующим переносом этого файла на нужное место. Это помогает предотвратить чтение частично готового файла конфигурации sendmail-ом.
4.2. Преобразование адресов
/etc/mail/genericsdomain
. Чтобы
узнать это имя, наберите:
$ hostname -f
Теперь перейдем к правилам преобразования адресов, т.е. к файлу:
/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
не будут
воздействовать на локальную почту, или на почту, получаемую извне - эти
правила работают только тогда, когда письмо покидает вашу локальную систему,
направляясь к смарт-хосту провайдера.
4.3. Алиасы (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
. Она автоматически позаботится обо всем, что
нужно сделать.
5. Дополнительная информация
В поставку исходных текстов sendmail-а входит документация.
Прочитайте ее, особенно файл
cf/README
.
Если вас заинтересовали опции конфигурации sendmail-а, прочтите книгу "Bat Book" автора O'Reilly: Bryan Costales, Eric Allman, и Neil Rickert: "sendmail". O'Reilly, 1993.