Синтаксис команды sendmail обманчиво прост:

sendmail [аргументы] [адрес ,..]

Синтаксис обманчив, поскольку не отражает того факта, что число аргументов командной строки очень велико. Все эти аргументы перечислены в табл. Е.2.

Таблица Е.2. Аргументы командной строки sendmail

Аргумент Назначение
Сообщение передается пользователем
-Venvid Установить идентификатор конверта в envid
-tidsn Установить значение уведомления о состоянии доставки в dsn
-Мxvalue Назначить макроопределению х значение value
-Rreturn Указать часть сообщения, возвращаемую наряду с ошибкой
-Вtype Установить MIME-тип для тела сообщения
-pprotocol Указать протокол приема и имя узла
-Xlogfile Записывать весь трафик в файл журнала log file
-faddr Адрес машины отправителя - addr
-r addr Устаревшая форма ключа -f
-h cnt Удалить сообщение, подвергшееся пересылке cnt раз
-tname Указать полное имя данного пользователя (пате)
-n Не выполнять обработку псевдонимов и пересылку
-Tvalue Установить значение value для параметра QueueTimeout
-t Послать копии сообщения по всем адресам из полей То:, Сс: и Всс:
-bm Доставка почты (режим по умолчанию)
-bD Работа в качестве демона в приоритетном режиме
-ba Режим ARPAnet
-ba Режим ARPAnet
-bs Указывать SMTP на входе
-bd Режим демона
-bH Очистить каталог состояния узла; эквивалент purgestat
-bh Вывести отчет о состоянии узла; эквивалент hoststat
-bt Работа в режиме тестирования
-bv Проверить адреса; не выполнять сбор и доставку сообщений
-bi Инициализировать базу данных псевдонимов
-bp Вывести почтовую очередь
-bz Создать разобранную копию файла sendmail.cf
-q[tifl?e] Обработать сообщения в почтовой очереди. Повторять операцию с указанным интервалом времени (time)
-Cfile Использовать указанный файл в качестве файла настройки
-c Установить параметр HoldExpensive в значение true
-dlevel Установить уровень отладки
Установить значение параметра ErrorMode
-Qoption=value Установить параметр option в значение value
-oxvalue Установить значение параметра при помощи его старого, односимвольного имени
-I Альтернативный способ указать ключ -bi
-i Игнорировать точки в поступающих сообщениях
-m Послать копию отправителю
-v Режим подробной диагностики
-s adc/r Альтернативная форма ключа -f

В табл. Е.2 перечислено более 30 аргументов командной строки. Эта таблица является кратким справочником по всем существующим аргументам, многие из которых в последней версии sendmail уже не используются. Вероятно, наиболее известным из таких аргументов является ключ -bz. В свое время он использовался для предварительной обработки файла sendmail.cf. Идея заключалась в том, что хранение обработанных настроек повышает скорость работы. Этот устаревший ключ не работает в новейших версиях sendmail. Если вы пользовались этим аргументом в более старых версиях sendmail, то можете ошибочно предполагать, что он все еще необходим. Попытка использовать данный ключ с современной версией sendmail приведет к ошибке. Отдельные аргументы являются избыточными формами других ключей. Например, ключи -с, -е, -I, -т, - г, -Т и -s устарели, а на смену им пришли другие аргументы. Все аргументы, выполняющие установку параметров send-mail.cf, даже те, что еще в ходу, такие как -i и -о, могут эмулироваться клю-чом -0. Так, команду:

sendmail -m -s < mail.fil e

можно заменить на:

sendmail -0MeToo=true -OSaveFromLine=true < mail.file

Ключ -0 обладает тем явным преимуществом, что позволяет устанавливать любой параметр файла sendmail.cf. Аргументы вроде -т и -s устанавливают каждый только по одному параметру. Конструкцию -0 также проще читать и понимать, особенно когда команда sendmail фигурирует в сценарии. Некоторые аргументы командной строки из табл. Е.2 описаны в главе 10. Вот эти ключи:

- f

Разрешает доверенным пользователям переопределять адрес отправителя в исходящих сообщениях. По соображениям безопасности в некоторых системах данная возможность блокируется. Ключи - r и -s являются устаревшими альтернативными формами данного аргумента.

-t

Читает поля заголовка То:, Сс: и Всс: со стандартного ввода. Используется для отправки файла, содержащего такие поля, либо при наборе тестового сообщения, как показано в главе 10.

-bd

Запускает sendmail в фоновом режиме для сбора поступающей почты. Используйте данный ключ в строке команды sendmail в загрузочном сценарии.


-bt

Используется для тестирования правил подстановки sendmail.

-bi

Инициализирует базу данных псевдонимов. Действие ключа идентично действию команды newaliases, описанной в главе 10.

-Q

Устанавливает временной интервал обработки очереди почтовых сообщений. Используйте данный ключ в строке команды sendmail в загрузочном сценарии.

Загружает альтернативный файл настройки sendmail. Используйте данный ключ для тестирования настроек перед копированием их в файл sendmail.cf.

-v

Позволяет наблюдать за выполнением команд SMTP в реальном времени.

-bv

Выполняет проверку обработки адресов, но не отправляет почтовые сообщения. Если не принимать во внимание два аргумента (-bd и -q), используемые в строке команды sendmail в загрузочном сценарии с целью обработки входящей почты, наиболее распространенным применением аргументов sendmail является отладка.

Перечисленные в приведенном выше списке ключи -bt, -С, -bv, -v и -t использовались в примерах отладки в главе 10. Прочие ключи отладки:

-bp

