sendmail предоставляет мощные инструменты для тестирования и отладки настроек. Эти инструменты доступны из командной строки sendmail посредством некоторых из многочисленных ключей.

Все существующие ключи командной строки sendmail описаны в приложении Е, а в табл. 10.5 приведены ключи, относящиеся к тестированию и отладке.

Таблица 10.5. Ключи sendmail для тестирования и отладки

Ключ Функциональность
-t Передача по всем адресам из полей То:, Сс: и Всс:
-bt Работа в режиме тестирования
-bv Проверка адресов без сборки и доставки почты
-bp Вывод почтовой очереди
-Cfile Использование указанного файла file в качестве файла настройки
-dlevel Указание уровня отладки
-0option=value Установка параметра option в значение value
-e Указание способа возврата ошибок
-v Работа в режиме подробной диагностики

Некоторые ключи командной строки используются для проверки механизмов обработки адресов и подтверждения работоспособности новых настроек. Когда вы будете уверены в работоспособности настроек, отправьте себе почту на различные адреса; необходимость в тестировании - отличная причина завести несколько почтовых адресов в различных бесплатных почтовых службах. Используйте ключ -С для работы с определенным файлом настройки и ключ -v для подробного диагностирования процесса доставки почты, -v полностью выводит обмен SMTP между двумя узлами.

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

rodents sendnail -Ctest.cf -t -v
To: craigheora.com
From: craig
Subject: Sendmail Test
Ignore this test.
"0
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.... Connecting to ora.com. via esmtp...
220-ruby.ora.com ESMTP Sendmail 8.9.3+Sun/8.9.3; Wed, 23 May 2001
»> EHLO rodent.wrotethebook.com
250-ruby.ora.com Hello Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. [172.16.12.2],
pleased to meet you
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-0NEX
250-ETRN
250-XUSR
250 HELP
>» MAIL From:<Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.> SIZE=64
250 <Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>... Sender ok
»> RCPT To:<Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
250 <Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>... Recipient ok
»> DATA
354 Enter mail, end with "." on a line by itself
»> .
250 SAA27399 Message accepted for delivery
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.... Sent (SAA27399 Message accepted for delivery)
Closing connection to ora.com.
»> QUIT
221 ruby.ora.com closing connection

Весь текст до символа "D (+) мы набрали самостоятельно. Весь текст после символа "D является выводом sendmail. На рис. 10.5 выделены некоторые важные элементы вывода и отмечены макроопределения sendmail, связанные с выделенными фрагментами.

В результате тестирования сообщение успешно получено удаленным узлом сети Интернет. Вывод sendmail показывает, что узел rodent отправил почту в домен ora.com посредством программы доставки smtp. Приветствие sendmail показывает, что удаленным узлом, принимающим данное SMTP-соединение, является ruby.ora.com. Следовательно, узел ruby должен являться почтовым сервером домена ora.com; то есть МХ-запись для ora.com указывает на ruby.ora.com.

Рис. 10.5. Подробная диагностика

Сообщения EHLO указывают, что узлы rodent и ruby используют протокол ESMTP (Extended Simple Mail Transfer Protocol).

Все замечательно работает! Мы могли бы завершить тестирование прямо сейчас и использовать текущие настройки. Но, как и большинство компью- терщиков, мы не можем остановиться в своем стремлении «сделать лучше». Адрес From:, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., очевидно, является допустимым, но его формат нас не совсем устраивает. Мы хотим, чтобы люди могли присылать сообщения на адрес вида firstname.lastname@domain, а не Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., то есть получить такие же настройки, как созданные при помощи нескольких строк кода т4 ранее в этой главе. Здесь мы создадим те же настройки, чтобы привести пример использования различных инструментов отладки, встроенных в sendmail. Однако если вы действительно намереваетесь существенно изменить настройки sendmail, воспользуйтесь макроопределениями т4.

Изменения, вносимые в sendmail.cf, обычно незначительны и располагаются ближе к началу файла, в разделе локальной информации (Local Information). Изучив внимательно этот раздел, мы получим сведения, необходимые для разрешения части нашей проблемы настройки.

Пусть мы и не знаем, что такое «masquerading» (сокрытие), комментарии классов Е и М, а также макроопределения М позволяют нам догадаться, что значение макроопределения М будет использовано при подстановке имени узла. В частности, комментарий «names that should be exposed as from this host, even if we masquerade» позволил мне предположить, что сокрытие (masquerading) скрывает имя узла. Исходя из этой догадки мы установили значение М следующим образом:

# who I masquerade as (null for no masquerading) (see also $=M) DMwrotethebook.com

Есть ли у нас уверенность, что установка значения макроопределения М скроет имя узла? Нет. Однако изменение значения в файле test.cf и еще один раунд тестирования ничем не повредит. Запуск программы для тестирования с тестовыми настройками никак не влияет на работу демона sendmail, запущенного командой sendmail -bd -q1h из загрузочного сценария. Только экземпляр sendmail, запущенный с аргументом -Ctest.cf, будет использовать в качестве файла настройки test.cf.