4.3.18. lms-rtparser
Jest to tzw. backend dla systemu Helpdesk, czyli skrypt który współpracując z serwerem pocztowym zapisuje do bazy danych wszystkie wiadomości skierowane na adresy Helpdesk'a. Skrypt pobiera z wejścia wiadomość pocztową, parsuje zawartość i umieszcza zgłoszenie w kolejce, wysyłając do zgłaszających potwierdzenie przyjęcia wiadomości. W temacie potwierdzenia znajduje się symbol zgłoszenia. Podczas parsowania wiadomości następuje, na podstawie tematu wiadomości, próba rozpoznania czy wiadomość nie jest odpowiedzią na inną wiadomość z już przypisanym numerem zgłoszenia. Od wiadomości zostają odłączone załączniki i umieszczone w katalogu zdefiniowanym w opcji mail_dir.
Oprócz modułów Perla standardowo wymaganych przez resztę skryptów, należy zainstalować także moduły MIME::Parser i MIME::Words z pakietu MIME-Tools oraz Mail::Sender i Text::Iconv.
Skrypt można uruchamiać na wiele sposobów. Jednym z nich jest stworzenie skryptu powłoki, który odczytując skrzynkę pocztową wywoła lms-rtparser dla każdego maila. Wygodniejszym zastosowaniem jest jednak zintegrowanie go z serwerem pocztowym. Poniżej przedstawiono sposób podłączenia go do postfixa przy użyciu opcji header_checks.
# plik main.cf: header_checks = regexp:/etc/postfix/header_checks # plik header_checks /^To:.*adres@domena.*/ FILTER filter:dummy # plik master.cf: filter unix - n n - 10 pipe -flags=Rq user=nobody argv=/path/to/lms-rtparser
Powyższy sposób działa dla postfixa w wersjach nowszych od 2.0. Wcześniejsze wersje nie obsługują FILTER w header_checks. Z tym problemem można sobie poradzić używając procmaila:
# plik main.cf mailbox_command = /usr/bin/procmail # w katalogu domowym klienta, którego maile mają być obsługiwane przez HelpDesk: # plik .forward "|IFS=' ' && exec /usr/bin/procmail -f - || exit 75 #YOUR_USERNAME" # plik .procmailrc :0 c * ^To.*adres@domena | /bin/lms-rtparser :0 A $DEFAULT
Kolejny listing to przykład podłączenia parsera do Exima przy użyciu filtrów systemowych:
# plik exim.conf system_filter_pipe_transport = address_pipe # plik system_filter.txt if $recipients is "adres_kolejki@domena.pl" then pipe "/sciezka/do/lms-rtparser -q id_kolejki" endif
Jeżeli chcesz aby wiadomości wprowadzane poprzez lms-ui były kierowane do parsera, zamiast bezpośrednio zapisywane do bazy, powinieneś włączyć opcję konfiguracyjną helpdesk_backend_mode w sekcji [phpui].
Konfigurację tego skryptu zawiera sekcja [rt] w pliku lms.ini:
- default_queue
Numer ID kolejki, do której trafią zgłoszenia. Jeśli nie podano, Kolejka zostanie odszukana na podstawie adresu odbiorcy maila. Opcja ta może zostać nadpisana przy pomocy parametru -q przy uruchomieniu skryptu. Domyślnie: niezdefiniowana. Przykład: default_queue =
- mail_from
Nadawca potwierdzenia (adres). Jeśli nie zdefiniowano, zostanie użyty adres kolejki do której zapisano zgłoszenie. Domyślnie: pusty. Przykład: mail_from = rt@net.pl
- mail_from_name
Nadawca potwierdzenia (nazwa). Domyślnie: niezdefiniowana. Przykład: mail_from_name = 'BOK SuperLAN'
- autoreply_subject
Temat potwierdzenia. Tu można korzystać ze zmiennych %tid - identyfikator zgłoszenia i %subject - temat zgłoszenia. Domyślnie: „[RT#%tid] Receipt of request '%subject'”. Przykład: autoreply_subject = „[RT#%tid] Potwierdzenie odbioru zgłoszenia o temacie '%subject'”
- autoreply_body
Treść potwierdzenia. Tu można korzystać ze zmiennych: %tid - identyfikator zgłoszenia i %subject - temat zgłoszenia. Domyślnie: „Your request was registered in our system.\nTo this request was assigned ticket identifier RT#%tid.\nPlease, place string [RT#%tid] in subject field of any\nmail relating to this request.\n.”
Przykład: autoreply_body = „Państwa zgłoszenie zostało zarejestrowane w naszym systemie.\nZgłoszeniu został nadany numer: RT#%tid.\nW korespondencji związanej z tym zgłoszeniem prosimy podawać w temacie ciąg znaków [RT#%tid].\n”
- smtp_host
Serwer SMTP, przez który ma zostać wysłana wiadomość. Domyślnie: localhost Przykład: smtp_host = smtp.mydomain.pl
- smtp_auth
Sposób autoryzacji. Dozwolone wartości: LOGIN, PLAIN, CRAM-MD5, NTLM. Domyślnie: pusta (brak autoryzacji) Przykład: smtp_auth = LOGIN
- smtp_user
Login do autoryzacji SMTP. Domyślnie: pusty Przykład: smtp_user = admin
- smtp_pass
Hasło do konta zdefiniowanego w opcji smtp_user. Domyślnie: puste Przykład: smtp_pass = password
- mail_dir
Katalog w którym zostaną zapisane załączniki. Katalog ten powinien być dostępny dla apache'a i klienta uruchamiającego lms-rtparser. Gdy nie ustawiono, załączniki zostaną utracone. Domyślnie: niezdefiniowany. Przykład: mail_dir = /usr/local/lms/mail
- tmp_dir
Katalog tymczasowy. Domyślnie zostanie użyty katalog zdefiniowany w zmiennej systemowej lub /tmp. Przykład: tmp_dir = /home/user/tmp
- auto_open
Włączenie tej opcji spowoduje, że w momencie odebrania wiadomości dotyczącej zgłoszenia zamkniętego (lub martwego) zgłoszenie to zostanie otwarte. Domyślnie: wyłączone. Przykład: auto_open = 1
- newticket_notify
Włączenie tej opcji spowoduje wysyłanie powiadomień o nowych zgłoszeniach do użytkowników którzy mają prawa do konkretnej kolejki. Domyślnie: wyłączone. Przykład: newticket_notify = 1
- lms_url
Do powiadomienia o nowym zgłoszeniu zostaje załączony link do tego zgłoszenia w LMS-UI, aby użytkownik mógł szybko przejść do tego zgłoszenia. Domyślnie: http://localhost/lms/. Przykład: lms_url = https://lms.domena.pl/
- include_customerinfo
Do powiadomienia o nowym zgłoszeniu zostają załączone podstawowe dane klienta, jeżeli został on rozpoznany po adresie mailowym. Domyślnie: włączona. Przykład: include_customerinfo = 0