11.3. Поиск и устранение неисправностей

Вот несколько часто задаваемых вопросов и ответов на них, взятых, в основном, из FAQ.

11.3.1. Почему я должен использовать FQDN для хостов вне моей подсети?
11.3.2. Sendmail выдает ошибку ``mail loops back to myself''
11.3.3. Как работать с электронной почтой при коммутируемом соединении с Интернет?

11.3.1. Почему я должен использовать FQDN для хостов вне моей подсети?

Вы, видимо, обнаружили, что хост, к которому Вы обратились, оказался на самом деле в другом домене; например, если Вы находитесь в домене foo.bar.edu и хотите обратиться к хосту mumble в домене bar.edu, то должны указать его полное доменное имя, mumble.bar.edu, а не просто mumble.

Традиционно, ресолверы (распознаватели) BSD BIND позволяли это делать. Однако, текущая версия BIND, поставляемая с FreeBSD, больше не добавляет имена доменов, отличающихся от того, в котором Вы находитесь, для не полностью указанных имен хостов. То есть, имя mumble будет опознан как mumble.foo.bar.edu или будет искаться в корневом домене.

Это отличается от предыдущего поведения, при котором поиск продолжался в доменах mumble.bar.edu и mumble.edu. Если Вам интересны причины объявления такого поведения плохой практикой и даже ошибкой в безопасности, обратитесь к RFC 1535.

Хорошим решением будет поместить строку

    search foo.bar.edu bar.edu
вместо ранее используемой:
    domain foo.bar.edu
в файл /etc/resolv.conf. Однако удостоверьтесь, что порядок поиска не нарушает "границ полномочий между локальным и внешним администрирования", в терминологии RFC 1535.

11.3.2. Sendmail выдает ошибку ``mail loops back to myself''

В FAQ по sendmail дан следующий ответ:

    * Выдаются сообщения "Local configuration error", например:

    553 relay.domain.net config error: mail loops back to myself
    554 <[email protected]>... Local configuration error

    Как можно решить эту проблему?

    Согласно записям MX, почта для домена domain.net перенаправляется на хост
    relay.domain.net, однако последний не распознается как
    domain.net.  Добавьте domain.net в файл
    /etc/sendmail.cw (если Вы используете
    FETURE(use_cw_file)) или добавьте "Cw domain.net" в файл
    /etc/sendmail.cf.

Текущая версия этого FAQ больше не поставляется вместе с sendmail. Однако, этот документ регулярно помещается в конференциях comp.mail.sendmail, comp.mail.misc, comp.mail.smail, comp.answers и news.answers. Вы можете получить копию по электронной почте, послав запрос, содержащий команду "send usenet/news.answers/mail/sendmail-faq" в теле письма, по адресу .

11.3.3. Как работать с электронной почтой при коммутируемом соединении с Интернет?

Вы можете подключить к Интернет FreeBSD машину в локальной сети, которая будет "промежуточным звеном" в доставке Вашей почты. Для этого существует по крайней мере два способа. Или, в качестве альтернативы, Вы можете воспользоваться UUCP.

Прежде всего, Вам необходимо убедиться, что провайдер обеспечивает дополнительный MX-сервис для Вашего домена, например:

    bigco.com.            MX        10      bigco.com.
                          MX        20      smalliap.com.

Только один хост должен быть указан в качестве последнего получателя (добавьте запись Cw bigco.com в файл /etc/sendmail.cf на машине bigco.com).

Когда программа sendmail (со стороны отправителя) "захочет" доставить почту, она попытается установить Интернет-соединение через модем. Скорее всего, ей это не удастся (в произвольный момент времени Вы, вероятнее всего, не будете подключены к Интернет), и она автоматически перейдет ко второму серверу, т.е. Вашему провайдеру Интернет, который, в свою очередь, будет пытаться установить соединение в Вашим компьютером каждые (sendmail_flags = -bd -q15m в файле /etc/rc.conf) 15 минут, чтобы доставить почту.

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

    #!/bin/sh
    # Put me in /usr/local/bin/pppbigco
    ( sleep 60 ; /usr/sbin/sendmail -q ) &
    /usr/sbin/ppp -direct pppbigco

Если же Вы хотите написать отдельный пользовательский скрипт, лучше воспользоваться командой sendmail -qRbigco.com вместо вышеприведенного сценария, так как в этом случае вся почта в очереди для хоста bigco.com будет обработана немедленно.

Рассмотрим эту ситуацию подробнее.

Вот пример сообщения от Список рассылки FreeBSD посвященный ISP .

    > мы предоставляем вторичный MX для наших клиентов.  Вы соединяетесь
    > с нашим сервером несколько раз в день чтобы забрать почту для Вашего
    > первичного (главного) MX (мы не соединяемся с ним каждый раз, когда
    > приходит новая почта для его доменов).  Далее, sendmail отправляет
    > почту, находящуюся в очереди каждые 30 минут, и клиент должен быть
    > подключен к Интернет в течении 30 минут, чтобы удостовериться, что
    > вся почта "ушла" на основной MX-сервер.
    >
    > Может быть, есть какая-либо команда, которая заставит sendmail
    > немедленно отправить все почту, находящуюся в очереди?  Естественно,
    > пользователи не обладают какими-либо повышенными привилегиями на
    > нашем сервере.

    В секции "privacy flags" файла
    sendmail.cf, определяется опция
    Opgoaway,restrictqrun

    Уберите restrictqrun, чтобы разрешить рядовым
    пользователям инициировать работу с очередью.  Вам также может понадобиться
    изменить порядок MX-серверов.  Так, если Вы являетесь первым (основным) MX-сервером, укажите:

    # If we are the best MX for a host, try directly instead of generating
    # local config error.
    OwTrue

    Таким образом, удаленный хост будет доставлять почту непосредственно к Вам,
    не пытаясь установить соединение с клиентом. Затем уже Вы, в свою очередь,
    отсылаете ее клиенту.  Удостоверьтесь, что в DNS есть записи про
    "customer.com" и "hostname.customer.com".  Просто
    добавьте запись A в DNS для "customer.com".