Самый простой способ отправить однострочную почту через командную строку, используя gmail?
ssmtpэто всего лишь одна из многих оболочек Sendmail. Все они принимают сообщение на стандартном вводе и, необязательно, список адресов в качестве аргументов командной строки, и все они предлагают двоичный файл с именем, sendmailкоторый реализует (по крайней мере, основные функции) традиционный API командной строки Sendmail. Но, собственно говоря, это сообщение должно быть правильно сформированным сообщением RFC822. Как минимум, он должен иметь Subject:заголовок.
(С ssmtp, sendmailэто просто символическая ссылка на ssmtp. Postfix, Exim, и я полагаю, что любой другой MTA Provides: mail-transport-agentимеет аналогичное расположение, за исключением, конечно, sendmailгде sendmailдвоичный файл «реальная вещь». )
Чаще всего вы можете собрать простое электронное письмо с документом здесь.
/usr/lib/sendmail -oi -t <<____HERE
Subject: testing
To: [email protected]
Here we interpolate the shell variable $result
____HERE
(Опция Sendmail -tговорит, что нужно взять список получателей из заголовков сообщения, которое вы получаете при стандартном вводе. Точный путь к Sendmail будет отличаться для разных платформ.)
Другим распространенным вариантом является объединение вывода нескольких команд. Позаботьтесь о том, чтобы между заголовками и телом сообщения была пустая строка («шея»).
( printf "Subject: random number\n\n"
dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -D -An ) |
sendmail [email protected]
Для чего-либо, кроме очень простых текстовых сообщений ASCII, вам нужно понять, как составить правильное сообщение MIME, и в этом случае обычно имеет смысл использовать подобный инструмент mutt. Некоторые платформы имеют mailили mailxкоторые знают, как отправлять вложения и текст не-ASCII, но это не полностью переносимо.
Проблема здесь не в том, чтобы найти клиента, который может принять сообщение электронной почты и попытаться отправить его, а в том, чтобы настроить его для специфики Gmail, для чего MTA должен знать имя пользователя и пароль для использования на удаленном сервере, чтобы чтобы иметь возможность использовать его в качестве исходящего SmartHost.
За кулисами, как большинство клиентов mutt, mailxи т. Д., Как правило, просто sendmailскрываются, чтобы передать сообщение из системы.
Отправка почты из командной строки (консоли) Linux
В данной статье мы рассмотрим основные утилиты для отправки электронных писем по SMTP из консоли Linux – mail/mailx/mutt. Данная инструкция применима ко всем современным дистрибутивам Linux.
Для отправки почты из командной строки Linux вам нужно установить Mail User Agent, которые умеет подключаться к smtp серверам для отправки и получения почты.
В первую очередь рассмотрим утилиту mail (mailx). Для ее установки, выполните:
Mailx содержит в себе несколько утилит для работы с почтой, мы же подробно остановимся на mail.
Обратите внимание, что на вашем хосте обязательно должен быть установлен какой-нибудь почтовый сервер. Например, postfix или sendmail:
# yum install sendmail –y
Основные опции при отправке писем:
-s — Subject:
-c — Cc:
-b — BCc:
-r — From:
Чтобы отправить простое сообщение из консоли Linux, воспользуйтесь командой:
Если вам нужно посмотреть подробные логи отправки писем по SMTP, их можно посмотреть в файле:
# cat /var/log/maillog
Без указания дополнительных опций письмо отправляется с дефолтного почтового ящика и скорее всего будет помечено как спам в большинстве популярных почтовых сервисах.
Чтобы указать другого отправителя письма (mail from), используйте ключ -r:
В указанных почтовый ящик должно прийти письмо с вложением. Если нужно отпрравить два или более файлов, добавьте каждый файл через собственный атрибут –a:
# echo "Вложены 2 файла " | mail -s "Вложение нескольких файлов " -a /root/test.txt -a /root/message.log -r [email protected][email protected]
Вы можете отправить письмо через конкретный SMTP сервер. Его имя и порт подключения указываются в параметре -S smtp= :
Если удаленный SMTP сервер требует авторизации перед отправкой, вы можете указать имя пользователя и пароль с помощью параметров -S smtp-auth-user и -S smtp-auth-password.
При запуске этой команды перед вами появятся список SMTP команд для подключения, авторизации и отправки почты.
Если для отправки нужно использовать TLS шифрование и игнорировать проверку подлинности сертификата сервера, добавьте параметры:
-S smtp-use-starttls -S ssl-verify=ignore
Чтобы не задавать все параметры в командной строке, вы можете указать их в файле ~/.mailrc. Например, добавьте в этот файл такие строки:
set smtp-use-starttls
set ssl-verify=ignore
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set [email protected]
set smtp-auth-password=sdf#23ddsh4sq9-
set from= [email protected]
Теперь для отправки письма через релей Gmail с аутентификацией достаточно выполнить команду:
$ echo "Test mail " | mail -v -s "Testing gmail auth" admin@build-centos. ru
Вы можете использовать команду отправки почты для в своих bash скриптом. Например, создайте следующий скрипт, которые будет отправлять вам информацию по свободному месту на дисках:
Таким образом, вы можете легко отправлять письма из командной строки, встраивать отправку email оповещений в свои bash скрипты или ватчдоги (удобно для контроля их выполнения).
НОУ ИНТУИТ | Лекция | Программа sendmail
Аннотация: В данной лекции: рассматриваются файлы и каталоги sendmail, синтаксис команд sendmail, файл конфигурации sendmail.
В этой лекции
Файлы и каталоги sendmail
Синтаксис команд sendmail
Файл конфигурации sendmail
Чтобы правильно посылать и принимать почту от других систем, на почтовом сервере под управлением ОС Linux должна быть установлена программа — почтовый транспортный агент (Mail Transport Agent — MTA). Работа МТА заключается в обработке почтовых сообщений, а не в доставке их локальному пользователю, как иногда думают. Если МТА принимает сообщение, направленное локальному пользователю, то он просто передает его другой программе, которая занимается его доставкой. Сообщения, адресованные пользователям удаленных хостов, будут направляться либо на эти хосты, либо передаваться узлу, который сможет далее переслать их по назначению. После того как сообщение передано, работа МТА завершена.
Для ОС Linux существует довольно много программ — почтовых транспортных агентов. Некоторые из них обладают более широкой функциональностью, в то время как другие легче в работе, с точки зрения администратора почтовой системы. Прабабушкой всех МТА-программ для платформы UNIX является программа sendmail. Довольно часто ее называют самой универсальной программой МТА, но в то же время она наиболее сложна в настройке. Компоненты программы sendmail описаны в этой лекции. Вопросы конфигурирования sendmail для работы на почтовом сервере под управлением ОС Linux рассмотрены в «Установка и конфигурирование sendmail» , «Установка и конфигурирование sendmail».
sendmail и безопасность
Программа sendmail используется на многих платформах уже на протяжении нескольких десятков лет. В первые годы ее применения были выявлены практически все черные входы и дыры в программе, которые позволяли хакерам проникать в систему. Например, общеизвестна реакция sendmail на SMTP команды debug и wiz. Получив при анонимном SMTP-сеансе посредством этих команд доступ в систему, через другие программы хакер мог получить права пользователя root. Когда программа sendmail стала популярной, то все черные ходы были закрыты и ошибки в программе были исправлены.
К сожалению, многие администраторы почтовых систем отвергают возможность применения sendmail, ссылаясь на старые черные ходы в ней, которые уже давно закрыты. Конечно, время от времени обнаруживаются новые ошибки в программе, которые позволяют получить несанкционированный доступ к системе. Однако это случается не чаще, чем с другими пакетами для работы с почтой. Так как квалификация хакеров в сети Internet с каждым годом повышается, соответствующим образом должна расти сложность программного обеспечения. Единственное, что может противопоставить растущему числу хакеров программа sendmail, это наличие профессиональных программистов, которые работают над ее улучшением. Они достаточно квалифицированы, чтобы постоянно исправлять и улучшать программный код sendmail, сохраняя его стабильность и уровень безопасности. Не так много пакетов для работы с почтой могут похвастаться тем же.
Так что было бы неосмотрительно только из-за слухов о неблагонадежности sendmail отказываться от ее преимуществ.
Файлы и каталоги sendmail
Программа sendmail не работает в одиночку. Для обеспечения нормальной работы sendmail требуется наличие определенных файлов и каталогов. В этом разделе описаны файлы и каталоги, которые требуются для работы программы sendmail. Иногда, в зависимости от заданной конфигурации, могут понадобиться и другие файлы. В «Установка и конфигурирование sendmail»
описаны некоторые дополнительные файлы, необходимые для работы sendmail.
Программа sendmail
Путь: /usr/sbin/sendmail
ru/2010/edi»>Программа sendmail является главным двигателем при передаче почты. Обычно она запускается в фоновом режиме в виде процесса-демона, который ожидает появления входящих почтовых сообщений и проверяет очередь исходящих почтовых сообщений через установленные интервалы времени. В качестве альтернативы можно определенным образом сконфигурировать sendmail для запуска по запросу программы inetd, управляющей всеми TCP-портами. Таким образом можно сэкономить ресурсы памяти на сервере, так как при этом программа sendmail не работает в фоновом режиме, а следовательно, не занимает память. Вместе с тем такая организация работы sendmail приводит к снижению производительности, так как в этом случае sendmail при каждом запуске должна перечитывать файлы конфигурации. Программа sendmail может получать доступ к каталогам пользователя root, так как ей задан setuid root. Другие пользователи также могут запускать sendmail, но при этом они не смогут получить доступ ко многим каталогам, которые требуются для работы sendmail, например к очереди почтовых сообщений.
Основной файл конфигурации
Путь: /etc/sendmail.cf
Для правильной работы sendmail на локальном почтовом сервере необходимо сконфигурировать ее в соответствии со своими специфическими требованиями. Все определения, касающиеся обработки почты программой sendmail, хранятся в файле конфигурации /etc/sendmail.cf. Все они называются наборами правил (rule set). Наборы правил применяются в sendmail для анализа адресов отправителя и получателя сообщения, а также для определения способа его доставки получателю. При запуске программа sendmail читает содержимое файла конфигурации, так что, если в него вносились какие-либо изменения, нужно перезапустить sendmail, чтобы они возымели действие.
Каталог очереди почтовых сообщений
Путь: /var/spool/mqueue
Каталог mqueue создается для хранения всех почтовых сообщений, которые ожидают обработки в очереди. Владельцем этого каталога является пользователь root. Программа sendmail удостоверяется в том, что все файлы очереди почтовых сообщений хранятся в этом каталоге и имеют соответствующие права доступа, которые не позволяют обычным пользователям читать сообщения, находящиеся в очереди. Местоположение каталога очереди почтовых сообщений можно изменять. Это делается либо изменением соответствующего параметра в файле sendmail.cf, либо запуском sendmail из командной строки со специальным параметром.
Программа для отображения состояния очереди почтовых сообщений
Путь: /usr/sbin/mailq
Программа mailq является символической связью с программой sendmail. При ее запуске программа sendmail отображает содержимое очереди почтовых сообщений.
Создание базы данных псевдонимов
Путь: /usr/sbin/newaliases
Программа newaliases также является символической связью с программой sendmail. При ее запуске считываются текстовые псевдонимы из файла aliases и с помощью стандартного пакета по поддержке баз данных в ОС Linux создается база данных псевдонимов. В ОС Linux при этом обычно создается хешированный файл базы данных.
Отправка почты из командной строки Linux
главная — Статьи — Linux, FreeBSD
Теги: Linux Почтовый сервер
Устанавливаем команду mail.
CentOS/RedHat:
# yum install mailx
Ubuntu/Debian:
$ sudo apt-get install mailutils
После этого можно выполнять консольную команду mail:
Это может несколько улучшить спам-рейтинг с точки зрения принимающих серверов. Например, вы хотите с какого-то внутреннего сервера отправлять уведомления на свой ящик в gmail, но gmail может отклонить письмо (да и не только gmail, ясное дело). Пример: есть шлюз с внешним ip 1.2.3.4 и внутренним ip 192.168.24.1. Внутренний сервер имеет только внутренний ip (lan или dmz). При отправке письма командой mail письмо будет отправлено через внешний шлюз (1.2.3.4), и его ip прекрасно поймет внешний почтовик.
Что «увидит» gmail? Что пришло письмо с ip 1.2.3.4, а отправитель, скажем, [email protected] (ну или как у вас hostname). Ясное дело, это не публичный адрес и его срочно надо в спам! Что делать нам? Не поднимать же полноценный почтовый сервер (а почему бы и нет ;))
Вполне может быть, что у вашего внешнего ip уже есть какое-либо имя, выданнео провайдером (например, s4-3-2-1.provider.com). Узнать это можно командой «ping -a 1.2.3.4». Или вы можете на любом вашем хостинге создать A-запись для ip 1.2.3.4 с именем что-то типа srv1234.yourdomain.com и это имя вписать в ключ -r:
где techadmin@ — произвольно взятое имя почтового ящика.
Внешний почтовый сервер терпимее отнесется к письму, в поле From: которого стоит название хоста, с которого и пришло письмо.
Отправка тела письма из файла
Если тело письма находится в отдельном файле, можно напрямую использовать его для отправки письма. Это может быть полезным при вызове команды mail из скриптов.
$ mail -s «Message Subject» [email protected] < /var/txt/mailbody.txt
Другие опции
Отправить скрытую копию письма: -b address
Отправить копию письма: -c address
И там, и там список получателей разделяется запятыми.
Авторизуйтесь для добавления комментариев!
Как: Отправить Почту через SMTP Сервер используя Командную Строку
SMTP (Simple Mail Transfer Protocol) — это широко используемый сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP.
В данной инструкции показано, как с помощью команды ‘telnet’ подключаться к почтовому SMTP серверу и отправлять электронную почту.
Step 1: Открываем соединение к почтовому SMTP серверу с Вашего компьютера
Step 2: Представляемся сервису и указываем свое доменное имя или IP-адрес
В качестве параметра HELO можно задать local.domain.name или все что угодно, поскольку сервер не выполняет проверку его достоверности, что является одним из недостатков данного протокола.
> HELO local.domain.name
250 smtp.domain.ext Hello local.domain.name [xxx.xxx.xxx.xxx], pleased to meet you
Step 3: Указываем Email отправителя
> MAIL FROM: [email protected]
250 2.1.0 sender@adress. ext... Sender ok
Step 5: Для написания сообщения, набираем DATA и нажимаем ‘Enter’
> DATA
354 Enter mail, end with "." on a line by itself
Step 6: В первой строке набираем ‘SUBJECT: Тема Письма’ и дважды жмем ‘Enter’
> SUBJECT: Test message
Step 7: Продолжаем набирать текст письма
Hello,
this is a TEST message,
please don't reply.
Thank you.
Step 8: Для отправки письма, в последней строке поставьте только одну точку (.) и нажмите ‘Enter’
> .
250 2.0.0 ???????? Message accepted for delivery
Step 9: Закройте соединение
> QUIT
221 2.0.0 server.com closing connection
5. Командная строка Exim | LinuxShare
Перевод выполнен Алексеем Паутовым в рамках некоммерческого проекта RussianLDP (http://www. rldp.ru/). Именно на этом сайте и надлежит искать новые версии, если таковые будут.
5. Командная строка Exim
Командная строка exim имеет стандартную UNIX-форму последовательности опций, которые начинаются с символа дефиса, за которым следует несколько параметров. Опции совместимы с основными опциями Sendmail, а также есть дополнительные опции, некоторые из которых совместимы с Smail 3. Определённые комбинации опций не имеют смысла, при попытке их использования происходит ошибка. Формат параметров зависит от того, какие опции заданы.
5.1. Установка опций именем программы
Если exim вызывается под именем mailq, он ведёт себя как будто перед другими опциями присутствует опция -bp. Опция -bp запрашивает список содержимого почтовой очереди и выводит его на стандартный вывод. Эта возможность имеется для совместимости с некоторыми системами, содержащими команды с использованием этого имени в одной из стандартных библиотек, символически связанных с /usr/sbin/sendmail или /usr/lib/sendmail.
Если exim вызывается под именем rsmtp, он ведёт себя, как будто перед другими опциями присутствует опция -bS, для совместимости с Smail. Опция -bS используется для подсчёта числа сообщений в пакетном SMTP-формате.
Если exim вызывается под именем rmail, он ведёт себя, как будто перед другими опциями присутствуют опции -i и -oee, для совместимости с Smail. Имя rmail используется как интерфейс некоторыми UUCP-системами.
Если exim вызывается под именем runq, он ведёт себя, как будто перед другими опциями присутствует опция -q, для совместимости с Smail. Опция -bS используется для запуска одиночного процесса обработчика очереди.
Если exim вызывается под именем newaliases, он ведёт себя, как будто перед другими опциями присутствует опция -bi для совместимости с Sendmail. Эта опция используется для пересборки файла алиасов Sendmail. Exim понятия не имеет об одиночном файле алиасов, но может быть сконфигурирован для выполнения с опцией -bi.
5.2 Доверенные и административные пользователи
Некоторые опции exim доступны только для доверенных пользователей (trusted users), и другие доступны лишь для административных пользователей (admin users). В описании ниже фразы «пользователь exim» (Exim user) и «группа Exim» (Exim group) означают пользователя и группу, заданных как EXIM_USER и EXIM_GROUP в Local/Makefile, или установленных опциями exim_user и exim_group конфигурационного файла. Они не обязательно должны использовать имя exim.
Доверенные пользователи это root, пользователь exim любой пользователь, перечисленный в конфигурационной опции trusted_users, и любой пользователь, текущая или дополнительная группа которого перечислена в конфигурационной опции trusted_groups. Обратите внимание, что группе exim доверие автоматически не устанавливается.
Доверенным пользователям всегда разрешено использовать опцию -f или продолжение строки From для определения отправителя конверта сообщения, принятого exim через локальный интерфейс (смотрите ниже опции -bm и -f). Смотрите опцию untrusted_set_sender для способа разрешить недоверенным пользователям устанавливать отправителя конверта.
Для доверенных пользователей никогда не проверяется содержимое заголовков From: и никогда не добавляется строка заголвка Sender:. Кроме того, любые существующие строки Sender: во входящих локальных (не по TCP/IP) сообщениях не удаляются.
Также доверенные пользователи могут задать имя хоста, адрес хоста, адрес интерфейса, имя протокола, значение ident и аутентификационные данные при отправке сообщения локально. Таким образом, они могут вставить в локальную очередь exim сообщения, которые имеют характеристики сообщений, полученных с удалённых хостов. Недоверенные пользователи, при некоторых обстоятельствах, используют -f, но никогда не могут устанавливать другие значения, доступные для доверенных пользователей.
Административный пользователь: root, пользователь exim, любые другие пользователи, которые являются членами группы exim или любой группы, перечисленной в конфигурационной опции admin_groups. Текущая группа не должна быть одной из этих групп.
Административным пользователям разрешено просматривать список очереди и выполнять определённые операции над сообщениями, например, вызывать принудительную ошибку доставки сообщения. Также необходимо быть административным пользователем, чтобы видеть полную информацию, предоставляемую монитором exim и полную отладочную информацию.
По умолчанию использование опций -M, -q, -R и -S для попытки доставки доставки сообщения в очереди, доступно только административным пользователям. Однако, это ограничение может быть ослаблено установкой опции prod_requires_admin в false (то еесть, задав no_prod_requires_admin).
Точно так же использование опции -bp для получения списка всех сообщений в очереди доступно лишь административным пользователям, если queue_list_requires_admin не установлена в false.
Предупреждение: Если Вы конфигурируете Вашу систему так, чтобы административные пользователи имели возможность редактировать конфигурационный файл exim, Вы даёте этим пользователям простой способ получить root-доступ. Дальнейшее обсуждение этой проблемы в начале главы 6.
5.3 Опции командной строки
Командные опции описаны в алфавитном порядке, ниже.
—: Это псевдо-опция, назначение которой указать конец опций и обработать последующие параметры как параметры, а не опции, даже если они начинаются с дефисов.
—help: Эта опция заставляет exim вывести несколько фраз о том, что он такое (какой он). Тот же самый вывод генерируется при запуске бинарного файла exim без опций и параметров.
-B<type>: Это опция sendmail для выбора 7-ми или 8-ми битной обработки. Exim полностью 8-ми битный, он игнорирует эту опцию.
-bdЭта опция запускает exim как демон, ожидающий входящих SMTP-соединений. Обычно опция -bd комбинируется с опцией -q<time> для задания, что демон обработчика очереди также должен периодически выполняться.
Опция -bd может использоваться только административными пользователями. Если установлены опции -d (отладка) или -v (проверка), демон не отключается от контрольного терминала. При работе таким способом он может быть остановлен нажатием Ctrl+C.
По умолчанию exim ждёт входящие подключения на стандартном SMTP-порту на всех работающих интерфейсах хоста. Однако, он может слушать на других портах, на нескольких портах и только на определённых интерфейсах. Раздел 13 сожержит описание опций, управляющих этим.
Когда слушающий демон запущен без использования -oX (то есть, не отменяя нормальную конфигурацию), он пишет идентификатор процесса в файл с именем exim-daemon.pid, находящийся в каталоге спула exim. Это местоположение может быть перезадано установкой PID_FILE_PATH в Local/Makefile. Файл записывается в то время, когда exim всё ещё работает от пользователя root.
Когда -oX используется в командной строке для запуска слушающего демона, идентификатор процесса не записывается в pid-файл, находящийся по нормальному пути. Однако, опция -oP может быть использована для задания пути в командной строке, если pid-файл необходим.
Сигнал SIGHUP может быть использован для непосредственного перевызова демона. Это необходимо сделать всякий раз, когда конфигурационный файл exim или файл, непосредственно в него включенный посредством .include, изменён, а также всякий раз, когда установлена новая версия exim. Нет необходимости делать это, когда изменяются другие файлы, на которые ссылаются из конфигурации (например, файлы алиасов), поскольку они перечитываются при каждом использовании.
-bdf: Эта опция имеет такой же эффект, как и -bd за исключением, что процесс никогда не отключается от терминала, даже если отладка не задана.
-be: Запускает exim в режиме тестирования раскрытий. Exim снимает с себя root-привилегии, чтобы предотвратить использование этого режима обычными пользователями для чтения недоступных им файлов. Если не задано никаких аргументов, exim выполняется в интерактивном режиме, запрашивая строки данных. Иначе, он обрабатывает каждый параметр по очереди.
Если exim собран с USE_READLINE=yes в Local/Makefile, то он пробует динамически загрузить библиотеку libreadline каждый раз, когда опция -be используется без параметров командной строки. В случае успеха он использует функцию readline(), которая предоставляет обширные средства редактирования строки, для чтения тестовых данных. История строк поддерживается.
Длинные выражения раскрытия могут быть разбиты на несколько строк, используя продолжения с обратным слэшем. Как в рабочей конфигурации exim, пустые символы игнорируются в начале строк продолжения. Каждый аргумент или строка данных проходят через механизм раскрытия строк и результат выводится. Значения переменных из конфигурационного файла (например, $qualify_domain) доступны, но значения специфичные для сообщения (например, $domain) не установлены, поскольку нет сообщения в обработке.
Примечание: Если Вы используете этот механизм для тестирования поиска, и изменяете файлы данных или БД, которые используете, Вы должны выйти и рестартовать exim перед новой попыткой такого же поиска. Иначе, поскольку каждый процесс exim кэширует результаты поисков, Вы получите такой же результат, как и прежде.
-bF <filename>: Эта опция то же самое, что и -bf за тем исключением, что предполагается, что тестируемый фильтр системный. Дополнительные команды, которые доступны только в системном фильтре, также распознаются.
-bf <filename>: Эта опция запускает exim в режиме тестрования пользовательского фильтра: filename это файл фильтра, который будет тестироваться, и тестовое сообщение должно быть предоставлено на стандартном вводе. Если в фильтре нет зависимых от сообщения тестов, может быть предоставлен пустой файл.
Если Вы хотите тестировать системный фильтр, используйте -bF вместо -bf. Вы можете использовать обе опции -bF и -bf в одной команде для проверки системного фильтра и пользовательского одновременно. Например:
Это полезно, когда системный фильтр добавляет строки заголовка или устанавливает переменные фильтра, применяемые пользовательским фильтром.
Если тестируемый файл фильтра не начинается с одной из специальных строк
# Exim filter
# Sieve filter
то он берётся как нормальный файл .forward и проверяется на валидность в этой интерпретации. Смотрите секции 22.4 и 22.6 для описания возможного содержимого нефильтровых списков перенаправления.
Результаты команды exim, использующей -bf, если не обнаружены ошибки, являются списком действий, которые exim попробовал бы предпринять, если бы это было реальное сообщение. Более подробное рассмотрение тестирования фильтров дано в отдельной главе 54, озаглавленной Интерфейс Exim для фильтрации почты.
Когда тестируется файл фильтра, отправитель конверта может быть задан при помощи опции -f или при помощи строки From в начале тестового сообщения. Различные параметры, которые бы обычно брались из адреса получателя конверта сообщения, могут быть установлены посредством дополнительных опций командной строки (смотрите последующие четыре опции).
-bfd <domain>: Эта опция устанавливает домен адреса получателя, когда файл фильтра тестируется с использованием опции -bf. Значение по умолчанию $qualify_domain.
-bfl <local part>: Эта опция устанавливает локальную часть адреса получателя, когда файл фильтра тестируется с использованием опции -bf. По умолчанию имя пользователя процесса, вызвавшего exim. Локальная часть должна быть указана с любым префиксом или суффиксом, поскольку именно в таком виде он появляется в фильтре при фактической доставке сообщения.
-bfp <prefix>: Эта опция устанавливает префикс локальной части адреса получателя, когда файл фильтра тестируется с использованием опции -bf. Значение по умолчанию пустой префикс.
-bfs <suffix>: Эта опция устанавливает суффикс локальной части адреса получателя, когда файл фильтра тестируется с использованием опции -bf. Значение по умолчанию пустой суффикс.
-bh <IP address>: Эта опция запускает поддельную SMTP-сессию как будто от заданного IP-адреса с использованием стандартного ввода и вывода. IP-адрес может включать номер порта в конце после точки. Например:
Когда задан адрес IPv6, он конвертируется в каноническую форму. В случае второго примера, выше, значение $sender_host_address после преобразования будет fe80:0000:0000:0a00:20ff:fe86:a061.5678.
Комментарии относительно происходящего пишутся в стандартный файл ошибок. Они включают строки, начинающиеся с LOG для того, что должно быть запротоколировано. Это средство предоставлено для того, чтобы тестировать конфигурационные опции входящих сообщений для удостверения, что они реализуют необходимую политику. Например, Вы можете тестировать элементы управления релеем, используя -bh.
Предупреждение 1: Вы не можете тестировать конфигурационные возможности, которые зависят от обратных вызовов ident (RFC 1413). Их нельзя произвести в тестировании с использованием опции -bh, поскольку отсутсвует входящее SMTP-соединение.
Предупреждение 2: Обратные вызовы проверки адреса (смотрите раздел 39.32) также пропускаются при тестировании с использованием опции -bh. Если Вы хотите, чтобы эти обратные вызовы произошли, используйте опцию -bhc вместо -bh.
Сообщения, доставленные в течение сессии тестирования отбрасываются, и никакие данные не записываются ни в один из реальных протоколов. Могут быть паузы, когда присходит поиск в DNS (или другой), и они могут исчерпать лимит времени. Опция -oMi может использоваться для определения специфического IP-адреса и порта, если есть такая необходимость.
Утилита exim_checkaccess, упакованная (packaged) версия -bh, чей вывод только лишь говорит, допустим ли данный адрес получателя для данного хоста или нет. Смотрите раздел 49.8.
-bhc <IP address>: Эта опция работает таким же образом, как и -bh исключая то, что обратный вызов проверки адреса выполняется, если требуется. Это включает запрос и обновление БД обратных вызовов.
-bi: Sendmail интерпретирует опцию -bi как запрос на ребилдинг своей БД алиасов. Exim не имеет представления об одиночном файле алиасов, и таким образом, он не может подражать такому поведению. Однако, вызовы /usr/lib/sendmail с опцией -bi имеют тенденцию появляться в различных скриптах, типа NIS make-файлах, таким образом, эта опция должна быть распознана.
Если встречатеся опция -bi, то запускается команда, определённая как bi_command в конфигурационном файле, под uid и gid вызывашего exim. Если используется опция -oA, её значение передаётся команде как параметр. Команда, установленная bi_command, может не содержать аргументов. Команда может использовать exim_dbmbuild или другие срадства для перестройки файла алиасов, если это необходимо. Если опция bi_command не задана, вызов exim с -bi пустая команда.
-bm: Эта опция запускает процесс exim, принимающий входящие локально сгенерированные сообщения на текущем вводе. Получатели задаются как аргументы команды (кроме тех случаев, когда присутствует опция -t, см. ниже). Каждый аргумент может быть списком адресов, согласно RFC 2822, с разделителем в виде запятой. Это опция по умолчанию для выбора полного действия при вызове exim: предполагается, что не присутствует никакая другая конфликтующая опция.
Если какие-либо адреса в сообщении неквалифицированные (не имеют домена), они квалифицируются значением опции qualify_domain или qualify_recipient. Опция -bnq (смотрите ниже) является способом подавить это для особых случаев.
Проверки политик на содержимое локальных сообщений могут быть осуществлены при помощи не-SMTP ACL. Для дополнительных деталей смотрите главу 39.
В случае упешного приёма сообщения, код возврата ноль. Иначе, действием управляет установка опции -oex: смотрите ниже. Формат сообщения должан соответствовать RFC 2822 за тем исключением, что для совместимости с Sendmail и Smail строка в одной из форм:
From sender Fri Jan 512:55 GMT 1997
From sender Fri, 5 Jan 9712:55:01
(опционально с днём недели и, возможно, дополнительным текстом после даты) может присутствовать в начале сообщения. Тут форматом спецификации не описывается эта строка. Exim распознаёт её по совпадению с регулярным выражением, заданным опцией uucp_from_pattern, которая может быть изменена в случае необходимости.
Указанный отправитель обрабатывается, как если бы он давался как параметр опции -f, но если опция -f присутствует, её параметр используется вместо адреса, взятого из сообщения. Вызывающая exim программа должна работать от доверенного пользователя для установки отправителя сообщения.
-bnq: По умолчанию exim автоматически квалифицирует неквалифицированные адреса (то есть, без домена), которые появляются в сообщениях, посылаемых локально (не по TCP/IP). Эта квалификация применяется к адресам конверта и к строкам заголовков. Адрес отправителя квалифицируется с использованием значения опции qualify_domain, а адрес получателя с использованием qualify_recipient (у которой значение по умолчанию qualify_domain).
Иногда квалификация не требуется. Например, если используется -bS (пакетный SMTP) для повторной передачи сообщений, пришедших с удалённого хоста, после контентного сканирования Вы, вероятно, не хотите квалифицировать неполные адреса в строках заголовков. Такие строки будут присутствовать только, если Вы не захотели включить проверку синтаксиса заголовков в соответствующей ACL.
Опция -bnq подавляет всю квалификацию неквалифицированных адресов в сообщениях, приходящих на локальный хост. Когда она используется, неполный адрес в конверте вызывает ошибки (вызывающие отклонение сообщения), а неполные адреса в строках заголовка оставляются как есть.
-bP: Если эта опция даётся без параметров, то она выводит все конфигурационные опции exim на стандартный вывод. Значения одного или нескольких специфических параметров можно запросить, задав их имена как аргументы, например:
exim -bP qualify_domain hold_domains
Однако, любой параметр настройки, которому в конфигурационном файле предшествует слово hide, не показывается полностью никому, кроме административного пользователя. Для других пользователей вывод как в этом примере:
mysql_servers = <value not displayable>
Если configure_file задан как аргумент, выводится имя конфигурационного файла работающей конфигурациию. Если список конфигурационных файлов был задан, выводимое значение: имя реально использующегося файла.
Если дан log_file_path или pid_file_path, выводятся имена каталогов, где пишутся протоколы и pid демона, соответственно. Если эти значения не установлены, протоколы пишутся в субкаталог спула с именем log, а pid-файл пишется непосредственно в каталог спула.
Если опция -bP сопровождается именем с предшествующим ему +, например:
ищется соответствие именованного списка любого типа (доменов, хостов, адресов или локальных частей) и выводится найденное.
Если дано одно из слов router, transport или authenticator, сопровождаемое именем соответствующего драйвера, выводятся параметры настройки этого драйвера. Например:
exim -bP transport local_delivery
Вначале выводятся общие опции драйверов, сопровождаемые частными опциями драйвера. Список имён драйверов специфического типа может быть получен использованием слов router_list, transport_list или authenticator_list, а полный список всех драйверов с их параметрами настройки можно получить, используя routers, transports или authenticators.
-bp: Эта опция запрашивает список содержимого почтовой очереди на стандартный вывод. Если опция -bp сопровождается списком идентификаторов сообщений, то показываются только эти сообщения.
Каждое сообщение очереди отображается как в этом примере:
Первая строка содержит временной отрезок, который сообщение находится в очереди (в данном случае 25 минут), размер сообщения (2,9 kb), уникальный локальный идентификатор сообщения и отправителя сообщения, как содержится в конверте. Для рикошетов адрес отправителя пуст и появляется как <>. Если сообщение послано локально недоверенным пользователем, который изменил адрес отправителя по умолчанию, логин пользователя показывается в круглых скобках перед адресом отправителя.
Если сообщение заморожено (приостановлена попытка его доставки), тогда в конце этой строки показывается текст *** frozen ***. Получатели сообщения (взятые из конверта, а не из заголовков) показаны в последующих строках. Адреса, по которым сообщение уже доставлено, отмечены символом D. Если оригинальный адрес раскрывается в несколько адресов через файл алиасов или форвардов, оригинальный показывается с D только, когда завершены доставки для всех дочерних адресов.
-bpa: Эта опция работает так же, как и -bp, но кроме того, она показывает доставленные адреса, сгенерированные из оригинального адреса верхнего уровня в каждом сообщении при помощи алиасинга или форвардинга. Эти адреса помечены +D вместо просто D.
-bpc: Эта опция подсчитывает число сообщений в очереди и пишет общее количество на стандарный вывод. Пользование этим ключом разрешено только административным пользователям, если queue_list_requires_admin не является ложью.
-bpr: Эта опция работает так же, как и -bp, но вывод не сортируется в хронологическом порядке по прибытию сообщений. Это может ускорить вывод, когда в очереди много сообщений и особенно полезно, если вывод будет обработан способом, не нуждающимся в сортировке.
-bpra: Эта опция является комбинацией -bpr и -bpa.
-bpru: Эта опция является комбинацией -bpr и -bpu.
-bpu: Эта опция работает как -bp, но показывает только недоставленные адреса верхнего уровня для каждого отображённого сообщения. Адреса, сгенерированные алиасингом и форвардингом, не показываются, если сообщение не было задержано после обработки роутером с установленной опцией one_time.
-brt: Эта опция для тестирования правил повторов, и она должна сопровождаться до трёх параметров. Она заставляет exim искать правила повтора, которые совпадают со значением, и вывести их на стандартный вывод. Например:
Смотрите раздел 32 для информации о правилах повторов exim. Первый аргумент, являющийся обязательным, может быть полным адресом в форме local_part@domain или только именем домена. Если второй аргумент содержит точку, он интерпретируется как опциональное второе имя домена, если не найдено правил повтора для первого аргумента, используется второй. Это связано с поведением exim, когда ищется правило повтора для удалённого хоста: если правило не найдено, используется общее совпадение с почтовым доменом. В конце можно дать для использования в правилах повторов параметр, являющийся именем для специфической ошибки доставки. Например:
-brw: Эта опция для тестирования правил перезаписи адресов, и она должна сопровождаться одним аргументом, состоящим из локальной части, без домена, или полным адресом с полным доменом. Exim выводит, как этот адрес был бы перезаписан для каждого возможного места его появления. Для дальнейших подробностей смотрите раздел 31.
-bS: Эта опция используется для пакетного ввода SMTP, который является альтернативным интерфейсом для локальной неинтерактивной передачи сообщений. Можно передавать много сообщений за один запуск. Однако, несмотря на его название, в действительности, это не SMTP-ввод. Exim читает конверт каждого сообщения из SMTP-команд со стандартного ввода, но не генерирует никаких ответов. Если вызывающему доверяют, или установлена опция untrusted_set_sender, то отправителям в командах SMTP MAIL верят. Иначе отправителем всегда будет пользователь, вызвавший exim.
Само сообщение читается из стандартного ввода, содержимое входящих пакетных SMTP-сообщений может быть проверено, используя не-SMTP ACL (смотрите раздел 39). Неквалифицированные адреса автоматически квалифицируются с использованием qualify_domain и qualify_recipient, соответственно, если не используется опция -bnq.
Некоторые другие SMTP-команды распознаются во вводе. HELO и EHLO действуют как RSET. VRFY, EXPN, ETRN и HELP как NOOP. QUIT задает выход, игнорируя остальную часть стандартного ввода.
Если встречается какая-то ошибка, отчёт записывается на стандартный вывод и в потки ошибок, и exim прекращает обработку. Возвращаемый код равен 0, если ошибок не было, 1 если одно и более сообщение было принято до обнаружения ошибки, иначе он 2.
Более подробно об использовании пакетного ввода SMTP рассказано в секции 44. 11.
-bs: Эта опция заставляет exim принимать одно или более сообщений путём чтения SMTP-команд со стандатного ввода и создавать ответы на стандартный вывод. SMTP ACL применяются (смотрите раздел 39). Некоторые пользовательские агенты используют этот интерфейс как способ передать локально сгенерированные сообщения MTA.
В этом использовании, если вызывающему доверяют или установлена опция untrusted_set_sender, то отправителям в командах SMTP MAIL верят. Иначе содержимое этих команд игнорируется и отправителем всегда будет пользователь, вызвавший exim. Неквалифицированные адреса автоматически квалифицируются с использованием qualify_domain и qualify_recipient, соответственно, если не используется опция -bnq.
Опция -bs также используется для запуска exim из inetd, как альтернативу использованию слушающего демона. Exim может различать эти два случая проверяя, является ли стандартный ввод TCP/IP сокетом. Когда exim вызывается из inetd предполагается, что источник почты удалённый, и описанное выше относительно квалификации неполных адресов не применяется. В этой ситуации exim ведёт себя точно так же, как и слушающий демон при приёме сообщения.
-bt:Эта опция запускает exim в режиме тестирования адресов, в котором каждый параметр берётся как адрес, который будет тестироваться на доставку. Результаты пишутся на стандартный вывод. Если тест неудачен, и вызывающий не административный пользователь, детали об ошибке не выводятся, поскольку они могут содержать секретную информацию, типа имён пользователей и паролей для поиска в БД.
Если аргументов не дано, exim запускается в интерактивной манере, запрашивая с правой угловой скобкой адреса для тестирования. В отличие от тестовой опции -be, Вы не можете заставить exim использовать функцию readline(), поскольку он запущен от root, и это вопрос безопасности.
Каждый адрес обрабатыватся, как будто он адрес получателя сообщения (сравните опцию -bv). Он передаётся роутерам, а результат записывается на стандартный вывод. Однако, некоторые роутеры, у которых установлено no_address_test, обходятся. Это может сделать опцию -bt более лёгкой для использования в настоящих тестах роутеров, если первый маршрутизатор передаёт всё программе сканирования.
Код возврата 2, если какой-либо адрес напрямую потерпел неудачу, 1 если никакой адрес не потерпел неудачу напрямую, но по крайней мере один не мог быть разрешён по некоторым причинам. Код возврата 0 даёётся лишь в случае, если все адреса были удачны.
Предупреждение: Опция -bt может сделать только относительно простое тестирование. Если любой из маршрутизаторов проводит тестирование адреса отправителя сообщения, Вы можете использовать опцию -f для установки соответствующего отправителя. Без этого предполагается, что отправитель пользователь, вызывавший программу, квалифицируемый доменом по умолчанию. Однако, если Вы установили (например) маршрутизаторы, поведение которых зависит от содержимого входящего сообщения, Вы не сможете протестировать эти условия с использованием -bt. Опция -N предоставляет один из способов сделать такие тесты.
-bV: Эта опция заставляет exim вывести на стандартный вывод текущий номер версии, номер компиляции и дату компиляции исполняемого файла exim. Также перечисляются используемые DBM библиотеки, опциональные модули (типа специфических типов поиска), драйверы, непосредственно включенные в исполняемый файл, и имя используемого файла конфигурации.
Как часть этой операции -bV заставляет exim читать и проверять синтаксис конфигурационного файла. Однако это лишь статическая проверка. Он не может проверить значения, которые должны быть раскрыты. Например, хотя ACL с орфографическими ошибками находится, ошибки в параметрах не находятся. Вы не можете положиться только на -bV для нахождения всех опечаток (например), необходимо более-менее реалистичное тестирование. Опции -bh и -N предоставляют более реалистичные средства тестирования.
-bv: Эта опция запускает exim в режиме тестирования адресов, в котором каждый параметр берётся как адрес, который будет проверяться. В нормальных условиях проверка обычно происходит обработкой условий verify в ACL (смотрите раздел 39). Если Вы хотите протестировать всю ACL, смотрите опцию -bh.
Если проверка неудачна, и вызывающий не административный пользователь, детали об ошибке не выводятся, поскольку они могут содержать секретную информацию, например, имя пользователя и пароль для доступа к БД.
Если аргументов не дано, exim запускается в интерактивном режиме с приглашением в виде правой угловой скобки, запрашивая адреса для проверки. В отличие от тестовой опции -be, Вы не можете заставить exim использовать функцию readline(), поскольку он запущен от пользователя exim, и это вопрос безопасности.
Проверка отличается от тестирования адресов (опция -bt), к которой роутеры, имеющие no_verify, пропускаются, и если адрес принят роутером, имеющим установленную опцию no_verify, проверка не пройдена. Адрес проверяется как получатель, если используется опция -bv. Для тестирования проверки адреса отправителя должна использоваться опция -bvs.
Если опция -v не задана, вывод состоит из одной строки для каждого адреса, начинающейся с заявления, прошёл адрес проверку или нет. В последнем случае приводится причина. Иначе даётся больше деталей о том, как адрес был обработан. В случае перенаправления адреса все сгенерированные адреса также рассматриваются. Без -v генерируется более одного адреса по перенаправлению, заставляя верификацию завершиться полностью.
Возвращённый код 2, если любой адрес был напрямую неудачен, 1, если нет напрямую неудачных адресов, но по крайней мере один не мог быть разрешён в DNS по каким-либо причинам. Возвращённый код 0, если все адреса успешны.
Если какой-то роутер в конфигурации производит какие-либо тесты для адресов отправителя сообщения, Вы должны использовать опцию -f для установки соответствующего отправителя при запуске тестов с опцией -bv. Без этого предполагается, что отправителем является вызвавший программу пользователь с соответствующим доменом.
-bvs: Эта опция работает как -bv, но проверяет адрес отправителя как адрес получателя. Это затрагивает любую перезапись и квалификацию, которая могла бы произойти.
-C <filelist>: Эта опция заставляет exim находить файл рабочей конфигурации заданного списка вместо списка, определённого CONFIGURE_FILE при компиляции. Обычно список состоит из одного файла, но это может быть и несколько файлов, разделённых двоеточием. В этом случае используется первый существующий файл. Ошибка открытия существующего файла останавливает exim, не давая ему просматривать остальные файлы из списка, и генерируется ошибка.
Когда эта опция используется программой, работающей не от root или пользователя exim, и список отличается от указанного при компиляции, exim сбрасывает свои root-привилегии и выполняется под реальным и эффективным uid и gid пользователя, что его вызвал. Однако, если в Local/Makefile задана опция ALT_CONFIG_ROOT_ONLY, root-права доступа оставляются для опции -C лишь в случае, если вызвавший exim пользователь root.
Таким образом, пользователю exim не даются привилегии в отношении этого. Эта компиляционная опция по умолчанию не установлена в исходном архиве exim. Однако, если Вы используете версию exim из пакетов, то тот, кто собирал программу, мог включить эту опцию.
Установка ALT_CONFIG_ROOT_ONLY блокирует возможность тестирования конфигурации с использованием опции -C через приём и отправку сообщений, даже если вызывающий пользователь root. Приём работает, но к тому времени exim уже работает под своим пользователем, таким образом, когда он перезапускается для восстановления привилегий для доставки, использование -C заставляет привилегии сброситься. Однако, root может тестировать приём и доставку, используя две раздельные команды (одну, чтобы поместить сообщение в очередь, используя -odq, а другую для доставки, используя -M).
Если в Local/Makefile задана опция ALT_CONFIG_PREFIX, это определяет строку префикса, с которой должен начинаться любой файл в строке с -C. Кроме того, имя не должно содержать последовательность /../. Однако, если значение опции -C идентично значению CONFIGURE_FILE в Local/Makefile, exim игнорирует -C и работает как обычно. Настройки по умолчанию для ALT_CONFIG_PREFIX отсутствуют: когда он сброшен, в опции -C может использоваться любое имя файла.
ALT_CONFIG_PREFIX может использоваться, чтобы ограничить альтернативные конфигурационные файлы каталогом, доступ к которому имеет только root. Это не даст тому, кто взломал учётную запись exim привелигированного exim с произвольным конфигурационным файлом.
Средство -C полезно для того, чтобы гарантировать, что конфигурационный файл синаксически корректен, но не может использоваться для тестовых доставок, если у вызвавшего пользователя нет привилегий или в случае экзотической конфигурации, не требующей прав доступа. Проверки пользователя или группы файла, фигурирующего в этой опции не производятся.
-D<macro>=<value>: Эта опция может использоваться для отмены макроопределений, заданных в конфигурационном файле (смотрите раздел 6. 4). Однако, как и -C, если она используется непривелигированным пользователем, она заставляет exim снять свои root-привилегии. Если опция DISABLE_D_OPTION задана в Local/Makefile, использование опции -D полностью заблокировано, а попытка её использования вызывает ошибку и немедленный выход.
Вся опция (включая равно, если оно присутствует) должна быть в пределах одной строки. -D может использоваться для установки значения макрокоманды в виде пустой строки, в этом случае символ равно опционален. Эти две команды синонимичны:
exim -DABC ...
exim -DABC= ...
Для включения пробелов в макроопределения могут использоваться кавычки. Если Вы используете кавычки, пробелы разрешены вокруг имён макрокоманд и символа равно. Например:
exim '-D ABC = something' . ..
Опция -D может быть повторена до 10 раз в одной командной строке.
-d<debug options>: Эта опция заставляет exim писать отладочную информацию на стандартный вывод ошибок. Её использование ограничено административными пользователями, поскольку вывод может показать запросы к БД, содержащие пароли. Кроме того, детали пользовательских фильтров должны быть защищены. Когда используется опция -d, -v включается автоматически. Если задан только -d, выводится много отладочной информации. Количество может быть увеличено или уменьшено, включением некоторой редко используемой информации, путём помещения сразу после -d строки, составленной из имён с предшествующим плюсом или минусом. Этим, соответственно, добавляются или удаляются отладочные данные. Например, -d+filter позвоялет выбрать только отладку фильтра. Обратите внимание, что пробелы не используются. Доступны следующие категории:
acl ACL interpretation
authauthenticators
deliver general delivery logic
dns DNS lookups (see also resolver)
dnsbl DNS black list (aka RBL) code
execarguments for execv() calls
expand detailed debugging for string expansions
filter filter handling
hints_lookuphints data lookups
host_lookup all types of name-to-IP address handling
ident ident lookup
interface lists of local interfaces
lists matching things in lists
loadsystem load checks
local_scan can be used by local_scan() (see chapter 41)
lookup general lookup code and all lookups
memory memory handling
pid add pid to debug output lines
process_infosetting info for the process log
queue_run queue runs
receive general message reception logic
resolverturn on the DNS resolver's debugging output
retry retry handling
rewrite address rewriting
route address routing
timestamp add timestamp to debug output lines
tls TLS logic
transport transports
uid changes of uid/gid and looking up uid/gid
verify address verification logic
all almost all of the above (see below), and also -v
Опция all исключает memory, когда используется как +all, но включает её (в смысле, тоже убирает эту отладку), когда используется как -all. Причина этого в том, что +all то, что люди чаще всего используют для генерации отладки для разработчиков exim. Если включено +memory, вывод будет огромен и он редко представляет интерес, таким образом, теперь его нужно явно затребовать. Однако, -all действительно отключает всё.
Опция resolver создаёт вывод лишь в случае, если DNS-ресолвер был скомпилирован с включенным DEBUG. Это не так на некоторых операционных системах. Также, к сожалению, отладочный вывод DNS-ресолвера пишется на стандартный вывод, а не на стандартный вывод ошибок.
По умолчанию (-d без аргументов) не включает expand, filter, interface, load, memory, pid, resolver и timestamp. Однако, выбор pid принудителен, когда отладка включена для демона, который передаёт её другому, перезапускаясь. Exim также автоматически добавляет pid к строкам отладки, когда параллельно выполняются несколько удалённых доставок.
Опция timestamp причина появления текущего времени в начале всех выводимых строк отладки. Она может быть полезной при попытках найти задержки в обработке.
Если опция debug_print установлена в любом драйвере, он создаёт вывод каждый раз, когда выбрана отладка, даже если опция -v не используется.
-dd<debug options>: Эта опция ведёт себя точно также, как и -d, кроме случаев использования с командой, запускающей процесс демона. В этом случае отладка выключается для всех создаваемых подпроцессов. Таким образом, это может быть полезным для наблюдения поведения демона, не создавая такой же большой вывод, как при полной отладке.
-dropcr: Это устаревшая опция, которая сейчас является пустой командой. Она использовалась для изменения способа обработки exim символов CR и LF во входящих сообщениях. Что происходит сейчас, описано в разделе 43.2.
-E: Эта опция определяет, что входящее сообщение сгенерированный локально отчёт об ошибке доставки. Она используется внутри exim и не предназначена для внешнего использования. Её единственый эффект: останавливать генерацию exim определённых сообщений постмастеру, поскольку в небольшом числе ситуаций могли бы возникнуть каскады сообщений. Как часть этой опции, идентификатор сообщения может следовать за символами -E. Если такое происходит, строка протокола для получателя нового сообщения содержит идентификатор сразу после R= как перекрёстная ссылка.
-ex: Есть множество опций Sendmail, начинающихся с -oe, которые вызываются различными программами без o в опции. Например, программа vacation использует -eq. Exim обрабатывает все опции формы -ex как синонимичные опциям -oex.
-F <string>: Эта опция устанавливает полное имя отправителя, которое используется, когда принимается сгенерированное локально сообщение. В отсутствие этой опции, используется элемент gecos из данных пароля пользователя. Поскольку обычно пользователям разрешено менять их поля gecos, не включены никакие вопросы безопасности. Пробел между -F и <string> опционален.
-f <address>: Эта опция устанавливает адрес отправителя конверта в локально созданных сообщениях. Обычно она может использоваться только доверенными пользователями, но untrusted_set_sender может разрешить её использование недоверенным пользователям.
Процессам, запущенным как пользователь root или пользователь exim, всегда доверяют. Прочие доверенные пользователи задаются опцией trusted_users или trusted_groups. В отсутствии -f, или когда вызывающему не доверяют, отправитель локального сообщения задаётся из имени логина пользователя и квалифицируется доменом по умолчанию.
Есть одно исключение из ограничения на использование -f: пустой отправитель может быть задан любым пользователем, доверенным или нет, для создания сообщения, которое никогда не сможет вызвать срыв. Пустой отправитель может быть указан как пустая строка или как пара угловых скобок без чего-либо между ними, как в этих примерах команд оболочки:
exim -f '<>' user@domain
exim -f "" user@domain
Кроме того, использование -f не ограничено тестированием файлов фильтра с -bf, тестированием или проверкой адресов с использованием опций -bt или -bv.
Разрешение недоверенным пользователям изменять адрес отправителя создаёт возможность отправлять анонимную почту. Exim всё равно проверяет, ссылается ли на локального пользователя заголовок From:, и если это не так, он добавляет заголовок Sender:, хотя и это может быть отменено установкой опции no_local_from_check.
Пробелы между -f и <address> опциональны (то есть, можно давать как два параметра, так и один, объединённый). Отправитель созданного локально сообщения также может быть установлен (когда разрешено) инициалом From строкой в сообщении, смотрите выше примечание к -bm, но если присутствует -f, оно перезаписывает From.
-G: Эта опция Sendmail игнорируется exim.
-h <number>: Эта опция используется для совместимости с sendmail, но не имеет никакого эффекта. В sendmail она перезадаёт счётчик хопов (hop count), получаемый подсчётом заголовков Received:.
-i: Эта опция имеет такой же эффект, как и -oi, задавая, чтобы отдельная точка в строке не завершила входящее не-SMTP сообщение. Я не смог найти документацию по этой опции в sendmail Solaris 2.4, но команда mailx в нём использует эту опцию. Смотрите также -ti.
-M <message id> <message id> …: Эта опция вызывает exim для попытки доставки каждого сообщения по очереди. Если любое из сообщений заморожено, оно автоматически размораживается перед попыткой доставки. Значения queue_domains, queue_smtp_domains и hold_domains игнорируются.
Совпадения повторов для любого из адресов отменяются: exim пробует произвести доставку, даже когда нормальное время повтора не наступило. Эта опция требует, чтобы вызывающий пользователь был административным. Однако, существует опция, называемая prod_requires_admin, которая может быть установлена в ложь для ослабления этого ограничения (и то же самое требуется для опций -q, -R и -S).
Доставки происходят синхронно, то есть, оригинальный процесс exim не завершается, пока не завершатся все попытки доставки. Вывода нет, если нет серьёзных ошибок. Если Вы хотите видеть, что происходит, используйте опцию -v или просматривайте основной протокол exim.
-Mar <message id> <address> <address> …: Эта опция вызывает exim для добавления адреса в список получателей сообщения (ar значит «add recipients»). Первый аргумент должен быть идентификатором сообщения, а последующие адресами e-mail. Однако, если сообщение активно (находится в попытке доставки), оно не изменяется. Эта опция может использоваться только административными пользователями.
-MC <transport> <hostname> <sequence number> <message id>: Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim для вызова собственной копии, чтобы доставить ожидающее сообщение с использованием существующего SMTP-соединения, передавая его через стандартный ввод. Детали даны в разделе 44. Это должно быть последней опцией, и вызывающий пользователь должен быть root или пользователь exim для возможности её использовать.
-MCA: Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim вместе с опцией -MC. Она указывает, что подключение с удалённым хостом аутентифицированное.
-MCP: Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim вместе с опцией -MC. Она указывает, что сервер, к которому подключен exim, поддерживает конвейеризацию.
-MCQ <process id> <pipe fd>: Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim вместе с опцией -MC, когда оригинальная доставка была начата обработчиком очереди. Она передаёт идентификатор процесса обработчика очереди, вместе с номером дескриптора открытого канала. Закрытие канала свидетельствует о завершении последовательности процессов, которые передавали сообщение через то же самое SMTP-подключение.
-MCS: Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim вместе с опцией -MC и передаёт факт, что опция SMTP SIZE должна использоваться на сообщениях, доставляемых через существующее подключение.
-MCT: Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim вместе с опцией -MC и передаёт факт, что хост, с которым связан (с которым установлено соединение) exim, поддерживает шифрование TLS.
-Mc <message id> <message id> …: Эта опция вызывает exim для запуска попытки доставки каждого сообщения по очереди, но, в отличие от опции -M, эта проверяет повторы и использует найденные значения. Эта опция не очень полезна для внешних программ. Она применяется, главным образом, для внутреннего использования exim, когда ему необходимо перевызывать себя, для восстановления root-прав, необходимых для доставки (смотрите раздел 51). Однако, опция -Mc может быть полезной при тестировании доставки, которая использует время повторов, и другие опции, например, hold_domains, которые отменяются при использовании -M. Такая доставка не считается запуском обработчика очереди. Если Вы хотите запустить специфическую доставку, как будто работал обработчик очереди, Вы должны использовать опцию -q с идентификатором сообщения, как аргументом. Различие между доставкой обработчиком очереди и другими доставками состоит в одном или двух местах.
-Mes <message id> <address>: Эта опция вызывает exim для изменения адреса отправителя в сообщении на заданный адрес, который должен быть полностью квалифицированным адресом, или <> (es означает «edit sender»). Обязательно должны быть два параметра. Первый аргумент должен быть идентификатором сообщения, а второй e-mail адресом. Однако, если сообщение активно (находится в процессе попытки доставки), его статус не меняется. Эта опция может использоваться только административными пользователями.
-Mf <message id> <message id> …: Эта опция вызывает exim, чтобы отметить перечисленные сообщения как замороженные (frozen). Этим предотвращаются любые имеющие место попытки доставки, до тех пор, пока сообщение не будет разморожено вручную или в результате конфигурационной опции auto_thaw. Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями.
-Mg <message id> <message id> …: Эта опция вызывает exim, чтобы отменить доставку перечисленных сообщений, включая те, что заморожены. Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Для сообщений, не являющихся рикошетами, сообщение об ошибке доставки шлётся отправителю, содержа текст «отменено администратором» (cancelled by administrator). Рикошеты только отбрасываются. Эта опция может использоваться только административными пользователями.
-Mmad <message id> <message id> …: Эта опция вызывает exim, чтобы пометить все адреса получателей в сообщениях как уже доставленные (mad означает «mark all delivered»). Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями.
-Mmd <message id> <address> <address> …: Эта опция вызывает exim, чтобы пометить заданные адреса как уже доставленные (md означает «mark delivered»). Первый аргумент должен быть идентификатором сообщения, последующие должны быть адресами e-mail. Они совпадают с адресами получателей с учётом регистра. Если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями.
-Mrm <message id> <message id> …: Эта опция вызывает exim, чтобы удалить заданные сообщения из очереди. Рикошеты не шлются: про сообщения просто забывают. Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями или пользователем, изначально поместившим сообщение в очередь.
-Mt <message id> <message id> …: Эта опция вызывает exim, чтобы разморозить перечисленные сообщения, которые заморожены, в итоге попытки их доставить продолжатся. Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями.
-Mvb <message id>: Эта опция выводит на стандартный вывод содержимое тела сообщения (-D) из спула. Эта опция может использоваться только административными пользователями.
-Mvh <message id>: Эта опция выводит на стандартный вывод содержимое заголовков сообщения (-H) из спула. Эта опция может использоваться только административными пользователями.
-Mvl <message id>: Эта опция выводит на стандартный вывод содержимое протокола сообщения из спула. Эта опция может использоваться только административными пользователями.
-m: Эта опция является синонимом для -om, используемой sendmail, таким образом, exim её также обрабатывает.
-N: Это опция отладки, которая запрещает доставку на транспортном уровне. Она подразумевает опцию -v. Exim проделывает все движения (обработки) доставки, лишь не транспортирует сообщение, но вместо этого ведёт себя так, будто успешно произвёл транспортировку. Однако он не производит какие-либо обновления БД повторов, и в протоколах о доставке строки будут содержать флаги *> вместо =>.
Поскольку -N сбрасывает любое сообщение, к которому применяется, только root или пользователь exim разрешается использовать эту опцию с -bd, -q, -R или -M. Другими словами, обычный пользователь может использовать эту опцию только когда предоставляет входящее сообщение к которому будет применена эта опция. Хотя транспортировка никогда не бывает неудачной, при установленной опции -N, адрес может быть задержан из-за конфигурационных проблем транспорта или роутинга. Как только -N используется для попытки доставки, она прилипает к сообщению и применяется для всех последующих попыток доставки сообщения, которые могут быть для него.
-n: Эта опция интерпретируется sendmail как «не производить алиасинг» (no aliasing). Она игнорируется exim.
-O <data>: Эта опция интерпретируется sendmail как «установить опцию» (set option). Она игнорируется exim.
-oA <file name>: Эта опция использкется sendmail вместе с -bi для задания альтернативного имени файла алиасов. Exim обрабатывает -bi иначе, смотрите описание выше.
-oB <n>: Это отладочная опция, которая ограничивает максимальное число сообщений, которые могут быть доставлены по SMTP-соединению, отменяя значение, заданное в любом транспорте smtp. Если <n> отсутствует, ограничение устанавливается в 1.
-odb: Эта опция применяется ко всем режимам, в которых exim принимает входящие сообщения, включая слушающего демона. Она запрашивает фоновую (background) доставку таких сообщений означающую, что принимающий процесс автоматически запускает процесс доставки для каждого полученного сообщения, но не ждёт окончания процесса доставки.
Когда все сообщения получены, принимающие процессы завершаются, оставляя процессы доставки завершаться самостоятельно. Стандартный вывод и поток ошибок закрываются в начале каждого процесса доставки. Это действие по умолчанию, если не задана опция -od.
Если одна из опций организации очереди в конфигурационном файле (queue_only или queue_only_file, например) включена, -odb перезадаёт её, если queue_only_override установлена в истину, что является настройкой по умолчанию. Если queue_only_override установлена в ложь, -odb не имеет эффекта.
-odf: Эта опция запрашивает foreground (синхронную) доставку, когда exim принимает созданные локально сообщения. Для демона это точно так же, как с -odb. Процесс доставки автоматически запускает доставку сообщения, и exim ждёт его завершения до последующей работы.
Оригинальный принимающий процесс exim не завершается, пока процесс доставки сообщения не завершится. Стандартный поток ошибок остаётся открытым в течение доставки.
Однако, как -odb, эта опция не имеет эффекта, если queue_only_override установлена в ложь, и установлена одна из опций организации очереди в конфигурационном файле.
Если происходит временная ошибка доставки во время текущей синхронной доставки, сообщение остаётся в очереди для дальнейшей доставки, и оригинальные процессы приёма завершаются. Смотрите раздел 47 для подробностей о способе установить ограничения конфигурации, чтобы с этой опцией сообщения никогда не ставились в очередь.
-odi: Эта опция синоним -odf. Она присутствует для совместимости с sendmail.
-odq: Эта опция применяется ко всем режимам exim, когда он принимает входящие сообщения, включая слушающего демона. Она определяет, чтобы процесс, принимающий сообщения, не производил автоматический запуск процесса доставки для каждого принятого сообщения. Сообщения кладутся в очередь и остаются там, пока следующий процесс обработчика очереди не обнаружит их. Есть несколько конфигурационных опций (например, queue_only), которые могут быть использованы для постановки входящих сообщений в очередь при определённых условиях. Эта опция отменяет их, а также опцию -odqs. Она всегда вызывает организацию очередей.
-odqs: Эта опция гибридная, между -odb/-odi и -odq. Однако, как -odb и -odi, эта опция не имеет эффекта, если queue_only_override установлена в ложь, и одна из опций организации очереди в конфигурационном файле имеет силу.
Когда -odqs работает, процесс доставки запускается для каждого входящего сообщения по умолчанию в фоновом режиме, но в режиме переднего плана (foreground) только если есть опция -odi. Адреса получателя роутятся, и локальные доставки происходят нормальным способом. Однако, если требуются какие-либо доставки по SMTP, они не завершаюся сразу, таким образом, сообщение остаётся в очереди, пока следующий процесс обработчика очереди не найдёт его. Поскольку роутинг завершён, exim знает, какие сообщения ждут, для каких хостов, таким образом несколько сообщений к одному хосту могут быть посланы в одном SMTP-соединении. Конфигурационная опция queue_smtp_domains имеет такой же эффект для специфических доменов. Смотрите также опцию -qq.
-oee: Если обнаружена ошибка во время получений не-SMTP-сообщения (например, неправильный адрес), об ошибке сообщают отправителю в почтовом сообщении.
Если это сообщение об ошибках успешно отправлено, получающий процесс exim выходит с кодом возврата ноль. Если нет, возвращаемый код 2, если проблема в том, что оригнальное сообщение не имеет получателей, или 1 для любой другой ошибки. Эта опция значение по умолчанию -oex, если exim вызывается под именем rmail.
-oem: Это то же самое, что и -oee за тем исключением, что exim всегда выходит с ненулевым кодом возврата, независимо, были ли ошибки при отправке сообщения или нет. Эта опция значение по умолчанию для -oex, если exim вызывается не под именем rmail.
-oep: Если обнаружена ошибка во время получений не-SMTP-сообщения, об ошибке сообщается путём записи в стандартный файл ошибок (поток ошибок). Возвращаемый код равен единице для всех ошибок.
-oeq: Эта опция поддерживается для совместимости с sendmail, но имеет такой же эффект, как и -oep.
-oew: Эта опция поддерживается для совместимости с sendmail, но имеет такой же эффект, как и -oem.
-oi: Эта опция даёт такой же эффект, как и -i, задавая, чтобы точка в отдельной строке не завершала входящее не-SMTP сообщение. В обратном случае точка в отдельной строке завершает сообщение, хотя exim не производит специальной обработки для других строк, которые начинаются с точки. Эта опция установлена по умолчанию при вызове exim под именем rmail. Смотрите также опцию -ti.
-oitrue: Эта опция обрабатывается как синоним -oi.
-oMa <host address>: Множество опций, начинающихся с -oM, могут использоваться для установки значений, связанных с удалёнными хостами на локально переданных сообщениях (то есть, сообщения, полученные не по TCP/IP). Эти опции могут использоваться любым вызывающим пользователем с тестовыми опциями -bh, -be, -bf, -bF, -bt или -bv. В других обстоятельствах они игнорируются, если вызывающий не является доверенным пользователем.
Опция -oMa устанавливает адрес хоста отправителя. Здесь может использоваться и номер порта в конце после точки. Например:
exim -bs -oMa 10.9.8.7.1234
Альтернативный синтаксис должен включать IP-адрес в квадратных скобках, сопровождаемый двоеточием и номером порта:
exim -bs -oMa [10.9.8.7]:1234
IP-адрес помещается в переменную $sender_host_address и порт, если он есть, в $sender_host_port.
-oMaa <name>: Смотрите выше опцию -oMa для общих сведений о опциях -oM. Опция -oMaa устанавливает значение переменной $sender_host_authenticated (аутентификационное имя). Смотрите раздел 33 для подробностей о SMTP-аутентификации.
-oMai <string>: Смотрите выше опцию -oMa для общих сведений о опциях -oM. Опция -oMai устанавливает значение переменной $authenticated_id (идентификатор аутентификации). Это отменяет значение по умолчанию адреса отправителя (логин вызвавшего пользователя) для сообщений из локальных источников. Смотрите раздел 33 для подробностей об идентификаторах SMTP-аутентификации.
-oMas <address>: Смотрите выше опцию -oMa для общих сведений о опциях -oM. Опция -oMas устанавливает значение аутентифицированного отправителя в переменную $authenticated_sender. Эта опция перезадаёт адрес отправителя, созданный из имени входа пользователя, вызвавшего exim, для сообщений из локальных источников. Смотрите раздел 33 для подробностей об аутентифицированных SMTP-отправителях.
-oMi <interface address>: Смотрите выше опцию -oMa для общих сведений о опциях -oM. Опция -oMi устанавливает значение адреса IP-интерфейса. Номер порта может быть включён с использованием синтаксиса, как для -oMa. Адрес интерфейса помещается в переменную $interface_address и номер порта, если задан, в переменную $interface_port.
-oMr <protocol name>: Смотрите выше опцию -oMa для общих сведений о опциях -oM. Опция -oMr устанавливает значение протокола, по которому получено сообщение в переменную $received_protocol. Однако, это применяется лишь, когда опция -bs не используется. Для интерактивного SMTP ввода (-bs) протокол всегда local, сопровождаемый одним из стандартных имён протоколов SMTP (смотрите примечания о $received_protocol в разделе 11.19). Однако, для опции -bS (пакетный SMTP), протокол может быть установлен в опции -oMr.
-oMs <host name>: Смотрите выше опцию -oMa для общих сведений о опциях -oM. Опция -oMs устанавливает значение имени хоста отправителя в переменную $sender_host_name. Когда эта опция присутствует, exim не пытается найти в DNS имя хоста по IP-адресу: он использует имя, заданное в этой опции.
-oMt <ident string>: Смотрите выше опцию -oMa для общих сведений о опциях -oM. Опция -oMt устанавливает значение ident отправителя в переменную $sender_ident. Значение по умолчанию для локальных вызовов: имя логина, вызвавшего пользователя или процесса.
-om: В sendmail эта опция означает «меня также» (me too) указывая, что отправитель сообщения должен получить копию сообщения, если отправитель появится в результате раскрытия алиасов. Exim всегда так поступает, поэтому эта опция ничего не значит.
-oo: Эта опция игнорируется. В sendmail она задаёт заголовки старого стиля (old style headers) независимо от того, что это значит.
-oP <path>: Эта опция полезна только вместе с опцией -bd или -q со значением времени. Опция задаёт файл, в который записывается pid демона. Когда -oX используется с -bd или когда -q используется со временем, но без -bd, это единственный способ заставить exim записать pid-файл, поскольку в этих случаях pid не используется.
-or <time>: Эта опция устанавливает значение таймаута для входящих не-SMTP сообщений. Если она не задана, exim будет вечно ждать на стандартном вводе. Значение также может быть установлено опцией receive_timeout. Формат, используемый для задания времени, описан в разделе 6.15.
-os <time>: Эта опция устанавливает значение таймаута для входящих SMTP сообщений. Таймаут применяется к каждой SMTP-команде и блоку данных. Значение также может быть установлено опцией smtp_receive_timeout, по умолчанию оно 5 минут. Формат, используемый для задания времени, описан в разделе 6.15.
-ov: Эта опция обладает точно таким же эффектом, как и -v.
-oX <number or string>: Эта опция релевантна, лишь когда используется опция -bd (запуск слушающего демона). Она контролирует, какие порты и интерфейсы использует демон. Детали синтаксиса, и как она взаимодействует с конфигурационным файлом даны в разделе 13. Когда опция -oX используется для запуска демона, pid-файл не пишется, если не задана опция -oP для задания имени pid-файла.
-pd: Эта опция применяется, когда встроенный интерпретатор Perl слинкован с exim (смотрите раздел 12). Она перезадаёт установки опции perl_at_start, вызывая отсрочку запуска интерпретатора, насколько это необходимо.
-ps: Эта опция применяется, когда встроенный интерпретатор Perl слинкован с exim (смотрите раздел 12). Она перезадаёт установки опции perl_at_start, вызывая запуск интерпретатора при старте exim.
-p<rval>:<sval>: Для совместимости с sendmail эта опция эквивалентна
Она устанавливает входящий протокол и имя хоста (для вызывающих доверенных пользователей). Имя хоста и его двоеточие могут быть опущены, лишь когда протокол не задан. Отметтьте, что exim уже имеет две закрытые опции -pd и -ps, ссылающиеся на строенный perl. Поэтому невозможно установить значение протокола p или s используя эту опцию (но это не кажется реальным ограничением).
-q Использование этой опции, обычно, ограничено административными пользователями. Однако, есть конфигурационная опция, называемая prod_requires_admin, которая может быть установлена в ложь для ослабления этого ограничения (и тоже самое требуется для опций -M, -R и -S).
Опция -q запускает один процесс обработчика очереди. Он сканирует очередь ждущих сообщений, и запускает процесс доставки для каждого сообщения, по очереди. Процесс доставки может не производить доставку, если время повтора для адреса не наступило. Используйте -qf (смотрите ниже), если вы хотите отменить это.
Если процесс доставки порождает другие процессы для доставки других сообщений по SMTP-соединениям, обработчик очереди ждёт, пока они завершаться, перед продолжением работы.
Когда все стоящие в очереди сообщения были просмотрены, оригинальный процесс обработчика очереди завершается. Другими словами, делается один проход по ожидающей почте, одно сообщение одновременно. Используйте время с опцией -q (смотрите ниже), если хотите, чтобы просмотр происходил периодически.
Exim обрабатывает ожидающие сообщения в непредсказуемом порядке. Он не очень случаен, но, вероятно, будет разным в каждый запуск. Если одно сообщение портит удалённый MTA, другие сообщения имеют шанс пройти к тому же самому MTA, если они будут первыми при обработке.
Возможно произвести обработку сообщений в лексическом порядке по идентификаторам сообщений, по существу являющимся порядком, в котором они прибыли, установив опцию queue_run_in_order, но это не рекомендуется для нормального использования.
-q<qflags>: Опция -q может сопровождаться одним или несколькими флагами, изменяющими её поведение. Все они являются опциональными, но если присутствует более, чем один, они должны появляться в правильном порядке. Каждый флаг описан отдельным пунктом ниже.
-qq…: Опция, начинающаяся с -qq, запрашивает двухступенчатое выполнение очереди. На первой стадии сканируется очередь, как будто опция queue_smtp_domains совпадает с каждым доменом. Адреса роутятся, происходят локальные доставки, но удалённые транспорты не запускаются.
База данных совпадений, в которой хранится, какие сообщения ждут специфических удалённых хостов, обновляется, как будто доставка на те хосты задержана. После завершения этого, происходит нормальное сканирование очереди с нормальной маршрутизацией и доставкой. Сообщения, которые роутятся на один и тот же хост, в основном, идут через одно SMTP-соединенеие, из-за данных БД совпадений, которые были установлены при первом сканировании очереди. Эта опция может быть полезной для хостов, которые подключаются к интернету периодически.
-q[q]i…: Если флаг i присутствует, обработчик очереди запускает процессы доставки только для тех сообщений, которые до этого не были проверены (имеется в виду, что не было попыток их доставки). i значит «initial delivery». Это может быть полезным, если Вы помещаете сообщения в очередь, используя -odq и хотите, чтобы обработчик очереди обработал именно новые сообщения.
-q[q]f…: Если присутствует один флаг [i]f, попытка доставки вызывается для каждого незамороженного сообщения, тогда как без f пробуются лишь те незамороженные адреса, у которых прошло время повтора.
-q[q]ff…: Если флаг [i]ff присутствует, попытка доставки осуществляется для каждого сообщения, независимо от того, заморожено оно или нет.
q[q][f[f]]l: Флаг [i]l (строчная буква L) определяет, что нужно делать только локальные доставки. Если сообщению требуются удалённые доставки, оно остаётся в очереди для более поздней доставки.
-q<qflags> <start id> <end id>: Когда сканируется очередь, exim может пропустить сообщения, идентификаторы которых лексически меньше, чем значение стартового идентификатора сообщения, следующего за опцией -q. Например:
Сообщения, полученные ранее, чем 0t5C6f-0000c8-00 не просматриваются. Если дан второй идентификатор сообщения, то те сообщения, идентификатор которых лексически больше него, также пропускаются. Если один и тот же идентификатор задан дважды, например:
exim -q 0t5C6f-0000c8-00 0t5C6f-0000c8-00
то процесс доставки запускается только для него. Это отличается от -M, в том, что учитываются данные повторов, и также отличается от -Mc в том, что в обработчике очереди, это засчитывается как доставка. Обратите внимание, что механизм выбора не затрагивает порядок, к котором сообщения сканируются. Есть и другие способы выбрать специфичные наборы для доставки в обработчике очереди смотрите опции -R и -S.
-q<qflags><time>: Когда присутствует значение времени, опция -q заставляет exim работать как демон, запуская обработчик очереди с заданными интервалами времени (чей формат описан в разделе 6.15). Эта форма опции -q обычно комбинируется с опцией-bd, когда один процесс демона обрабатывает обе функции. Общий способ запуска комбинированного демона при загрузке системы заключается в использовании команды типа:
/usr/exim/bin/exim -bd -q30m
Такой демон слушает входящие SMTP-вызовы, а также запускает процесс обработчика очереди через каждые 30 минут.
Когда демон запускается с -q и с параметром времени, но без -bd, pid-файл не записывается, если явно не указана опция -oP.
-qR<rsflags> <string>: Эта опция синоним с -R. Она предусмотрена для совместимости с sendmail.
-qS<rsflags> <string>: Эта опция синоним -S.
-R<rsflags> <string>: <rsflags> может быть пустым в случае, когда пустое место до строки опционально, если строка не f, ff, r, rf или rff, которые являются возможными значениями для <rsflags>. Пробел требуется, если <rsflags> не пустое.
Эта опция похожа на -q, без значения времени, то есть, она заставляет exim выполнить один запуск обработки очереди за исключением того, что, сканируя сообщения в очереди, exim обрабатывает только те, которые имеют хотя бы один недоставленный адрес получателя, содержащий данную строку, проверенную регистронезависимым способом. Если <rsflags> начинается с r, <string> интерпретируется как регулярное выражение, иначе это литеральная строка.
Когда сообщение выбрано, обрабатываются все его адреса. Для первого выбранного сообщения, exim пререзадаёт любую информацию повторов и вызывает попытку доставки для каждого недоставленного адреса. Это означает, что если доставка какого-либо адреса в первом сообщении успешна, любая существующая информация повторов удаляется, и таким образом попытки доставки для этого адреса во впоследствии выбранных сообщениях (которые обрабатываются без форсирования), будут запущены. Однако, если доставка любого адреса неуспешна, информация повторов обновляется, и во впоследствии выбранных сообщениях неудачные адреса будут пропущены.
Если <rsflags> содержит f или ff, принудительная доставка применяется ко всем выбранным сообщениям, а не только к первому; замороженные сообщения включаются, когда присутсвует ff.
Опция -R напрямую создаёт инициализацию доставки всех сообщений для данного домена, после того как хост был недоступен некоторое время. Когда SMTP команда ERTN принимается её ACL (смотрите раздел 39), её эффект по умолчанию: запуск exim с опцией -R, но это может быть изменено для запуска произвольной команды вместо неё.
-r: Это документированное (для sendmail) устаревшее альтернативное имя для -f.
-S<rsflags> <string>: Эта опция работает как -R за исключением того, что, она проверяет строку каждого отправителя сообщения, вместо получателя. Если, также задана опция -R, оба условия должны выполняться для каждого выбранного сообщения. Если опции имеют флаги f или ff, предпринимаются ассоциированные с ними действия.
-Tqt <times>: Эта опция исключительно для набора тестирования exim. Она не распознаётся, когда exim запущен нормально. Она позволяет установку времён очереди (queue times), таким образом могут быть протестированы различные возможности предупреждений/повторов.
-t: Когда exim получает созданное локально не-SMTP-сообщение на стандартный ввод, опция -t заставляет получателей сообщения получить строки заголовков To:, Cc: и Bcc: из сообщения, а не из аргументов команды. Адреса извлекаются до любых перезаписей адресов, а в случае наличия строки Bcc: она удаляется.
Если у команды заданы какие-либо параметры, они задают адреса, по которым сообщение не будет доставлено. Таким образом, аргументы адресов удаляются из списка получателей, полученного из заголовков. Это совместимо со Smail 3 и соответствует документированному поведению некоторых версий sendmail, как описано в man-страницах ряда операционных систем (например, Solaris 8, IRIX 6.5, HP-UX 11). Однако, некоторые версии sendmail добавляют аргументы адресов к полученным из заголовков, книга O’Reilly Sendmail документирует этот способ.
Если есть любой заголовок Resent в сообщении, exim извлекает получателей из всех заголовков Resent-To:, Resent-Cc: и Resent-Bcc: вместо To:, Cc: и Bcc:. Эта опция для совместимости с sendmail и другими MTA. До версии 4.20 exim содержал ошибку: если опция -t использовалась со строкой заголовка Resent.
RFC 2822 говорит о разных Resent-строках заголовков (для случая, когда сообщение пересылалось несколько раз). RFC также определяет, что они должны быть добавлены в начале сообщения и разделены строками Received:. Непонятно, как опция -t должна работать в случае многих наборов (sets), и вообще неясно, что подразумевается под набором (set). Практически, MUA, видимо, не следуют RFC. Строки Resent часто добавляются в конце заголовка, и если сообщение послано более одного раза, часто оригинальный набор заголовков Resent переименовывается в X-Resent, когда добавляется новый набор. Это удаляет любую возможную двусмысленность.
-ti: В точности эквивалентна -t и -i. Она предоставлена для совместимости с sendmail.
-tls-on-connect: эта опция доступна, когда exim скомпилирован с поддержкой TLS. Она вынуждает все входящие SMTP-подключения вести себя, как будто входящий порт перечислен в опции tls_on_connect_ports. См. разделы 13.14 и 38 для дальнейших деталей.
-U: Sendmail использует эту опцию для начальной подачи сообщения (initial message submission), и его документация заявляет, что в будущих версиях он может жаловаться на синтаксически неправильные сообщения, вместо исправления их, когда этот флаг не установлен. Exim игнорирует эту опцию.
-v: Эта опция заставляет exim писать информацию в стандартный поток ошибок описывая, что он делает. В частности, он показывает строки протоколов для приёма и доставки сообщений, и если произведено SMTP-подключение, показывается диалог SMTP. Некоторые показанные строки могут быть не записаны в журнал, если установка log_selector отменяет их. Любые релевантные селекторы показываются с каждой строкой. Если не показыватся ни одна, логгинг безусловен.
-x: AIX использует -x в закрытых целях (почта от локальной почтовой программы имеет расширенные символы National Language Support в теле почтового сообщения). Это устанавливается опцией -x при вызове MTA программой mail. Exim игнорирует эту опцию.
Про XMail в openWrt. Отправка почтовых сообщений из командной строки.
Настройка XMail в openwrt
Мне нужно было научиться отправлять почтовые сообщения из командной строки, проще говоря, нужен был скрипт, который бы отправлял почту на конкретные email при возникновении тех или иных событий.
Конечно, самый простой вариант — это создание почтового ящика на каком-нибудь gmaile и уже с него отправка сообщений на другие адреса. Но, наверное, гораздо красивее, когда коробочка сама от своего имени (без создания электронного адреса на стороннем хостинге) будет рассылать сообщения.
Самый простой способ реализации оказался с использованием Xmail. Не знаю, возможно существуют и более простые варианты решения данной задачи, но мне они неизвестны и поэтому здесь ниже кратко описываю, как с помощью Xmail отсылать почту из командой строки в openWrt.
Устанавливаем через make menuconfig пакет XMail.
Не знаю почему так, но после сборки openwrt в папочке /etc будет лежать некий архив MailRoot.tar.bz2, который как бы нужен для работы xmail. Поэтому следует его распаковать, видимо, но опять же. куда это сделать? Пусть будет папочка www для этой цели.
Т.е. создаем в www директорию MailRoot и туда помещаем содержимое архива.
Далее открываем файл /etc/config/xmail и видим там строки:
config xmail
option mail_root '/var/MailRoot'
эти строки нам говорят, что директория www, куда мы распаковали архив, не совсем чтобы и верный выбор. Но раз уж выбрали директорию www, то и меняем эту строчку так:
config xmail
option mail_root '/www/MailRoot'
Попробуем отправить письмецо. Делается это с помощью утилиты sendmail, входящей в состав xmail. Для sendmail нужен файл в определенном формате. Для примера создадим файл с письмом в /home/email.example:
From: box1@openwrt
To: [email protected]
Subject: test email from openwrt
hi
this is openwrt xmail.
bye!
Письмо должно быть в почтовом ящике [email protected]. Правда есть одно "НО", если ваш ip-адрес будет в черном списке, то письмо будет отброшено сервером и не попадет в почтовый ящик.
Отправка почты в openWrt с использованием стороннего почтового сервиса.
Другой способ отправки почты в openwrt из консоли, но уже средствами стороннего почтового сервиса, используя протокол SMTP.
Чтобы её исправить, нужно перейти по ссылке: https://www.google.com/settings/security/lesssecureapps
и выбрать "Включить" в меню "Доступ к аккаунту" с непроверенных приложений.
Если необходимо письмо формировать динамически и без использования файлов, то командная строка может выглядеть так:
local email_cmd="ssmtp -t <<EOF\
From: \
To: \
Date: info\
Subject: сообщение ПУИД\
%s\
EOF"
16 примеров команд для отправки электронной почты из командной строки Linux
Независимо от того, являетесь ли вы разработчиком, непрерывно работающим с командной строкой Linux, или администратором сервера, которому нужны журналы или другие данные, извлеченные из администрируемых систем, и знающие, как отправлять электронную почту с помощью команды линия очень полезна.
В этом посте вы найдете примеры отправки электронной почты с терминала. Мы рассмотрим пользовательские конфигурации и коснемся того, как настроить SMTP-подключения к учетным записям электронной почты или поставщикам услуг электронной почты.Я покажу вам, как установить необходимые пакеты почтовой программы консоли, и предоставлю справочную информацию о параметрах командной строки на основе руководств по пакету.
Настройка пакетов почтовой программы командной строки
Все пакеты почтовой программы в руководстве доступны через расширенный диспетчер пакетов Debian, поэтому шаги установки в приведенном ниже примере можно использовать для всех представленных пакетов.
Обратите внимание, что эти части программного обеспечения могут быть установлены другими менеджерами пакетов по умолчанию, такими как yum или dnf , в зависимости от вашего дистрибутива Linux.
В большинстве случаев либо sendmail , либо postfix доступны в каждом дистрибутиве Linux из коробки, или, по крайней мере, об этом говорится в аналогичных сообщениях в блогах. Либо мне не повезло, либо другие ошибались, но мне пришлось установить один вручную. Однако один из них вам определенно понадобится для доставки электронной почты.
Настройка Sendmail с пакетом SSMTP
Я продолжу с sendmail и пакета SSMTP. SSMTP содержит пакет sendmail под капотом, как вы увидите, и он упрощает настройку, что в противном случае довольно сложно для sendmail .
Шаг 1. Проверьте, установлен ли пакет почтовой программы командной строки
Введите имя пакета почтовой программы точно так же, как вы бы запустили команду, чтобы проверить, доступна ли она:
Если пакет установлен, команда запускается, и приглашение изменяется — при попытке выполнить команду — и вы увидите мигающий курсор, за которым следует сообщение Имена получателей должны быть указаны в случае sendmail . Вывод: пакет установлен.
Если пакет НЕ установлен, вы получите предупреждающее сообщение и предложение, как его установить:
$ sendmail
Программу sendmail можно найти в следующих пакетах:
* exim4-демон-тяжелый
* exim4-демон-свет
* постфикс
* цитадель-мта
* курьер-мта
* дма
* esmtp-run
* masqmail
* мсмтп-мта
* nullmailer
* opensmtpd
* qmail-run
* sendmail-bin
* ssmtp
Попробуйте: sudo apt install
В этом примере я попробовал, работает ли команда sendmail .После добавления пакета SSMTP эта команда и команда ssmtp будут работать и изменять командную строку в терминале. Посмотрим на это!
Шаг 2. Установка пакета почтовой программы командной строки Sendmail
Как следует из вывода терминала, нам нужно запустить команду установки Advanced Package Manager — обычно с правами root — для установки необходимого пакета. Как упоминалось ранее, конфигурации для sendmail намного проще, если абстрагироваться от сложности конфигурации.Это можно сделать с помощью SSMTP:
sudo apt установить ssmtp
Шаг 3. Проверьте установку
После завершения установки вы можете проверить, может ли sendmail пересылать сообщения. Введите в терминал приведенный ниже код:
Он должен отправить электронное письмо, если все работает правильно. Здесь строка "hello", , переданная по конвейеру команде sendmail , будет темой отправленного сообщения, в то время как определенный адрес электронной почты, естественно, является получателем электронной почты.
Вы запускаете команду … и, ой: sendmail: Не удается открыть mailhub: 25 . Причина в том, что мы вообще не предоставляли настройки mailhub. Для пересылки сообщений вам потребуется настроенный SMTP-сервер. Вот где SSMTP работает действительно хорошо: вам просто нужно один раз отредактировать его файл конфигурации, и все готово.
Шаг 4. Настройка SSMTP
Давайте разместим файл конфигурации по адресу /etc/ssmtp/ssmtp.conf . Здесь вы должны ввести приведенный ниже код для настройки SMTP-реле:
Это означает, что вы настроили внешнюю службу, которая будет пересылать ваших электронных писем. Например, когда вы вводите учетные данные для Gmail, вы увидите сообщения, отправленные с терминала, в каталоге «Отправленные» вашего почтового ящика. Конфигурации схожи и с другими сервисами.
Это была базовая конфигурация для sendmail и шаги установки для любого часто используемого пакета почтовой программы командной строки.Затем мы перейдем к установке и опробуем различные другие пакеты.
Отправка электронной почты с помощью команды SSMTP
Это симпатичный маленький инструмент, который мы только что настроили для доставки почты. Как следует из страницы man , это минималистичный эмулятор sendmail . Таким образом, SSMTP позволяет пользователям передавать электронные письма через SMTP-сервер из командной строки Linux. Он предоставляет средства для подключения к почтовому хабу с соответствующим файлом конфигурации. Если ваш файл конфигурации был настроен правильно, все ваши заботы об отправке электронной почты из командной строки могут исчезнуть.
Базовая реализация команды SSTMP:
Если вы просто используете SSMTP, команда должна выглядеть следующим образом:
После команды ssmtp вы должны ввести адрес получателя, а затем вы можете включить файл, который будет отображаться в теле письма. Здесь вы можете определить заголовки для сообщения, перечислить других получателей и установить тип содержимого. Таким образом вы можете отправлять электронные письма в формате HTML.SSMTP интерпретирует ваше сообщение и правильно использует предоставленные значения. Вот пример HTML-кода, который вы можете отправить:
Копия: [email protected]
Тема: Это электронное письмо в формате HTML
От: [email protected]
Тип содержимого: текст / html; charset = "utf8"
html>
Вы можете добавить сюда любой действующий HTML-код электронной почты.