Masz już dość klientów pocztowych o wymyślnych interfejsach graficznych? A może po prostu chcesz sprawdzić inne systemy, zanim zdecydujesz, który z nich jest najlepszy? Oto prosta droga do zapoznania się z zestawem funkcjonalnych programów pocztowych wiersza poleceń:
fetchmail, procmail, mutt & smtp
Programy te są nie tylko funkcjonalne, ale także bardzo konfigurowalne, małe i wydajne. Po instalacji i konfiguracji takiego systemu pocztowego, użytkownicy zwykle nie mogą uwierzyć jak wiele można przy ich pomocy zrobić.
Ponieważ to tylko krótkie wprowadzenie, nie zostaną tutaj opisani agenci transferu poczty (MTA), jak: sendmail, postfix czy exim. Oznacza to brak czasami nieco skomplikowanego procesu konfiguracji takich programów oraz eliminuje potrzebę rezerwacji portu 25 na potrzeby usług pocztowych.
Pominięcie portu 25 jest możliwe, ponieważ fetchmail jest programem potrafiącym przekazywać pobraną z serwerów pocztę bezpośrednio do programów dostarczających pocztę (MDA). Oznacza to, że nie musimy wcale używać złożonego MTA do jej wysyłania.
Oto programy, które będą konieczne do uruchomienia opisywanego systemu pocztowego.
Listing 1.1: Instalacja niezbędnych programów |
# emerge fetchmail nbsmtp procmail mutt
|
Jeszcze tylko szybkie opisy czterech plików konfiguracyjnych i będziemy mogli podziwiać nasz nowy system pocztowy.
Ważne: Po każdym rozdziale tego dokumentu zalecane jest przetestowanie aktualnej konfiguracji. Pomoże to bardzo szybko zlokalizować ewentualne błędy. |
Fetchmail jest programem służącym do pobierania wiadomości pocztowych ze zdalnych serwerów i przekazywania ich do lokalnego MDA. Otwórzmy zatem znajdujący się w katalogu domowym plik .fetchmailrc i przeprowadźmy prostą konfigurację:
Listing 2.1: Przykład konfiguracji pliku .fetchmailrc |
poll poczta.u_mojego_dostawcy.net protocol pop3 user "użytkownik" password "hasło"
|
Kiedy już wprowadzimy odpowiednie informacje do pliku .fetchmailrc, należy koniecznie zmienić prawa dostępu do niego. Dostęp powinien posiadać tylko i wyłącznie jego właściciel, nie chcemy chyba, aby każdy użytkownik systemu mógł odczytać nasze hasło pocztowe, prawda? Ustawiamy prawa do pliku następującym poleceniem:
Listing 2.2: Ustawianie odpowiednich praw dostępu |
$ chmod 600 .fetchmailrc
|
Zobaczymy teraz fetchmaila w akcji: włączymy tryb opisowy (-v), nakażemy pobranie wszystkich wiadomości (-a) oraz zażyczymy aby przekazał pobraną pocztę do procmaila.
Ostrzeżenie: Dobrym zwyczajem będzie podawanie argumentu -k do fetchmaila, który sprawi, że poczta nie będzie usuwana ze zdalnego serwera. Jeżeli coś poszło by nie tak, zawsze będzie można pobrać ją ponownie. |
Zobaczmy teraz jak to działa!
Listing 2.3: Fetchmail - test #1 |
$ fetchmail -akv -m "/usr/bin/procmail -d %T"
|
Częstym zwyczajem po zbudowaniu działającego systemu pocztowego jest umieszczanie fetchmaila jako jedno z zadań crona lub programu monitorującego system typu gkrellm. Należałoby jeszcze dodać, że fetchmail może działać także jako demon systemowy, pobierając pocztę co określoną ilość sekund.
Procmail jest programem służącym do manipulacji pobraną przez fetchmaila pocztą elektroniczną. Posiada też jedną z funkcji MDA, mianowicie dostarcza ją do skrzynek pocztowych użytkowników, gdzie będzie mogła zostać odczytana przez mutta.
Procmail do swojego działania wymaga stworzenia i skonfigurowania w katalogu domowym pliku .procmailrc. Dla celów tego krótkiego dokumentu zostanie przedstawiona bardzo prosta jego konfiguracja, która filtruje pocztę z trzech list dyskusyjnych i umieszcza ją w trzech skrzynkach: gentoo-dev, gentoo-user oraz gentoo-announce.
Uwaga: Oprócz samego sortowania, dodałem do pliku konfiguracyjnego także trochę regułek pozwalających odfiltrować spam. |
Listing 3.1: Przykładowy plik .procmailrc |
MAILDIR=$HOME/MuttMail ##należy się upewnić że podany tu katalog istnieje w systemie LOGFILE=$HOME/.procmaillog LOGABSTRACT=no #VERBOSE=on ##tryb gadatliwy VERBOSE=off FORMAIL=/usr/bin/formail NL=" " ##każda formuła zaczyna się od :0 ##nie należy wstawiać żadnych komentarzy w wierszach reguł ##wiersze warunków zaczynają się * ##wyrażenia regularne są naszymi przyjaciółmi ##możemy stosować wiele następujących po sobie warunków ##wszystko za * jest wysyłane prosto do polecenia egrep ##w pierwszej linii za warunkami występuje akcja, w naszym przykładzie będzie to ## nazwa skrzynki do której ma trafić list #wykryj duplikaty używając programu formail :0 Whc: .msgid.lock | $FORMAIL -D 16384 .msgid.cache :0 a $MAILDIR/duplicates #przyjaciele, których pocztę zawsze chętnie przeczytamy :0 * ^From:.*(craig\@hotmail|renee\@local.com) $MAILDIR/friends #prymitywna filtracja spamu :0 * ^Subject:.*(credit|cash|money|debt|sex|sale|loan) $MAILDIR/spam #nie chcemy żadnych wiadomości html :0 * ^Content-Type:.*html $MAILDIR/junk #umieść listy w odpowiednich skrzynkach :0 * ^List-Id:.*gentoo-user gentoo-user :0 * ^List-Id:.*gentoo-dev gentoo-dev :0 * ^List-Id:.*gentoo-announce gentoo-announce #przenieś całą pozostałą pocztę od gentoo.org do osobnej skrzynki :0 * ^From:.*gentoo.org gentoo :0 * ^From:.*@freshmeat\.net freshmeat ############################################ # Ostatnia reguła: poczta, która ją spełnia# # wędruje do domyślnej skrzynki pocztowej # ############################################ :0 * .* default # Koniec pliku |
Uwaga: Wystarczy, że utworzymy teraz katalog $HOME/MuttMail, a procmail sam stworzy w nim potrzebne pliki skrzynek, używając nazw z wierszy akcji. Więcej informacji można znaleźć na stronie http://www.procmail.org/. |
Można teraz przetestować jak będą się sprawowały nowe regułki procmaila, uruchamiając fetchmaila tak jak to robiliśmy w pierwszej części. Pamiętajmy o opcji -k, która zachowa naszą pocztę na serwerze.
Listing 3.2: Procmail - test #1 |
$ fetchmail -akv -m "/usr/bin/procmail -d %T"
|
Teraz, kiedy skonfigurowaliśmy już programy odpowiedzialne za pobieranie poczty z serwera do skrzynek, możemy udać się do katalogu $HOME/MuttMail i przeczytać swoją pocztę na przykład za pomocą polecenia less.
4. Klient poczty elektronicznej - mutt
Mutt jest programem służącym do przeglądania i komponowania listów. To bardzo małe, wydajne i funkcjonalne narzędzie, które łatwo można dostosować do swoich potrzeb.
Za pomocą tego klienta poczty można przeglądać listy zawarte w czterech różnych formatach skrzynek pocztowych: mbox, MMDF, MH i Maildir. Rodzaj skrzynki jest rozpoznawany automatycznie przez program, w tym przykładzie korzystamy z formatu mbox, którego cechą charakterystyczną jest umieszczanie wszystkich wiadomości w jednym pliku.
Mutt posiada także możliwość pracy z katalogami znajdującymi się na zdalnym serwerze IMAP. Więcej na ten temat znajdziemy w sekcji 4.11 podręcznika systemowego man lub na oficjalnej stronie domowej http://www.mutt.org/.
Podczas instalacji mutta w pliku /etc/mutt/Muttrc została umieszczona domyślna jego konfiguracja. Możemy oczywiście stworzyć swoją własną, umieszczając ją w ~/.muttrc.
Listing 4.1: Przykładowy plik konfiguracyjny .muttrc |
(Dokumentacja znajduje się w katalogu: /usr/share/doc/mutt*) (Wszystkie ustawienia znajdujące się w tym pliku zasłaniają te z /etc/mutt/Muttrc) # cp /etc/mutt/Muttrc ~/.muttrc # nano -w .muttrc set pager_context=1 set pager_index_lines=6 #Pokaż mini-index set menu_scroll set pgp_verify_sig=no #Nie sprawdzaj sygnatur pgp set status_on_top #umieść linię statusu na samej górze set sort=threads #sortowanie według wątków set status_format=" %r %b %f %n Del %d Msgs %m %l %> (%P)" set pager_format="%-10.10i %[!%a %b %d %R]" set date_format="!%H:%M %a %d %b " set index_format="%4C %Z %[%b%d] %-15.15F %s" set folder_format="%2C %t %8s %d %N %f" #set sendmail="/usr/bin/nbsmtp -d isp.net -h smtp.isp.net -f użytkownik@isp.net" #set from="default-mailaddress" #ustaw pole "od" na... #set realname="Jaś Fasola" set record="$HOME/MuttMail/sent" #zapisz pocztę wychodzącą w... set delete=yes #usuń bez pytania set include=yes #odpowiadając cytuj pierwotną wiadomość set fast_reply=yes #nie pytaj o odbiorcę i adresata przy #odpowiedzi na wiadomość set beep=no #nie używaj sygnału dźwiękowego set markers=no #nie wyświetlaj znaku + przy #przeniesieniu do następnego wiersza set confirmappend=no #nie pytaj przy dodawaniu wiadomości do #istniejących skrzynek set to_chars=" +TCF" #Nie wyświetlaj litery L dla poczty #pochodzącej z list dyskusyjnych set folder = $HOME/MuttMail mailboxes =gentoo-user mailboxes =gentoo-dev mailboxes =gentoo-announce mailboxes =gentoo mailboxes =freshmeat mailboxes =duplicates mailboxes =default mailboxes =friends mailboxes =junk mailboxes =spam mailboxes =keep save-hook .* =keep #domyślna skrzynka dla zapisywanych #wiadomości subscribe gentoo-user gentoo-dev #listy dyskusyjne na które jesteśmy #zapisani bind pager h display-toggle-weed #pokaż nagłówek wiadomości po #wciśnięciu klawisza h macro index \cb |urlview\n 'wypisz wszystkie odnośniki jakie znajdziesz w' macro pager \cb |urlview\n 'wiadomości po naciśnięciu kombinacji ctrl+b' #po wciśnięciu G natychmiast pobierz pocztę macro index G "!fetchmail -a -m 'procmail -d %T'\r" macro pager G "!fetchmail -a -m 'procmail -d %T'\r" #skróty klawiszowe służące do przeładowania pliku konfiguracyjnego i jego edycji macro generic ,sm ":source $HOME/.muttrc\r" macro generic \cj "!rxvt -bg wheat -e joe $HOME/.muttrc\r" #lista domyślnych nagłówków pokazywanych w każdej wiadomości #ignorujemy wszystkie, a następnie definiujemy te, które chcemy oglądać ignore * unignore Date To From: Subject X-Mailer Organization User-Agent hdr_order Date From To Subject X-Mailer User-Agent Organization ##dodajmy trochę kolorów #color quoted green default color quoted1 magenta blue #color quoted2 yellow default #color quoted3 red default #color signature cyan cyan #poniższa konfiguracja kolorów mutta została skopiowana z #/etc/mutt/Muttrc.color #aby użyć domyślnych kolorów mutta, należy usunąć poniższą konfigurację color hdrdefault brightcyan blue color header brightwhite blue "^from:" color header brightwhite blue "^subject:" color quoted brightgreen blue color signature brightwhite blue color indicator blue green color error red black mono error bold color status black cyan mono status bold color tree yellow blue color tilde brightmagenta blue color body brightwhite blue "[-a-z_0-9.]+@[-a-z_0-9.]+" mono body bold "[-a-z_0-9.]+@[-a-z_0-9.]+" color body brightyellow black "^Good signature" mono body bold "^Good signature" color body brightwhite red "^Bad signature from.*" mono body bold "^Bad signature from.*" color normal white blue color message green black color attachment brightgreen blue # Koniec pliku, ale można by tak jeszcze dłuuuuuuuuuuugo... :) |
To był tylko przykład bardzo prostej konfiguracji pliku .muttrc. Istnieje jeszcze mnóstwo ciekawych opcji do konfiguracji, jak np. integracja z gpg. Po więcej przykładów odsyłamy na stronę http://www.dotfiles.com/index.php?app_id=27.
Możemy przetestować konfigurację .muttrc.
Listing 4.2: Test .muttrc |
$ mutt -y
|
Powinno się teraz wyświetlić menu z listą skrzynek pocztowych, które zostały utworzone przy pobieraniu poczty z serwera.
Aby wyświetlić pomoc dotyczącą poruszania się po skrzynkach mutta należy nacisnąć znak pytajnika.
Ostatnim krokiem będzie konfiguracja nbsmtp (No-Brainer SMTP), służącego do przekazywania poczty wychodzącej do serwera SMTP. Będzie to najprostsza część konfiguracji opisanej w tym dokumencie, a polegać będzie tylko na dodaniu jednego wpisu do pliku .muttrc.
-d: Oznacza domenę, do której należy nbsmtp. Prawie zawsze będzie to ta sama, która występuje w adresie e-mail.
-f: nbsmtp będzie twierdził, że wysłał pocztę z adresu e-mail zawartego za tym argumentem. Należy zauważyć, że adres ten to nie to samo co adres "From: " klienta pocztowego.
-h: Adres serwera poczty smtp.
Listing 5.1: Konfiguracja nbsmtp |
$ nano -w .muttrc
set sendmail="/usr/bin/nbsmtp -d isp.net -h smtp.isp.net -f użytkownik@isp.net"
|
W tej chwili możliwe jest już wysyłanie wiadomości. Za pomocą klawisza m można rozpocząć teraz komponowanie nowej testowej wiadomości, którą wyślemy na swój adres. Uruchamiając edytor tekstu do komponowania wiadomości Mutt używa wartości zmiennych EDITOR lub VISUAL, chyba że zmienna editor= jest zdefiniowana w pliku .muttrc. Po zakończeniu procesu komponowania nowej wiadomości naciśnięcie klawisza y wyśle wiadomość. Jeżeli nie wystąpiły żadne błędy, to na ekranie powinien ukazać się komunikat 'Mail sent.'.
Zgodnie z konfiguracją .muttrc podaną powyżej, wysłana przed chwilą wiadomość powinna zostać umieszczona w skrzynce sent.
Można się teraz upewnić, że nasza wiadomość dotarła do celu, uruchamiając ponownie program fetchmail. Jeżeli wysłana przed chwilą wiadomość zostanie pobrana, oznacza to, że wszystko jest w porządku. Możemy teraz za pomocą klawisza h, obejrzeć wszystkie nagłówki wiadomości oraz prześledzić całą drogę jaką przebyła.
Uwaga: Jest jeszcze jeden program, który możemy dodać do naszego systemu pocztowego. Nosi on nazwę urlview i służy do wyodrębniania adresów url w wiadomościach. |
Listing 5.2: Instalacja urlview |
# emerge urlview
|
Utworzymy teraz plik ~/.urlview kopiując przykładową jego konfigurację z /usr/share/doc/urlview*/ oraz skonfigurujemy jakiej przeglądarki będziemy używać do oglądania stron.
Mamy już w pełni funkcjonalny system pocztowy. W celu wykorzystania wszystkich możliwości opisanych tu aplikacji odsyłam do dokumentacji oraz podręczników systemowych man. Wiele ciekawych przykładów można odnaleźć w sieci, szukając haseł procmailrc i muttrc.
Jeżeli zachodzi potrzeba przekazania nazwy użytkownika i hasła do serwera SMTP, należy dokonać edycji pliku .muttrc, dodając do polecenia odpowiedzialnego za wysyłanie poczty argumenty -U <użytkownik> -P <hasło>:
Listing 6.1: Uwierzytelnianie dla serwera SMTP |
set sendmail="/usr/bin/nbsmtp -U użytkownik -P hasło -d isp.net -h smtp.isp.net -f użytkownik@isp.net" |
Jeżeli zależy nam, aby te informacje nie widniały bezpośrednio w pliku .muttrc, należy stworzyć plik .nbsmtprc, w którym zostaną umieszczone te informacje:
Listing 6.2: Przykład ~/.nbsmtprc |
auth_user = użytkownik auth_pass = hasło |
msmtp jest prostą alternatywą z podobnymi możliwościami jak nbsmtp.
Listing 6.3: Instalacja msmtp |
# emerge msmtp
|
Teraz należy zalogować się jako zwykły użytkownik i skonfigurować msmtp. Polega to na stworzeniu pliku ~/.msmtprc oraz wypełnieniu go informacjami dla serwera SMTP. Należy koniecznie zadbać o ustawienie bezpiecznych praw dostępu do takiego pliku!
Listing 6.4: Konfiguracja msmtp |
$ nano -w .msmtprc account default host smtp.u_mojego_dostawcy.net from użytkownik@u_mojego_dostawcy.net #Więcej informacji dotyczących uwierzytelniania można odnaleźć na stronach podręcznika systemowego. auth login user użytkownik password hasło #Jeżeli serwer SMTP obsługuje szyfrowanie TLS, należy usunąć znak komentarza z poniższego wiersza. #tls |
A teraz ustawianie bezpiecznych praw dostępu do pliku konfiguracyjnego:
Listing 6.5: Ustawianie bezpiecznych praw dostępu do pliku |
$ chmod 600 .msmtprc
|
Na koniec należy dokonać edycji pliku .muttrc.
Listing 6.6: Mutt z obsługą msmtp |
$ nano -w .muttrc
set sendmail="/usr/bin/msmtp"
|
Po więcej dokumentacji i przykładów dotyczących konfiguracji msmtp odsyłam do podręcznika systemowego.
Materiał udostępniany na podstawie licencji Creative Commons - Attribution / Share Alike.