Выводит список сообщений, находящихся в очереди доставки. Действие ключа идентично действию команды mailq. Почтовые сообщения попадают в очередь, если не могут быть доставлены немедленно по причине того, что удаленный узел временно не способен принимать почту, sendmail периодически обрабатывает очередь исходя из временного интервала, определенного аргументом ключа -q, и пытается доставить сообщения из очереди. Рост очереди сообщений может значительно снижать производительность sendmail в случае неработоспособности удаленного узла, mailq сообщает, сколько сообщений находится в очереди, а также источник и пункт назначения для каждого сообщения.


Если очередь требует немедленной обработки, выполните sendmail с клю-чом -q без аргумента. Эта команда обрабатывает всю очередь. Некоторые вариации аргумента ключа -q позволяют избирательно обрабатывать очередь. Используйте -qlqueue-id для обработки только тех сообщений, с которыми связан указанный идентификатор очереди; ключ -qRrecipient для обработки сообщений, адресованных указанному получателю; или же ключ -qSsender для обработки писем, исходящих от указанного отправи-теля. Команда mailq отображает идентификатор очереди, адрес отправителя и адрес получателя для всех сообщений очереди.

Устанавливает значение параметра для данного экземпляра sendmail, например -oA/tmp/test-aliases. Используйте данный аргумент, чтобы тестировать альтернативные значения параметров, не внося изменения в файл sendmail.cf. Ключ -о требует использования старого синтаксиса установки параметров sendmail. Альтернативой является аргумент -0, работающий с новым синтаксисом. Например, -OAilasFile=/tmp/test~aliases.

См. раздел «Параметры sendmail» далее в этом приложении.

-d

Устанавливает уровень диагностики, выводимой при отладке кода send-mail. Может использоваться для отладки правил подстановки и для проверки параметров настройки (например, sendmail -bt -dO. 4). Большая часть параметров отладки применима для отладки исходных текстов sendmail.

-h

Устанавливает значение счетчика, используемого для обнаружения зацикливания почты. По умолчанию имеет значение 30. Это хорошее рабочее значение. При диагностировании проблемы, связанной с зацикливанием почты, уменьшайте значение счетчика транзитных участков (например, -h10), чтобы сократить число повторений обработки сообщения системой. В ином случае не изменяйте данное значение.

-bh

Отображает состояние узла, если настройки sendmail предписывают наблюдать за этим состоянием. Вывод содержит имя каждого из удаленных узлов, которым передавалась почта, время последнего обновления состояния узла, а также результат последней попытки доставить почту этому узлу. Каталог файлов состояний узлов может стать очень большим. Используйте ключ -ЬН для очистки этого каталога.

Оставшиеся аргументы редко встречаются в командной строке:


Указывает MIME-тип тела сообщения. Допустимые значения: 7BIT и 8BITMIME.

-N

Запрашивает передачу отправителю уведомления о состоянии доставки почты. Значение по умолчанию FAILURE, DELAY; отправитель получает уведомление, если почта задерживается в очереди или не может быть доставлена. Прочие допустимые значения: NEVER (никакие уведомления не должны передаваться отправителю) и SUCCESS (запрос передачи уведомления об успешной доставке почты).

Устанавливает значение макроопределения для данного экземпляра sendmail. Например, аргумент -MMwrotethebook.com устанавливает значение макроопределения М в wrotethebook.com.

Определяет протокол отправки и передающий узел. Действие ключа эквивалентно установке значений внутренних макроопределений s и г. Если в системе несколько внешних почтовых протоколов (например, UUCP и SMTP), данный ключ предписывает системе использовать определенный протокол для данного сообщения.

-R

Устанавливает объем информации, возвращаемый отправителю в случае, когда сообщение не может быть доставлено. Допустимые значения: HDRS (только заголовки) и FULL (заголовки и тело сообщения).

-U

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

-V

Вставляет идентификатор конверта в исходящие сообщения, посылаемые в случае невозможности доставить сообщение.

-X

Записывает все почтовые сообщения в указанный файл журнала. Это быстро приводит к непомерному росту файла.

-п

Отключает обработку псевдонимов и пересылку почты.

-bm

Предписывает sendmail доставить почту, что является поведением по умолчанию.

-Ьа

Читает строку заголовка From: в целях обнаружения адреса отправителя. Используются коды ответов из трех цифр, а строки ошибок завершаются символами . Аргумент вышел из употребления.

-bs

Предписывает sendmail использовать SMTP для входящей почты. Когда возможно, sendmail делает это и без аргумента -bs.

-i

Обычно признаком завершения сообщения SMTP является строка, содер-жаща я только точку. Данный аргумент предписывает sendmail игнориро-вать точки в поступающих сообщениях.

-m

Посылает копию сообщения автору письма. Обычно этой цели служат за-головки сообщения СС: или ВСС:, а не ключ -m.

-bD

Выполняет sendmail в приоритетном режиме. Демон остается прикреп-лен к управляющему терминалу.

-F

Указывает полное имя отправителя.

Таков полный список аргументов командной строки sendmail на момент на-писания этой книги. Некоторые из аргументов появились недавно, другие устарели в последних версиях sendmail. Чтобы определить, какие аргумен-ты доступны в вашей системе, обращайтесь к страницам руководства по sendmail.

При выполнении команда sendmail читает свои настройки из файла sendma-il.cf. Начальный файл sendmail.cf может быть создан при помощи макро-определений гп4, поставляемых в дистрибутиве исходных текстов sendmail. П

римеры решения этой задачи приводятся в главе 10. Полный перечень макроопределений т4 из дистрибутива sendmail приводится в следующем