Руководство FreeBSD
Пред. | Глава 22. Электронная почта | След.

# 22.7. SMTP через UUCP

Настройка поставляемого с FreeBSD sendmail предназначена для сайтов, подключенных к интернет непосредственно. Сайты, осуществляющие обмен почтой через UUCP, должны использовать другой файл настройки sendmail.

Редактирование `/etc/mail/sendmail.cf` вручную это сложная задача. sendmail версии 8 генерирует файлы настройки через препроцессор m4(1), реально настройка выполняется на более высоком уровне абстракции. Файлы настройки m4(1) можно найти в `/usr/src/usr.sbin/sendmail/cf`.

Если вы не установили в систему все исходные тексты, пакет настройки sendmail можно найти в отдельном архиве исходных текстов. Если CDROM с исходными текстами FreeBSD смонтирован, выполните:

    # cd /cdrom/src
    # cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail

Эта установка займет всего несколько сотен килобайт. Файл `README` в каталоге `cf` содержит введение в основы настройки m4(1).

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

Во-первых, создайте файл `.mc`. В каталоге `/usr/src/usr.sbin/sendmail/cf/cf` находятся несколько примеров. Возьмем для примера имя файла `foo.mc`. Все, что потребуется для преобразования его в `sendmail.cf`, это:

    # cd /usr/src/usr.sbin/sendmail/cf/cf
    # make foo.cf
    # cp foo.cf /etc/mail/sendmail.cf

Типичный `.mc` файл может выглядеть примерно так:

    VERSIONID(`Your version number') OSTYPE(bsd4.4)

    FEATURE(accept_unresolvable_domains)
    FEATURE(nocanonify)
    FEATURE(mailertable, `hash -o /etc/mail/mailertable')

    define(`UUCP_RELAY', your.uucp.relay)
    define(`UUCP_MAX_SIZE', 200000)
    define(`confDONT_PROBE_INTERFACES')

    MAILER(local)
    MAILER(smtp)
    MAILER(uucp)

    Cw    your.alias.host.name
    Cw    youruucpnodename.UUCP

Строки, содержащие accept_unresolvable_domains, nocanonify, и confDONT_PROBE_INTERFACES, предотвратят использование DNS для доставки почты. Пункт UUCP_RELAY необходим для поддержки доставки по UUCP. Просто поместите сюда имя хоста в интернет, способного работать с .UUCP адресами псевдо-доменов; скорее всего, вы введете сюда основной сервер пересылки почты провайдера.

Как только вы сделаете это, потребуется файл `/etc/mail/mailertable`. Если вы используете для всей почты только одно внешнее соединение, подойдет следующий файл:

    #
    # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
    .                             uucp-dom:your.uucp.relay

Более сложный пример может выглядеть так:

    #
    # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
    #
    horus.interface-business.de   uucp-dom:horus
    .interface-business.de        uucp-dom:if-bus
    interface-business.de         uucp-dom:if-bus
    .heep.sax.de                  smtp8:%1
    horus.UUCP                    uucp-dom:horus
    if-bus.UUCP                   uucp-dom:if-bus
    .                             uucp-dom:

В первых трех строках обрабатываются специальные случаи, когда почта для домена должна отправляться не на маршрут по умолчанию, а на ближайшее соединение UUCP для сокращения пути доставки. Следующая строка обрабатывает почту, которая может быть доставлена по SMTP для локального Ethernet домена. Наконец, определены маршруты UUCP в нотации псевдо-доменов .UUCP, для включения перезаписи правил по умолчанию правилом uucp-neighbor !recipient. Последняя строка всегда содержит одиночную точку, означающую ''все остальное'', с отправкой через UUCP, являющимся универсальным почтовым шлюзом. Все имена узлов после ключевого слова uucp-dom: должны представлять существующие маршруты UUCP, проверить их можно с помощью команды uuname.

Напоминаем, что этот файл должен быть преобразован в базу данных DBM перед использованием. Командную строку для этой задачи лучше всего поместить в качестве комментария в верхней части файла `mailertable`. Всегда выполняйте эту команду после правки файла `mailertable`.

И наконец: если вы не уверены, что некоторые отдельные почтовые маршруты будут работать, запомните параметр sendmail -bt. С этим параметром sendmail запускается в режиме тестирования адреса; просто введите 3,0 и адрес, который вы хотите протестировать. В последней строке появится сообщение об используемом внутреннем почтовом агенте, хосте назначения, с которым вызывается этот агент, и (возможно транслированный) адрес. Выход из этого режима происходит при нажатии Ctrl+D.

    % sendmail -bt
    ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
    Enter <ruleset> <address>
    > 3,0 foo@example.com
    canonify           input: foo @ example . com
    ...
    parse            returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
    > ^D

Пред. | Начало | След.
Расширенное руководство | Уровень выше | Настройка почты только для отправки

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.