|
|||||||
|
Exim
Время создания: 03.12.2010 18:20
Текстовые метки: exim, очередь
Раздел: Шпаргалки
Запись: balas1/mytetra/master/base/0000003249/text.html на raw.githubusercontent.com
|
|||||||
|
|
|||||||
|
Командная строка Exim'а использует стандартный для Unix-систем способ задания опций. Каждая начинается с дефиса, после каждой может следовать несколько аргументов. Опции совместимы с основными опциями Sendmail и частично Smail. Количество опций Exim'а просто огромно. В данной статье перечислены и описаны только прикладные, полезные для администрирования уже настроенной и работающей почтовой системы среднего по масштабам почтового сервера. Для некоторых опций приведены примеры эффективного использования. > exim -d отладка. Крайне полезная опция. Специально начал с нее, потому что её можно комбинировать с любыми другими. Например exim -bd -d запускает exim как демон, выводя на консоль всю отладочную информацию. Чтобы уменьшить количество выдаваемой информации, можно использовать -dd (имеет смысл только с -bd) пропускает информацию по подпроцессам. Или -v, простое описание того, что делает exim (при использовании -d включена по умолчанию). На самом деле, эта опция гораздо сложнее чем кажется (вообще одна из самых сложных у Exim'а), можно включать и выключать целую кучу информации по категориям, но об этом уже в документации (см. Ссылки ниже). > exim -bP выводит все значения установленные в конфиге. У этой команды тоже есть куча параметров, но дефолтное использование + grep достаточно в 90% случаев. > exim -bp запрашивает список содержимого почтовой очереди на стандартный вывод. Вывод сортируется в хронологическом порядке по прибытию сообщений. Если опция сопровождается списком идентификаторов сообщений, то показываются только эти сообщения. Это одна из важнейших опций exim'а, вернее это даже не одна опция, а целый класс. Рассмотрим их подробнее. Каждое сообщение отображается примерно так 25m 2.9K 0t5C6f-0000c8-00 <alice@wonderland.fict.example.> red.king@looking-glass.fict.example <other addresses> Первая строка содержит 4 колонки: сколько сообщение находится в очереди, размер сообщения, ID сообщения, отправитель, как он указан в "конверте" (для баунсов "<>"). Если сообщение заморожено (приостановлена попытка его доставки), в конце этой строки показывается текст "*** frozen ***". Получатели сообщения (взятые из конверта, не из заголовков) показаны в последующих строках. Адреса по которым сообщение уже доставлено отмечены символом "D". Если оригинальный адрес раскрывается в несколько адресов через файл альясов или форвардов, оригинальный показывается с "D" только когда завершены доставки для всех дочерних адресов. > exim -bpc выводит общее количество сообщений в очереди. > exim -bpr идентична -bp, но вывод не сортируется. Полезно, когда в очереди много сообщений, а сортировка совсем не нужна (например для передачи exiqsumm). > exim -bV кроме того, что выдает версию и некоторую информацию о бинарнике, проверяет exim.conf на ошибки (А скорее, на опечатки. Если эта опция говорит, что все хорошо, то это еще не значит, что ВСЁ хорошо). У опций вывода очереди есть еще некоторые комбинации предназначенные для отделения и отсеивания форвардинга и алиасинга, но здесь я их рассматривать не буду. Дальше две очень важные опции, которые должны знать все веб-программисты, но почти никто из них не использует (и, видимо, не знает), а потом удивляются, почему их письма с сайта падают в спам. Опции управляют некоторыми полями "конверта" сообщения составленного локально (в наше время, в 99 случаях из 100, это сообщения составленные скриптами). > exim -F <string> устанавливает имя отправителя. Если опция не указана, подставляется значение поля "gecos" из данных пароля пользователя. > exim -f <address> устанавливает адрес отправителя. Обычно, она может использоваться только доверенными пользователями, но директива "untrusted_set_sender" может разрешить её использование недоверенным пользователям. Если не понятно, в чем разница между опциями, объясню: приходит письмо от Vasya Pupkin <admin@server.ru.>. Vasya Pupkin - это имя отправителя (опция -F) admin@server.ru - адрес (опция -f) Относительно доверенных/недоверенных пользователей, если кто не в курсе. Пользователю root и пользователю exim'а (это не обязательно пользователь exim) доверяют всегда. Остальных можно задать в конфиге директивами "trusted_users" и "trusted_groups". Если "-f" не определена, или определена пользователем, которому не доверяют, отправитель как логин_пользователя@домен.по.умолчанию (определяется директивой qualify_domain, если не определена используется hostname сервера). Существует исключение из этого ограничения: пустой отправитель может быть задан любым пользователем. Пустой отправитель может быть указан как пустая строка, или как пара угловых скобок без чего-либо между ними: exim -f '<>' user@domain exim -f "" user@domain При чем же здесь программисты? В отношении php приведу такой пример "правильного" кода (кстати, взято из официальной документации к PHP) <?php mail('nobody@example.com', 'the subject', 'the message', null, '-fwebmaster@example.com'); ?> Есть другие способы определять заголовки средствами PHP, но это статья не о PHP. Дальше вероятно самый важный "класс" опций для администрирования почтового сервера. Опции управления сообщениями. > exim -Mvl <message id> Посмотреть лог сообщения > exim -Mvb <message id> Посмотреть тело сообщения > exim -Mvh <message id> Посмотреть заголовки сообщения > exim -Mrm <message id> ... Удалить сообщения и не посылать никаких ошибок (в логах упоминание будет). > exim -Mg <message id> ... Удалить сообщение и отослать отлуп (cancelled by administrator). > exim -M <message id> ... Ускорить доставку для сообщения с данным messageID (безусловно немедленно доставляет сообщение) > exim -Mar messageID <address> <address> ... Добавить адрес в список получателей сообщения. > exim -Mes <message id> <address> Изменить адрес отправителя в сообщении на заданный адрес. > exim -Mf <message id> <message id> ... Отметить перечисленные сообщения как "frozen". Любые попытки доставки прекращаются, пока сообщение не будет разморожено вручную, или пока не пройдет время указанное в "auto_thaw". > exim -Mt <message id> <message id> ... "разморозить" сообщение. > exim -Mmad <message id> <message id> ... пометить все адреса получателей в сообщениях как уже доставленные. Никогда (!) не надо так делать. Сами же запутаетесь. > exim -Mmd <message id> <address> <address> ... пометить заданные адреса как уже доставленные. Адреса регистрозависимы. Вот это уже полезнее, если какие-то адреса недоступны. Если сообщение находится в состоянии "попытки доставки", следующие опции на него не повляют: -Mrm, -Mg, -Mar, -Mes, -Mf, -Mt, -Mmad, -Mmd. Для сообщений, которые подозреваются в спаме удобно сначала массово, сделать -Mf, потом -Mvl, -Mvh и -Mvb для пары выбранных наугад сообщений. Если все еще невозможно с консоли определить спам ли это (например, проблемы с кодировками или есть вложения), то можно с помощью -Mar добавить себя в список получателей, и ускорить данное сообщение с помощью -M. Когда все наконец станет ясно, то либо -Mrm, либо -Mt. > exim -q просто запускает один процесс обработчика очереди; очередь сканируется и сообщения доставляются в том, порядке в котором бы доставлялись обычно (вообще, порядок случаен, здесь имеется ввиду, что учитываются все заморозки и т. п.). Для каждого процесса обработчика очереди одно SMTP соединение (это справедливо для всех опций этого класса). После одного прохода по сообщениям процесс завершается (т.о. сообщения, у которых не подошло время доставки даже не попытаются доставиться), если не указана опция (см. ниже). Опция -q имеет флаги. Её использование таково exim -q<qflags><time> Это значит, что вы можете комбинировать её разновидности (в отличие, от, например -M, где вы НЕ можете указать -Mvlhb, чтобы просмотреть и логи, и заголовки, и тело сообщения). Тем не менее, флаги должны быть указанны в правильно порядке. > exim -qq... двухступенчатое выполнение очереди. При первой обработке очереди опция "queue_smtp_domains" принимается как совпадающая с каждым доменом. Адреса роутятся, происходят локальные доставки, но удалённые транспорты не запускаются. Во время второй обработки происходит нормальное сканирование очереди. Плюс такого способа в том, что те сообщения которые роутятся на один и тот же хост, в основном, идут через одно SMTP-соединение, на основе БД совпадений, которые были установлены при первом сканировании очереди. > exim -q[q]i... если присутствует флаг i то доставляются только те сообщения, для которых еще не было попытки доставки. > exim -q[q]f... если присутствует флаг f, доставляются любые незамороженные сообщения (независимо от того, пришло их время повтора или нет). > exim -q[q]ff... то же что и f, но замороженные сообщения тоже доставляются. > exim -q[q][f[f]]l l определяет, что нужно делать только локальные доставки (остальные сообщения, разумеется, остаются в очереди). Значение time идет после всех флагов. Он определяет промежуток времени, через который будет повторяться заданная обработка очереди. Например: exim -ffl10m Предпринимать попытку доставить любое (включая замороженные) сообщение, требующее локальной доставки каждые 10 минут (очень полезно, когда очередь забита всякой дрянью, которую нельзя удалить и из-за которой нормальные люди не могут получить письма). /usr/exim/bin/exim -bd -q30m А так можно запустить демона, который будет обслуживать входящие соединения и обрабатывать очередь каждые 30 минут (собственно штатные средства ОС, его примерно так и запускают). |
|||||||
|
|||||||
|
|||||||
|