Синтаксис команды 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 приводится в следующем