Тестирование правил подстановки

Содержание материала

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

В начальном тесте адрес From: поступил на вход sendmail в виде craig и был преобразован в Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.. Очевидно, произошла подстановка.

Теперь мы протестируем собственно правила подстановки и выясним, повлияли ли на процесс подстановки изменения, внесенные в макроопределение М. Прежде всего, необходимо выяснить, какие правила использовались для переписывания адреса. Чтобы получить дополнительную информацию, выполним sendmail с ключом -bt.

В результате выполнения команды выводится приглашение ввода - символ «больше» (>). В ответ на приглашение наберите одну из команд тестирования, описанных в табл. 10.6.

Таблица 10.6. Команды тестирования sendmail

Команда Назначение
ruleset[, ruleset...] address Обрабатывает адрес address указанными наборами правил
.Dmvalue Присваивает значение value макропеременной т
.C cvalue Добавляет значение value в класс с
=Sruleset Выводит правила из набора ruleset
=M Выводит определения почтовых программ
-dvalue Устанавливает значение value для флага отладки
$m Выводит значение макроопределения ш

 

Команда Назначение
$=с Выводит содержимое класса с
/тх host Отображает МХ-записи для узла host
/parse address Возвращает тройку значений почтовая программа/узел/ пользователь для указанного адреса address
/try mailer address Обрабатывает адрес address для почтовой программы mailer
/tryflags flags Устанавливает адрес для обработки /parse или /try в Н (Header), Е (Envelope), S (Sender) или R (Recipient)
/canon hostname Выполняет приведение имени узла hostname к каноническому виду
/map map name key Выводит значение для ключа key из базы данных mapname
/quit Завершает работу в режиме тестирования адресов

Простейший тест - имя набора правил и следующий за ним адрес электронной почты. Адрес представляет тестовые данные, а имя - набор правил, который следует протестировать. Адрес выбрать просто - тот, что был неправильно переписан. Но как определить, какой набор правил использовать?


Используйте рис. 10.4 для выбора наборов правил. Набор правил canonify применяется ко всем адресам. За ним следуют наборы для различных типов адресов (адреса доставки, адреса отправителя либо адреса получателя). Более того, наборы для адресов отправителя и получателя изменяются в зависимости от почтовой программы, выполняющей доставку почты. Окончательно все адреса обрабатываются набором final.

В определении наборов правил, используемых для обработки адреса, участвуют две переменные: тип адреса и почтовая программа, через которую передается письмо. Адреса бывают трех типов: адреса доставки, адреса получателей и адреса отправителей. Тип адреса известен, поскольку мы сами выбираем адрес для тестирования. В тестовых письмах нас интересует адрес отправителя. Какая используется почтовая программа - определяет адрес доставки. Один из способов определить, какая почтовая программа выполняет доставку тестового письма, - выполнить sendmail с ключом -bv и адресом доставки в качестве аргумента:

# sendmail -bv craighfiora.com
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.... deliverable: mailer esmtp, hostora.com.,
user Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Определив почтовую программу, мы можем использовать sendmail с ключом -bt для обработки адреса отправителя, From:. Существует два типа адреса отправителя: адрес отправителя на «конверте» и адрес отправителя в заголовке сообщения. Адрес заголовка сообщения фигурирует в строке From:, передаваемой с сообщением в сеансе передачи SMTP DATA. Этот адрес вы можете видеть в заголовках почтовых сообщений при просмотре в программе чтения почты. Адрес «конверта» используется во взаимодействиях уровня протокола SMTP, sendmail позволяет нам наблюдать обработку адресов и того и другого типа:


# sendmail -bt -Ctest.cf
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>    /tryflags HS
>    /try esatp craig
Trying header sender address craig for mailer esmtp
canonify    input:    craig            
Canonify2    input:    craig            
Canonify2    returns:    craig            
canonify    returns:    craig            
1    input:    craig            
1    returns:    craig            
HdrFromSMTP    input:    craig            
PseudoToReal    input:    craig            
PseudoToReal    returns:    craig            
MasqSMTP    input:    craig            
MasqSMTP    returns:    craig    <    e *LOCAL* >    
MasqHdr    input:    craig    <    e -LOCAL* >    
MasqHdr    returns:    craig    <    @ wrotethebook    . com
HdrFromSMTP    returns:    craig    <    @ wrotethebook    . com
final    input:    craig    <    @ wrotethebook    . com
final    returns:    craig    §    wrotethebook .    com
Rcode = 0, addr = Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
>    /tryflags ES
>    /try esmtp craig
Trying envelope sender address craig for mailer esmtp
canonify    input:    craig                
Canonify2    input:    craig                
Canonify2    returns:    craig                
canonify    returns:    craig                
1    input:    craig                
1    returns:    craig                
EnvFromSMTP    input:    craig                
PseudoToReal    input:    craig                
PseudoToReal    returns:    craig                
MasqSMTP    input:    craig                
MasqSMTP    returns:    craig    <    e -LOCAL*    >    
MasqEnv    input:    craig    <    9 -LOCAL*    >    
MasqEnv    returns:    craig    <    @ rodent    . wrotethebook    . com
EnvFromSMTP    returns:    craig    <    @ rodent    . wrotethebook    . com
final    input:    craig    <    @ rodent    . wrotethebook    . com
final    returns:    craig    9    rodent .    wrotethebook .    com
Rcode = 0, addr = craigGrodent.wrotethebook.com
> /quit

