Krótkie wprowadzenie do klienta poczty mutt
1.
Wprowadzenie
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.
|
2.
Fetchmail
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.
3.
Procmail
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 |
# 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.
5.
SMTP
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.
6.
Uwierzytelnianie SMTP
Używanie nbSMTP
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
|
Alternatywa dla nbsmtp: msmtp
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
auth login
user użytkownik
password hasło
#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.
|