M - Определение Почтовой программы
В этой строке определяются почтовые программы и их интерфейсы. Формат такой: Mname, {field=value}*
Где name - имя почтовой программы (используется только внутренне), а пары "field=name" определяют атрибуты почтовой программы. Поля такие:
Path | Путь к почтовой программе |
Flags | Специальные флаги для этой почтовой программы |
Sender | Набор(ы) правил перезаписи для адресов отправителя |
Recipient | Набор(ы) правил перезаписи для адреса получателя |
Argv | Вектор аргументов, передаваемый в почтовую программу |
Eol | Строка end-of-line для этой почтовой программы |
Maxsize | Максимальный размер сообщения для этой почтовой программы |
Linelimit | Максимальная длина линии в теле сообщения |
Directory | Рабочий каталог для почтовой программы |
Userid | Идентификаторы пользователя и группы для запуска |
Nice | Инкремент nice(2) для почтовой программы |
Charset | Набор символов по умолчанию для 8-битных символов |
Type | Информация о типе MTS (используется для сообщений об ошибках) |
В имени поля проверяется только первый символ.
Нижеописанные флаги могут быть установлены в описании почтовой программы. Любые другие флаги могут свободно использоваться для условных заголовков в сообщениях для определенных почтовых программ. Флаги, отмеченные |,не интерпретируются бинарником sendmail; они обычно используются для корреляции с флагами в строке H. Флаги, отмеченные знаком |, применяются в почтовой программе для адреса отправителя, хотя обычно это делает принимающая почтовая программа.
a | Запустить протокол Extended SMTP (ESMTP) (определенный в RFC 1651, 1652, и 1653). Этот флаг по умолчанию включен, если приветственное сообщение SMTP содержит слово "ESMTP". |
A | Просмотреть пользовательскую часть адреса в базе данных псевдонимов. Обычно выставляется только для локальных почтовых программ. |
b | Проставить пустую строку в конце сообщения. Это предназначено для работы с некоторыми глупыми версиями /bin/mail, требующими пустую строку, но сами ее не проставляющие. |
c | Не включать в адрес комментарии. Это должно использоваться, только если вы должны работать с удаленной почтовой программой, не понимающей комментариев. Обрезает адрес из вида "Phrase <address>" или "address (Comment)" до просто "address". |
C | Если почта получена от почтовой программы с этим флагом, любые адреса в заголовке, не имеющие знака ("@") после перезаписи набором правил три будут иметь окончание "@domain" из адреса отправителя, взятого с конверта. Это позволяет почту с заголовками типа: From: usera@hosta> To: userb@hostb, userc
Автоматически переписывать как: From: usera@hosta To: userb@hostb, userc@hosta Однако это не всегда работает надежно. |
d | Не включать угловые скобки вокруг адресов с синтаксисом путевого адреса. Полезно для почтовых программ, передающих адреса в оболочку, которая может интерпретировать угловые скобки как перенаправление ввода/вывода. |
D | Эта почтовая программа хочет в заголовке строку "Date:". |
e | Эта почтовая программа слишком медленна, поэтому попробуй избежать нормального соединения; любое необходимое соединение произойдет во время обработки очереди. |
E | Избегать строки, начинающиеся с "From" в сообщении с знаком ">". |
f | Почтовая программа хочет флаг -f from, но только если это операция пересылки в сети (то есть, почтовая программа выдаст ошибку, если выполняющий пользователь не имеет специальных прав). |
F| | Эта почтовая программа хочет строку заголовка "From:". |
g | Обычно, sendmail посылает внутренне созданную почту (например, сообщения об ошибках) используя нулевой обратный адрес, как это требуется RFC 1123. Однако, некоторые почтовые программы не принимают нулевой обратный адрес. Если это необходимо, вы можете установить флаг g, чтобы sendmail не следовал стандартам; сообщения об ошибках будут посланы от MAILER-DAEMON (на самом деле, значение макроса $n). |
h | Символы верхнего регистра в именах хостов для этой почтовой программы должны быть сохранены. |
i | Произвести перезапись пользовательской базы данных на конвертный адрес отправителя. |
I | Эта почтовая программа будет говорить на SMTP с другим sendmail - поэтому он может использовать некоторые специальные особенности протокола. Эта опция не требуется (т.е.. если эта опция опущена, передача все равно будет работать нормально, хотя не настолько эффективно, как могла бы). |
j | Произвести перезапись пользовательской базы данных на получателей и отправителей. |
k | Обычно, когда sendmail соединяется с хостом посредством SMTP, он проверяет, не соединился ли он случайно сам с собой, что может случиться, если sendmail имеет неправильную конфигурацию, или если сетевой интерфейс закольцован. Этот флаг выключает проверку петли. Он должен использоваться только в очень необычных случаях. |
K | В настоящее время не работает. Зарезервирован для разбиения на куски. |
l | Эта почтовая программа локальна (т.е., будет осуществлена последняя доставка). |
L | Ограничивает длину строк, как определено в RFC821. Эта обесцененная опция должна быть заменена почтовым объявлением L=. По историческим причинам, флаг L также выставляет флаг 7. |
m | Эта почтовая программа может разослать нескольким пользователям на одном хосте в одну транзакцию. Когда в argv части определения почтовой программы встречается макрос $u, это поле будет повторено необходимое количество раз для всех подходящих пользователей. |
M| | Эта почтовая программа хочет строку заголовка "Message Id:". |
n | Не вставлять в начале сообщения "From" в стиле UNIX. |
o | Всегда работать как хозяин почтового ящика получателя. Обычно sendmail работает как отправитель для локально генерируемой почты или как "демон" (на самом деле, пользователь определяется в опции u) при получении сетевой почты. Большинству локальных почтовых программ требуется обычное поведение, которое не позволит установить конвертный адрес отправителя, пока почтовая программа работает как демон. Этот флаг игнорируется, если выставлен флаг S. |
p | Использовать обратный путь в стиле route-addr в команде SMTP "MAIL FROM:" вместо просто обратного адреса; хотя это и требуется в секции 3.1 RFC821, многие хосты не обрабатывают нормально обратные пути. Обратные пути осуждаются в RFC 1123. |
P| | Эта почтовая программа хочет строку "Return-Path:". |
q | Когда адрес, разрешаемый в этой почтовой программе, проверен (команда SMTP VRFY), генерировать ответы 250 вместо ответов 252. Это будет означать, что адрес локальный. |
r | То же, что и f, но посылает флаг -r. |
R | Открыть соединение SMTP на "безопасном" порту. "Безопасные" порты не являются таковыми, за исключением UNIX машин, поэтому не ясно, даст ли это что-нибудь. |
s | Обрезать символы квотирования (" и \) у адреса перед вызовом почтовой программы. |
S | Не переустанавливать userid перед вызовом почтовой программы. Это может быть использовано в безопасной среде, где sendmail запущен от root. Это может быть использовано для избежания поддельных адресов. Если также определено поле U=, это флаг заставит id пользователя всегда быть установленным на этого пользователя и группу (вместо того, чтобы оставить его как у root). |
u | Символы верхнего регистра в именах пользователей для этой почтовой программы должны быть сохранены. |
U | Эта почтовая программа хочет строки "From" в стиле UUCP с уродливым "remote from <host>" в конце. |
w | Пользователь должен иметь действительный бюджет на этой машине, т.е., getpwnam должен быть успешным. Если это не так, почта не будет доставлена. Это требуется для работы ".forward". |
x | Эта почтовая программа хочет строку заголовка "Full-Name:". |
X | Эта программа хочет использовать алгоритм скрытых точек, как определено в RFC821; смысл такой: любая строка, начинающаяся с точки, будет иметь предваряющую ее точку (для того, чтобы ее обрезали на другом конце). Это гарантирует, что строки в сообщении, содержащие точку не прекратят сообщение преждевременно. |
z | Запустить Протокол Локальной Доставки Почты (Local Mail Transfer Protocol, LMTP) между sendmail и локальной почтовой программой. Это вариант SMTP определенный в RFC 2033, специально разработанный для зоставки в локальный почтовый ящик. |
0 | Не просматривать записи MX для хостов, посылающих посредством SMTP. |
3 | Расширить список символов, преобразованных в =XX запись при преобразовании в Quoted-Printable для того, чтобы не потерять те, которые не преобразуются в чистом виде между ASCII и EBCDIC. Полезно, если в вашем узле имеется мэйнфрэймы IBM. |
5 | Если для этого адреса не найдено псевдонимов, пропустить адрес через набор правил 5 для другого возможного разрешения. Это предназначено для перенаправления почты в другое альтернативное место доставки. |
7 | Обрезать весь вывод до семи бит. Стоит по умолчанию, если установлен флаг L. Заметьте, что очистка этой опции не достаточна, чтобы через sendmail полностью проходили восьмибитные данные. Если опция 7 выставлена, а она в основном всегда выставлена, то восьмибитные данные на входе будут обрезаться. Нужно отметить, что эта опция затрагивает только сообщения, которые не имеют примененного MIME преобразования 8->7 бит. |
8 | Если выставлена, то эта почтовая программа принимает для отсылки восьмибитные данные; обычная попытка MIME преобразования 8->7 бит будет пропущена. |
9 | Если выставлена, производить ограниченные MIME преобразования 7->8 бит. Эти преобразования ограничены данными типа text/plain. |
: | Проверить адреса, не начинаются ли они с ":include:"; если это так, обратить их к почтовой программе "*include*". |
| | Проверить адреса, не начинаются ли они с "|"; "prog". |
/ | Проверить адреса, не начинаются ли они с "/"; если это так, обратить их к почтовой программе "*file*". |
@ | Просмотреть адреса в пользовательской базе данных. |
Конфигурационные файлы до уровня 6 предполагают опции "A", "w", "5", ":", "|", "/", и "@" в почтовой программе называющейся "local".
Почтовая программа со специальным именем "error" может быть использована для генерации сообщений об ошибках пользователя. Поле хоста (опционально) содержит возвращаемый статус выхода, а поле пользователя - распечатываемое сообщение. Статус выхода может быть числом или одним из значений USAGE, NOUSER, NOHOST, UNAVAILABLE, SOFTWARE, TEMPFAIL, PROTOCOL, или CONFIG, возвращающим соответствующий код выхода EX_, или усовершенствованный код ошибки, описанный в RFC 1893, Enhanced Mail System Status Codes. Например, вхождение: $#error $@ NOHOST $: Host unknown in this domain
в RHS правила вызовет генерацию указанной ошибки, и, если LHS совпадает, будет возвращен статус выхода "Host unknown". Эта почтовая программа работоспособна только в наборах правил 0, 5, или одном из наборов правил check_*.
Почтовая программа со специальным именем "discard" заставляет выкидывать любую почту, посланную к ней, но в то же время считать, что она была успешно доставлена.
Почтовая программа, называющаяся "local" должна быть определена в каждом файле конфигурации. Она используется для доставки локальной почты, и обслуживается особо несколькими образами. В добавок, три другие почтовые программы, называющиеся "prog", "*file*", и "*include*" могут быть определены для настройки доставки сообщений в программы, файлы и списки :include: соответственно. Их умолчания: Mprog, P=/bin/sh, F=lsD, A=sh -c $u M*file*, P=/dev/null, F=lsDFMPEu, A=FILE M*include*, P=/dev/null, F=su, A=INCLUDE
Наборы перезаписи Sender и Recipient могут быть как просто идентификатором набора правил, так и двумя идентификаторами, разделенными слешем; в этом случае, первый набор перезаписи применяется к конвертным адресам, а второй применяется к заголовкам.
Directory - это на самом деле перечисление путей для просмотра с разделителем ":". Например, определение "D=$z:/" сначала опробует выполнение в домашнем каталоге получателя; если он недоступен, то попробует выполнение в корневом каталоге файловой системы. Это предназначено для использования только в почтовой программе "prog", из-за того, что некоторые оболочки (типа csh) отказываются работать, если они не могут прочитать домашний каталог. Вследствие того, что каталог очереди обычно не доступен для чтения непривилегированным пользователям, сценарии csh, как принимающие программы не смогут работать.
Userid определяет идентификатор пользователя и группы по умолчанию для работы, заменяя собой опцию DefaultUser. Если флаг S почтовой программы также определен, то этот пользователь и группа используется для работы при всех обстоятельствах. Это может быть задано как user:group для выставки идентификаторов пользователя и группы одновременно; это могут быть целые числа или символические имена, просматриваемые в файлах passwd и group соответственно. Если определено только символическое имя пользователя, в качестве идентификатора группы используется идентификатор, прописанный для этого пользователя в файле passwd.
Поле Charset используется при преобразовании сообщения в MIME; этот набор символов используется в заголовке Content-Type:. Если он не установлен, используется опция DefaultCharset, если же и она не назначена, используется значение "unknown-8bit". Внимание: это поле применяется к почтовой программе отправителя, а не получателя. Например, конвертный адрес отправителя принадлежит локальной сети, а получателя - внешней, набор символов будет установлен из поля Charset= для локальной сетевой почтовой программы, а не для внешней.
Поле Type= устанавливает тип информации, используемой в сообщениях об ошибках MIME, как определено в RFC 1894. На самом деле это три значения, разделенные слешами: MTAtype (то есть, описание того, как называются хосты), тип адреса (описание адресов электронной почты), и тип диагностики (описание кодов диагностических ошибок).Каждое из них должно быть зарегистрированным значением, или начинаться с "X-". По умолчанию "dns/rfc822/smtp".