Przejdź do końca metadanych
Przejdź do początku metadanych

Obsługa kolejki

Moduł wysyła e-maile odczytując je z kolejki, która może być albo katalogiem na dysku (tak będzie w przypadku baz SOWA1 i SOWA2) albo tabelą w bazie danych (w przypadku SOWASQL).

Kolejki w katalogu na dysku

Każda baza SOWY posiada niezależne kolejki.

W przypadku systemu SOWA1: /home/sowa/sowa1/katalogi/nazwa_bazy/var/spool/mail/
W przypadku systemu SOWA2: /home/sowa/sowa2/katalogi/nazwa_bazy/var/spool/mail/

Serwery aplikacji (lub inne programy, które chcą wykorzystać mechanizm smailera do wysyłania poczty) w katalogu tym umieszczają pliki XML (koniecznie o unikalnej nazwie) o takiej konstrukcji:

Przykładowy plik w kolejce
<?xml version="1.0" encoding="UTF-8"?>
<list>
	<item>
		<fld_time>17.10.2011 00:00:11</fld_time>
		<fld_sender>foo@example.com</fld_sender>
		<fld_address>boo@hisorhermail.com</fld_address>
		<fld_topic>Upomnienie</fld_topic>
		<fld_content>Prosimy o niezwłoczny zwrot wymienionych poniżej, przetrzymanych egzemplarzy...</fld_content>
	</item>
</list>

fld_sender - adres konta nadawcy - e-mail zostanie wysłany tylko jeśli takie konto zostało wcześniej skonfigurowane

fld_address - adres konta odbiorcy e-maila

fld_topic - tytuł wiadomości e-mail

fld_content - treść wysyłanej wiadomości

Katalog kolejki posiada trzy podkatalogi:

sent - podkatalog, w którym przez pewien okres czasu (domyślnie 7 dni) przechowywane są pliki z listami skutecznie wysłanymi przez serwer SMTP

drop - podkatalog, w którym przez pewien okres czasu (domyślnie 7 dni) przechowywane są pliki z listami, które zostały definitywnie odrzucone z kolejki (np. na skutek źle sformatowanego adresu e-mail) lub wielokrotne próby ich wysłania zostały odrzucone przez serwer SMTP.

defer - podkatalog, w którym przechowywane są pliki z listami, które nie zostały zaakceptowane przez serwer SMTP, ale jest prawdopodobieństwo, że wynikło to z chwilowej niedostępności lub uszkodzonej konfiguracji serwera SMTP. Próby wysyłki są ponawiane co określony czas (domyślnie nie częściej niż 1 na godzinę) i tylko określoną ilość razy (domyślnie: 100 razy). Listy, których mimo to nie uda się wysłać mimo tylu prób, zostaną uznane za odrzucone definitywnie i przeniesione do podkatalogu "drop".

Kolejki w bazie danych

W przypadku systemu SOWASQL kolejka maili przechowywana jest w bazie danych systemu w tabeli tbl_mails. O przynależności maila do wybranej kolejki decyduje kolumna fld_status, która może przyjmować następujące wartości:

(pusta) - brak wartości oznacza maila oczekującego na wysłanie
S - mail wysłany
d - mail wstrzymany, dla którego będą ponawiane próby wysyłki
D - mail odrzucony, którego nie udało się wysłać i nie będą ponawiane próby wysyłki

Sprawdzanie kolejki

Do sprawdzania kolejki służy komenda queue.

smailer --sid=nazwa_bazy queue foo@example.com

Wyświetli to przykładową kolejkę dla konta nadawczego foo@example.com w formacie:

17.10.2011000011_BB1C7C8F5EC83BC7: (foo@example.com => boo@hisorhermail.com)
17.10.2011000011_38B343FA3354D819: (foo@example.com => goo@university.org)
17.10.2011000011_943F1D69E881537D: (foo@example.com => zoo@provider.net)

Oczywiście aby wyświetlić całą kolejkę dla wszystkich nadawców, wystarczy podać @ (lub nic) w miejsce adresu nadawcy.

Rozesłanie kolejki

Za wysyłanie kolejki odpowiada manager instancji systemu SOWA, zatem nie ma konieczności wykonywać żadnej dodatkowej konfiguracji ani wydawania poleceń. Można jednak - w przypadku gdy system SOWA został zatrzymany - ręcznie spowodować wysyłkę maili z kolejki. Do wysyłki służy komenda send. Przetwarza ona całą kolejkę i w przypadku skutecznego przekazania e-maila do serwera SMTP plik jest z kolejki usuwany i przenoszony do podkatalogu sent/. Przy czym nie są kontrolowane ewentualne niepowodzenia w dostarczeniu poczty do adresata - to zadanie leży już po stronie serwera SMTP i ewentualne zwroty będą obsługiwane przez ten serwer. Podstawowa składnia wysyłki poczty:

smailer --sid=nazwa_bazy send foo@example.com

Spowoduje to wysyłkę wszystkich e-maili z kolejki dla konta nadawcy foo@example.com. Aby wysłać pocztę od razu dla wszystkich kont, wystarczy podać adres @ (lub nie podać go wcale).

 

  • No labels