Cygal.net.pl

Systemy, Sieci i takie tam :)

Zarządzanie kolejką maili w serwerze postfix

Postfix posiada dwie ważne z naszego punktu widzenia kolejki Active oraz Deferred. Poniżej przedstawię kilka przydatnych komend podczas analizowania i rozwiązywania problemów z pocztą działającą w oparciu o Postfix

Zacznijmy od komendy qshape komenda ta wyświetla kształt aktywnych maili. Najlepiej żeby po wydaniu komendy qshape wynik był zbliżony do poniższego . Oznacza to że postfix wysyła maile na bieżąco bez żadnych opóźnień.

qshape

T 5 10 20 40 80 160 320 640 1280 1280+
TOTAL 0 0 0 0 0 0 0 0 0 0 0

Jeżeli z jakiś powodów wysyłka maili jest opóźniona mail trafia do kolejki Deferred

qshape deferred

T 5 10 20 40 80 160 320 640 1280 1280+
TOTAL 5 0 0 0 0 0 0 0 0 0 5
onet.pl 4 0 0 0 0 0 0 0 0 0 4
poczta.fm 1 0 0 0 0 0 0 0 0 0 1

Jeżeli widzimy że maile są opóźnione tylko do jednej albo kilku domen. Sprawdźmy czy możemy się w ogóle połączyć z naszego serwera to wskazanych domen. Użyj np.: ping domena.pl, traceroute domena.pl, dig domena.pl MX. telnet domena.pl 25 itp. Jeżeli jest problem z połączeniem do danej domeny znamy juz przyczynę dlaczego maile znalazły sie w kolejce Deferred.
Zęby sprawdzić czy jakieś maile znajdują się w kolejce postfixa możemy skorzystać z komend mailq oraz postqueue –p (polecenia wyświetlają zawartość kolejki active jak i deferrer)
W wyniku powyższych komend powinniśmy zobaczyć coś na wzór poniższego.

-Queue ID- –Size– —-Arrival Time—- -Sender/Recipient——-
2FC8824A17 10588 Thu Apr 19 14:52:41 from.me@example.com
(connect to alt2.gmail-smtp-in.l.google.com[74.125.79.26]:25: Connection timed out)
some.user@gmail.com
— 16 Kbytes in 2 Requests.

Jak widać każda wiadomość w kolejce posiada unikalne ID wiadomości (2FC8824A17) aby przeczytać wiadomość z kolejki skorzystamy z komendy postcat

postcat –q 2FC8824A17

lub

postcat –qv 2FC8824A17

Powyższe komendy wyświetla maila włącznie z nagłówkami . Przełaczkik ‘v’ włącza większą szczegółowość zwracanych danych.

W celu próby wysłania wiadomości znajdującej się w kolejce skorzystamy z polecenia postqueue

postqueue –i 2FC8824A17

należałoby również włączyć podgląd logów podczas próby odsyłania wiadomości z kolejki, gdyż istnieje możliwość, że wiadomość ponownie trafi do kolejki. W tedy od razu będziemy widzieć przyczynę w naszym logu. I możemy podjąć probę naprawy. Warto pamiętać iż w przypadku gdy wiadomość ponownie trafi do kolejki jej ID nie ulegnie zmianie. Ja najczęściej korzystam z polecenia

tail –f /var/log/mail.{err,log}

Jak sprawdzić ilość maili w naszej kolejce? poniższy przykład ilustruje taka operacje.

postqueue -p | tail -n1 | cut -d’ ‘ -f5

Co zrobić jeżeli w naszej kolejce jest dużo wiadomości i chcielibyśmy je odesłać wszystkie naraz? Skorzystamy ponownie z postqueue tym razem z przełącznikiem -f

postqueue -f

Czasami po analizie maili znajdujących się w kolejce deferred okazuje się ze wiadomości nie mogą zostać dostarczone gdyż zostały wysłane na nie istniejący adres email. Wówczas możemy usunąć taka wiadomość lub widomości z kolejki za pomocą komendy postsuper.

W przypadku pojedynczego maila:

postsuper –d 2FC8824A17

gdy chcemy natomiast usunąć całą kolejkę :

postsuper –d ALL deferred

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


Time limit is exhausted. Please reload CAPTCHA.