20.3 Поиск и устранение неисправностей во FreeBSD


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

20.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.

20.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 <user@domain.net>... 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'' в теле письма, по адресу <mail-server@rtfm.mit.edu>.

20.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''.

Обновлено: 12.03.2015