Россия, Казань, Казанский Национальный Исследовательский Технический Университет |
Программа sendmail
Определение заголовка с помощью Н-строк
Строки конфигурации, которые начинаются с " Н ", определяют формат строк заголовка, которые помещаются программой sendmail в сообщение. В строках заголовка употребляются макросы и флаги макросов, которые определяют соответствующий синтаксис заголовка почтового сообщения, в зависимости от протокола, используемого для доставки сообщения. Узлы SMTP и хосты UUCP принимают сообщения с различными заголовками. Формат Н -строки следующий:
H[?mflags?]hname:htemplate,
где mflags — флаги макроса, которые должны быть указаны вместе с самим макросом, hname — имя строки заголовка, а htemplate — формат строки заголовка с макросом в ней. Перед помещением в исходящее сообщение макросы преобразуются в свои нормальные имена.
Для передачи сообщения определенному набору правил, если имеется специальный заголовок, используется еще один формат Н -строки:
Hheader:$>Ruleset,
где header — поле заголовка, а Ruleset — номер набора правил (см. раздел "Наборы правил" далее в этой лекции). Пример применения Н-строк представлен в листинге 10.4.
1 H?P?Return-Path: <$g> 2 HReceived: $?sfrom $s $.$?_($?sS|from $.$_) 3 $.by $j ($v/$Z)$?r with $r$, id $i$?u 4 for $u; $|; 5 $.$b 6 H?D?Resent-Date: $a 7 H?D?Date: $a 8 H?F?Resen-From: $?x$x <$g>$|$g$. 9 H?F?From: $?x$x <Sg>$|$g$. 10 H?x?Full-Name: $x 11 # HPosted-Date: $a 12 # H?l?Received-Date: $b 13 H?M?Resernt-Message-Id: <$t.$i@$j> 14 H?M?Message-Id: <$t.$i@$j>Листинг 10.4. Пример применения Н- строк в sendmail
В листинге 10.4 строка 1 представляет собой простую Н -строку с условием, которое определяется макросом. Если в ней задан макрос P, который описан ранее в файле sendmail.cf как одиночная точка ( .), то sendmail добавляет поле заголовка Return-Path с макросом $g в качестве данных для этого поля. Как указано в табл. 10.4 макрос $g отображает относительный адрес отправителя. А относительным этот адрес называется потому, что он ставится в соответствие с определенным получателем. Таким образом, Н -строки указывают sendmail добавлять полное имя пользователя и имя хоста в поле заголовка Return-Path, если задан флаг макроса Р.
Конфигурирование почтовой программы с помощью М-строк
Строки конфигурации, которые начинаются с буквы " М ", определяют программу, используемую sendmail для пересылки почты. Различные почтовые программы должны быть описаны для sendmail с помощью М -строк. Тогда ей будет понятно, как работать с ними. Формат М -строки следующий:
Mprog, [field=value]... ,
где prog — имя почтовой программы, а все пары field=value описывают атрибуты, необходимые для работы sendmail с этой программой. В именах полей могут использоваться полные названия полей, хотя в sendmail используются лишь первые символы из названия поля. В табл. 10.7 приведены М -строки полей, которые могут применяться в sendmail.
Поле Flags используется для определения порядка применения почтовой программы программой sendmail. Флаги определяют действия, которые sendmail может предпринимать при вызове почтовой программы. В поле Flags может использоваться сразу несколько флагов. Тогда все они задаются в одной строке без пробелов. В табл. 10.8 дается описание некоторых флагов.
В листинге 10.5 в качестве примера приведены некоторые М -строки из файла sendmail.cf.
1 ### SMTP Mailer specification ### 2 Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21,E=\r\n L=990, T=DNS/RFC822/SMTP, 3 Mesmtp, P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, 4 Msmtp8, P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990, T=DNS/RFC822/SMTP, 5 Mrelay, P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040, T=DNS/RFC822/SMTP, 6 ### UUCP Mailer specification ### 7 Muucp, P=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=100000, 8 Muucp-old, P=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=100000, 9 Msuucp, P=/usr/bin/uux, F=mDFMhuUd, S=12, R=22/42, M=100000, 10 Muucp-new, P=/usr/bin/uux, F=mDFMhuUd, S=12, R=22/42, M=100000, 11 Muucp-dom, P=/usr/bin/uux, F=mDFMhud, S=52/31, R=21, M=100000, 12 Muucp-uudom, P=/usr/bin/uux, F=mDFMhud, S=72/31, R=21, M=100000, 13 ### PROCMAIL Mailer specification ### 14 Mprocmail, P=/usr/local/bin/procmail, F=DFMSPhnu9, S=11/31, R=21/31, T=DNS/RFC822/X-Unix, 15 ### Local and Program Mailer specification ### 16 Hlocal, P=/usr/local/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30, R=20/40, 17 Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,Листинг 10.5. Пример применения конфигурационных М- строк
В строках 2–5 листинга 10.5 описываются почтовые программы для работы по протоколу SMTP, а в строках 7–12 почтовые программы для работы с UUCP. В строке 14 описывается почтовая программа procmail, а в строках 16 и 17 определяются почтовые программы, которые используются локальной программой для обработки почты. Для того чтобы sendmail смогла производить запуск соответствующих программ, указываются полные пути к выполняемым файлам почтовых программ. Работая с SMTP-соединениями, программа sendmail может использовать для пересылки почты свои внутренние IP-соединения.
В строке 11 описывается почтовая программа, которая часто применяется для подключения офисов компаний к сети Internet. Программа uucp-dom специально разработана для передачи почтовых сообщений с использованием протокола UUCP, однако в ней имеется поддержка стандартных заголовков сообщения формата RFC822. Узнать, каким образом sendmail пересылает сообщения этой почтовой программе, можно с помощью анализа М -строк:
- Путь к выполняемому файлу ( P ) /usr/sbin/uux;
- Флаги, задаваемые выполняемому
файлу ( F ):
- m — sendmail за одну транзакцию может посылать сообщения нескольким пользователям;
- D — sendmail пересылает поле Date: формата RFC 822;
- F — sendmail пересылает поле From: формата RFC 822;
- M — sendmail пересылает поле Message ID: формата RFC 822;
- h — sendmail сохраняет прописные и заглавные буквы в именах хостов;
- u — sendmail сохраняет прописные буквы в именах пользователей;
- d — sendmail не включает квадратные скобки при выводе маршрутной информации;
- Наборы правил для отправителя — 52 и 31;
- Набор правил для получателя — 21;
- Максимальный допустимый размер сообщения для пересылки 100000 байт.
Интереснее выяснить, какой из флагов не представлен в строке 11. Обратите внимание, что в строках 7–10 задан флаг U. Этот флаг sendmail означает, что сообщения должны пересылаться с применением UUCP-стиля для поля From:. Так как протокол в uucp-dom не изменяет формат сообщения, этот флаг должен присутствовать.