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 (
В результате тестирования сообщение успешно получено удаленным узлом сети Интернет. Вывод 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.