Различия

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

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

сети:решение_проблем_с_очередью_отправляемой_почты_в_postfix [2014/01/05 11:36]
сети:решение_проблем_с_очередью_отправляемой_почты_в_postfix [2022/04/01 15:08] (текущий)
Строка 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 советы}}