Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

сети:решение_проблем_с_очередью_отправляемой_почты_в_postfix [2014/01/05 11:36] (текущий)
Строка 1: Строка 1:
 +====== решение проблем с очередью отправляемой почты в postfix ======
 +Применимость:​ Linux, Postfix
 +
 +Слова для поиска: ​
 +----
 +===== Задача:​ =====
 +Как решить проблемы с отправкой почты?
 +===== Решение:​ =====
 +Для выявления проблем можно использовать различные средства.
 +
 +==== Инструменты ====
 +
 +
 +  * **mailq** – утилита для просмотра списка сообщений,​ находящихся в почтовых очередях.
 +
 +  * **postsuper** – утилита обслуживания почтовых очередей. Одним из применений является удаление какого-либо сообщения или повторная установка его в очередь на доставку. ​
 +  * **postqueue** также создана для управления очередями. ОТличие от **postsuper** в том, что для работы c postsuper требуются права root, а для postqueue таких широких полномочий не нужно, хотя за счет этого теряется часть функционала.
 +
 +  * **postcat** – утилита,​ позволяющая посмотреть содержимое файла почтовой очереди.
 +
 +  * **pfqueue** - [[http://​manpages.ubuntu.com/​manpages/​gutsy/​man8/​pfqueue.8.html|консольная утилита управления очередью]]
 +
 +{{:​сети:​p_254.png?​300|}}
 +
 +  * **pflogsumm** - cкрипт [[http://​www.howtoforge.com/​mail_statistics_mailgraph_pflogsumm|сбора статистики]]
 +
 +==== Примеры команд и командных конструкций:​ ====
 +
 +Инициировать немедленную доставку:​
 +
 +  postsuper -r ALL; postfix flush
 +
 +Толкнуть ​ конкретное письмо по ID:
 +
 +  postsuper -r ID
 +
 +Удалить письмо по ID:
 +
 +  postsuper -d ID
 +
 +Инициировать внеплановый процесс отправки сообщений,​ присутствующих в очереди:​
 +   ​postqueue -f
 +
 +Показать содержимое очереди:​
 +   ​postqueue -p
 +
 +Показать всех получателей,​ кому письма не были доставлены ​
 +  for i in `find /​var/​spool/​postfix/​defer/​ -type f`; do cat $i | grep recipient | sed 's/=/ /' | awk '​{print $2}'; done | sort | uniq
 +
 +Просмотреть размеры очередей Postfix
 +  for i in active bounce corrupt defer deferred flush hold incoming maildrop public saved trace; do echo -n "$i "; find "/​var/​spool/​postfix/​$i"​ | wc -l; done
 +
 +
 +Инициировать доставку накопившихся в очереди сообщений для домена test.ru:
 +   ​postqueue -s test.ru
 +
 +Просмотр отдельного сообщения:​
 +
 +  postcat -q 5C4F468EC41 | less
 +
 +
 +Очистить из очереди домены по заданной маске:
 +   ​mailq| ./​agr_mailq.pl|grep -E '​MAILER-DAEMON|yahoo|\.de|\.fr|\.it|\.ch'​|awk '​{print $1}'\
 +     | tr -d '​*!'​|xargs ​ -J{} -n1 postsuper -d {} deferred
 +   ​mailq| ./​agr_mailq.pl|grep -E '​MAILER-DAEMON|yahoo|\.de|\.fr|\.it|\.ch'​|awk '​{print $1}'\
 +     | tr -d '​*!'​|xargs ​ -J{} -n1 postsuper -d {}
 +
 +где agr_mailq.pl скрипт следующего содержания:​
 +<​code>​
 +   #​!/​usr/​bin/​perl
 +   my $cur_line="";​
 +   ​while(<>​){
 +       ​chomp();​
 +       if (/​^[\w\d\*]+\s+\d+/​){
 +           print "​$cur_line\n";​
 +           ​$cur_line=$_;​
 +       } else {
 +           ​s/​\s+//​s;​
 +           ​$cur_line .= "​\t"​ . $_;
 +       }
 +   }
 +
 +</​code>​
 +
 +Отфильтровать и удалить из очереди только сообщения на 5 и более адресов разом:
 +   mailq |./​agr_mailq_big.pl| tr -d '​*!'​|xargs ​ -J{} -n1 postsuper -d {}
 +
 +где agr_mailq_big.pl:​
 +<​code>​
 +   #​!/​usr/​bin/​perl
 +   my $cur_line="";​
 +   my $counter=0;
 +   ​while(<>​){
 +       ​chomp();​
 +       if (/​^[\w\d\*]+\s+\d+/​){
 +           if ($counter >= 5){
 +               print "​$cur_line\n";​
 +           }
 +          $cur_line=$_;​
 +           ​$counter=0;​
 +       } else {
 +           ​s/​\s+//​s;​
 +           ​$cur_line .= "​\t"​ . $_;
 +           ​$counter++;​
 +       }
 +   }
 +</​code>​
 +Посмотреть список доменов в очереди и число сообщений для них:
 +   mailq |./​agr_mailq.pl |awk '​{print $7}'​|cut -d'​@'​ -f2|sort|uniq -c|sort -r -n
 +
 +Записав такие домены в файл, можно вручную отсеять нормальные домены и затем
 +разом удалить мусор из очереди:​
 +
 +   ​mailq| ./​agr_mailq.pl|grep -f ./​spamdomains.list |awk '​{print $1}'\
 +      | tr -d '​*!'​|xargs ​ -J{} -n1 postsuper -d {}
 +
 +
 +
 +Удаление группы писем от определенного FROM (на примере MAILER-DAEMON):​
 +
 +  FreeBSD:
 +  mailq | grep '​MAILER-DAEMON'​ | awk '​{print $1}' | xargs -I{} -n1 postsuper -d {}
 +  Linux:
 +  mailq | grep '​MAILER-DAEMON'​ | awk '​{print $1}' | xargs -I{} -n1 /​usr/​sbin/​postsuper -d {}
 +
 +Удаление группы писем от определенного FROM в статусе REQUIRE:
 +
 +  mailq | grep '​MAILER-DAEMON'​ | awk '​{print $1}' | tr -d '​*'​ | xargs -I{} -n1 postsuper -d {}
 +
 +==== Проблемы по файловой системе ====
 +
 +Вы [[http://​archives.neohapsis.com/​archives/​postfix/​2006-01/​1916.html|можете обнаружить неожиданные проблемы]] если будете использовать для монтирования файловой системы опции noexec и noatime с целью укрепления защиты системы.
 +
 +Учитывайте,​ что Postfix не сможет корректно управлять очередью при использовании этих опций.
 +
 +Проверьте где у вас расположена очередь сообщений и обеспечьте монтирование монтирование файловой системы с этой директорией без этих опций. ​
 +
 +  postconf queue_directory
 +   ​queue_directory = /​var/​spool/​postfix
 +
 +Или измените директорию командами:​
 +  mv /​var/​spool/​postfix /home/
 +  postconf -e queue_directory=/​home/​postfix
 +  service postfix restart
 +
 +
 +Если вы используете опцию noexec для /tmp, то при выполнении ​
 +  dpkg-reconfigure postfix
 +Вы можете получить сообщение об ошибке наподобие этого:
 +  Preconfiguring packages ...
 +  Can't exec "/​tmp/​postfix.config.49981":​ Permission denied at /​usr/​share/​perl/​5.10/​IPC/​Open3.pm line 168.
 +  open2: exec of /​tmp/​postfix.config.49981 configure 2.5.5-1.1 failed at /​usr/​share/​perl5/​Debconf/​ConfModule.pm line 59
 +
 +Временно перемонтируйте /tmp без noexec, после успешного завершения dpkg-reconfigure можно вернуть все обратно ​
 +
 +
 +===== Смотрите также: =====
 +  * [[сети:​почтовые_серверы_отвергают_мою_почту|]]
 +  * [[http://​carantin2006.narod.ru/​postfix/​postfix/​|Документация к Postfix на русском]]
 +  * [[http://​www.opennet.ru/​tips/​info/​2227.shtml|Примеры управлением очередью сообщений в Postfix]]
 +  * [[http://​www.stableit.ru/​search/​label/​Postfix|Цинизм в IT:​Postfix]]
 +  * [[http://​www.howtoforge.com/​mail_statistics_mailgraph_pflogsumm|Postfix Monitoring With Mailgraph And pflogsumm]]
 +  * [[http://​www.postfix.org/​faq.html|Postfix Frequently Asked Questions]]
 +
 +
 +---- 
 +Актуальность:​ 2014/01/05 11:01 
 +{{tag>​почта postfix советы}}