Команда /tryflags определяет тип адреса для обработки командой /try или /parse. Для команды /tryflags доступно четыре флага: S (sender) - отправитель, R (recipient) - получатель, Н (header) - заголовок и Е (envelope) - конверт. Сочетанием двух из этих флагов в первой команде /tryflags мы обрабатываем адрес отправителя из заголовка (HS).


Команда /try предписывает sendmail обработать адрес для передачи через конкретную почтовую программу. В данном примере адрес электронной почты craig обрабатывается для почтовой программы esmtp. Сначала мы обрабатываем его как адрес отправителя из заголовка, а затем как адрес отправителя с конверта. По этому тесту можно определить, что значение из макроопределения М используется для подстановки адреса отправителя в заголовке сообщения, но не адреса отправителя на конверте.

В результате проведенных тестов мы видим, что значение макроопределения М заменяет имя узла в адресе отправителя из заголовка сообщения - что нам и требовалось. Имя узла в адресе отправителя на конверте не изменяется. Обычно это приемлемо. Однако мы хотим создать в точности такие настройки, как в примере ш4. Команда FEATURE(masquerade_envelope) из примера т4 приводит к изменению адреса отправителя на конверте. Следовательно, в наших настройках также должна происходить подстановка.

Разница в обработке адресов сообщения и конверта состоит в том, что первые обрабатываются набором правил HdrFromSMTP, тогда как вторые - набором правил EnvFromSMTP. Тесты показывают, что оба набора правил используют пересекающиеся наборы правил. Есть одно расхождение: набор правил HdrFromSMTP вызывает набор правил MasqHdr, а набор правил EnvFromSMTP вызывает набор MasqEnv. Тесты также показывают, что набор MasqHdr выполняет для адреса отправителя сообщения подстановку в соответствии с нашими пожеланиями, тогда как MasqEnv не выполняет такую подстановку для адреса отправителя с конверта. Ниже приводится код test.сf для наборов правил MasqEnv:

Очевидно, набор правил MasqEnv не делает то, что нам нужно, в отличие от набора MasqHdr. Быстрое изучение набора MasqEnv позволяет понять, что он не содержит ни единой ссылки на макроопределение М. Но при этом в самом его начале присутствует комментарий «do masquerading», благодаря которому можно догадаться, что здесь должно выполняться сокрытие для адреса. Решение нашей задачи - добавить к набору правил MasqEnv строку, вызывающую набор правил MasqHdr, который в действительности и производит необходимую обработку. Измененный набор правил показан ниже:

Отладка файла sendmail.cf - это скорее искусство, нежели наука. Решение о добавлении в набор правил MasqEnv строки вызова набора MasqHdr - немногим более чем догадка. И тестирование - единственный способ проверить ее. Мы повторно выполнили sendmail -bt -Ctest.cf, чтобы протестировать адреса craig, craig@rodent и craig@localhost при помощи команды /try esmtp. Все тесты завершились успешно - переписыванием различных исходных адресов в конечный адрес Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.. Затем мы повторили тест отправки почты командой sendmail -v -t -Ctest. cf. Только когда все тесты отработали успешно, мы окончательно уверились в своей догадке и можем переходить к следующей задаче - подстановке имени и фамилии пользователя вместо регистрационного имени пользователя в адресе электронной почты.


Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.
yandex-disk
Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.

>> Ubuntu 12.04 + Nginx Скачать сервер
>> Fedora 15 Скачать сервер
>> Простой Debian 6.0.6 Скачать сервер
>> CentOS 6.0 и
+ (5.6) другой
Скачать сервер
>> OpenSUSE 11.4
MAX
Скачать сервер

Вход на сайт

ВНИМАНИЕ!

Регистрация на сайте только по согласованию с администратором ресурса. Обращаться через форму обратной связи.