Mutt jest to konsolowy klient poczty elektronicznej dla systemów Linux/Unix. Jeżeli skompilowany z sidebar to wygląda naprawdę efektownie.
Instalujemy potrzebne pakiety, w openSUSE robimy to tak:
sudo zypper in fetchmail procmail mutt msmtp vim
Fetchmail
Fetcmail jest to program służący do pobierania wiadomości ze zdalnego serwera i przekazywania ich do lokalnego programu pocztowego.
Konfiguracja fetchmail zawarta jest w katalogu domowym w pliku .fetchmailrc. Mój plik konfiguracyjny wygląda tak:
poll pop3.poczta.onet.pl protocol pop3 user "jlitwinski@vp.pl" password "xxx"
poll imap.gmail.com proto imap:
user "jlitwinski@gmail.com", with password "xxx"
keep
ssl
Należy zmienić prawa dostepu do pliku .fetchmailrc aby inni uzytkownicy nie mieli prawa dostępu czytać ten plik:
chmod 600 .fetchmailrc
Procmail
Procmail jest programem służącym do filtrowania poczty pobranej przez fetchmail i przekazywania jej do odpowiednich skrzynek w mutt. Konfigurację procmail przeprowadzamy w katalogu domowym w pliku .procmailrc. Mój plik konfiguracyjny wygląda tak:
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
# Wykrywanie spamu
:0 fw
| sb_filter.py
:0:
* ^X-Spambayes-Classification: spam
Spam
:0:
* ^X-Spambayes-Classification: unknown
Nieznany
#umieść listy w odpowiednich skrzynkach
:0
* ^List-Id:.*arch-general
Arch
:0
* ^List-Id:.*users.lists.fedoraproject.org
Fedora
:0
* ^List-Id:.*kubuntu
Kubuntu
:0
* ^To:.*trinity-users
Trinity
:0
* ^To:.*opensuse
SuSE
:0
* ^To:.*opensuse-pl
SuSE-pl
:0
* ^List-Id:.*ubuntu-users.lists.ubuntu.com
Ubuntu
:0
* ^List-Id:.*ubuntu-pl
Ubuntu-pl
:0
* ^From:.*jan,kowalski\@wp.pl
Kolega
:0
* ^To:.*jlitwinski\@gmail.com
Gmail
############################################
# Ostatnia reguła: poczta, która ją spełnia#
# wędruje do domyślnej skrzynki pocztowej #
############################################
:0
* .*
default
# Koniec pliku
Konfiguracja mutt
Konfigurację mutt przeprowadzamy w katalogu domowyn w pliku .muttrc. Mój plik konfiguracyjny wygląda tak:
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/msmtp"
set from="jlitwinski@vp.pl" #ustaw pole "od" na...
set realname="Jan Litwiński"
set send_charset="utf-8"
set signature="~/.signature"
#set edit_headers = yes
my_hdr Organization: Linux Private Site
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 editor = 'vim + -c "set textwidth=72" -c "set wrap"'
set folder = $HOME/MuttMail
mailboxes =default
mailboxes =Arch
mailboxes =Fedora
mailboxes =Kubuntu
mailboxes =SuSE
mailboxes =SuSE-pl
mailboxes =Trinity
mailboxes =Ubuntu
mailboxes =Ubuntu-pl
mailboxes =Rodzina
mailboxes =Kolega
mailboxes =Ciekawe
mailboxes =Sent
mailboxes =Trash
mailboxes =Spam
mailboxes =Nieznany
maiboxes = Gmail
save-hook .* =Ciekawe #domyślna skrzynka dla zapisywanych
#wiadomości
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 -m 'procmail -d %T'\r"
macro pager G "!fetchmail -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 Content-Type
hdr_order Date From To Subject X-Mailer User-Agent Organization
# Color settings for mutt.
# Default color definitions
color normal white default
color hdrdefault green default
color quoted green default
color quoted1 yellow default
color quoted2 red default
color signature cyan default
color indicator brightyellow red
color error brightred default
color status brightwhite blue
color tree brightmagenta default
color tilde blue default
color attachment brightyellow default
color markers brightred default
color message white default
color search brightwhite magenta
color bold brightyellow default
# Color definitions when on a mono screen
mono bold bold
mono underline underline
mono indicator reverse
mono error bold
# Colors for items in the reader
color header brightyellow default "^(From|Subject):"
color header brightcyan default ^To:
color header brightcyan default ^Cc:
mono header bold "^(From|Subject):"
# Many of these formulas were stolen from Jeremy Blosser
# These would be much simpler if colors were additive.
# regular new messages
color index black white "~N !~T !~F !~p !~P"
# regular tagged messages
color index black cyan "~T !~F !~p !~P"
# regular flagged messages
color index black red "~F !~p !~P"
# messages to me
color index yellow default "~p !~N !~T !~F !~P"
color index brightyellow white "~p ~N !~T !~F !~P"
color index yellow cyan "~p ~T !~F !~P"
color index yellow red "~p ~F !~P"
# messages from me
color index green default "~P !~N !~T !~F"
color index green white "~P ~N !~T !~F"
color index green cyan "~P ~T !~F"
color index green red "~P ~F"
# messages which mention my name in the body
color index yellow default "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P"
color index brightyellow white "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P"
color index yellow cyan "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P"
color index yellow red "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P"
# messages which are in reference to my mails
color index magenta default "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P"
color index magenta white "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P"
color index magenta cyan "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P"
color index magenta red "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P"
# messages to root, etc.
color index cyan default "~C \"(root|postmaster|abuse|mailer-daemon)@\" !~N !~P !~p"
color index cyan white "~C \"(root|postmaster|abuse|mailer-daemon)@\" ~N !~P !~p"
# big messages
color index brightred default "!~N ~z 102400-"
color index brightred cyan "~T !~F !~p !~P ~z 102400-"
color index brightred white "~N ~z 102400-"
# deleted messages
color index red default "!~N ~D"
color index red white "~N ~D"
# Highlights inside the body of a message.
# Attribution lines
color body magenta default "\\* [^<]+ <[^>]+> \\[[^]]+\\]:"
color body magenta default "(^|[^[:alnum:]])on [a-z0-9 ,]+( at [a-z0-9:,. +-]+)? wrote:"
# URLs
color body brightyellow default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
# email addresses
color body brightmagenta default "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
# PGP messages
color body brightyellow default "^gpg: Good signature .*"
color body white default "^gpg: "
color body brightwhite red "^gpg: BAD signature from.*"
mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*"
# Various smilies and the like
color body brightwhite default "<[Gg]>" # <g>
color body brightwhite default "<[Bb][Gg]>" # <bg>
color body brightwhite default " [;:]-*[})>{(<|]" # :-) etc...
# *bold*
color body brightblue default "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
# _underline_
color body brightblue default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
# /italic/ (Sometimes gets directory names)
#color body brightblue default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
#mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
# Border lines.
color body blue default "( *[-+=#*~_]){6,}"
# Sidebar
set sidebar_width=30
set sidebar_visible=yes
set sidebar_delim='|'
color sidebar_new brightblue black# b toggles sidebar visibility
macro index b 'toggle sidebar_visible'
macro pager b 'toggle sidebar_visible'
bind index \CP sidebar-prev
bind index \CN sidebar-next
bind index \CO sidebar-open
bind pager \CP sidebar-prev
bind pager \CN sidebar-next
bind pager \CO sidebar-open
# Podgląd html
auto_view text/html
# Książka adresowa
set alias_file=~/.mutt/aliases # aliases-file is there
source ~/.mutt/aliases # and include all existing aliases
# Trenowanie spamu
macro index S "|sb_filter.py -s -f | procmail\nd"
macro pager S "|sb_filter.py -s -f | procmail\nd"
macro index H "|sb_filter.py -g -f | procmail\nd"
macro pager H "|sb_filter.py -g -f | procmail\nd"
color index red default "~h '^X-Spambayes-Classification: spam'"
color index green default "~h '^X-Spambayes-Classification: unsure'"
# set up trash
folder-hook . 'macro index d "<save-message>=Trash<enter>"'
folder-hook =Trash 'macro index d <delete-message>'
Wysyłanie poczty
Do wysyłania poczty używam programu msmtp. Jego konfigurację przeprowadzmy w katalogu domowym w pliku .msmtprc. Mój plik konfiguracyjny wygląda tak:
account default
host smtp.poczta.onet.pl
from jlitwinski@vp.pl
auth login
user jlitwinski@vp.pl
password xxx
#tls
Nadajemy temu plikowi odpowiednie prawa:
chmod 600 .msmtprc
Sidebar
Sidebar jest to lewy panel w którym umieszczone są nasze skrzynki. Poruszamy sie po nim w następujący sposób:
Ctrl+n przejście do następnej skrzynki
Ctrl+p przejście do poprzednie skrzynki
Ctrl+o otwarcie skrzynki
Filtrowanie spamu
Do filtrowania spamu używam programu SbFilter z pakietu SpamBayes. Reguły filtrowania umieściłem w .procmailrc, a manipulowanie spamem w .muttrc. Polecenia
Shift+s oznacz jako spam
Shift+h oznacz jako nie spam
Książka adresowa
Wpisy do ksiązki adresowj przeprowadzamy wciskając a. W czasi wysyłania maila gdy jest "to:" piszemy pierwsze litery adresu i naciskamy klawish Tab, pojawi się lista dostępnych adresów, wybieramy ten do którego wysyłamy list.
Skróty klawiaturowe
Kilka skrótów klawiaturowych:
Shift+g pobranie poczty
m wyślij pocztę
r odpowiedz
f przekaż
L odpowiedz liście dyskusyjnej
d usuń pocztę
j przejdź do następnej wiadomości
k przejdź do poprzedniej wiadomości
? pomoc
Skasowane przez nas maile trafiają najpierw do skrzynki Trash, aby je całkowicie skasować należy wejść do tej skrzynki i ponownie je skasowąć.
Gmail
Gmail imap mam skonfigurowany tak że przesyła mi tylko nowe listy. Konfiguracja konta jest w .fetchmailrc, filtr w .procmailrc a skrzynka w
.muttrc.
HTML
Podgląd html przeprowadzam za pomocą lynx, a w pliku .mailcap należy wprowadzić następującą zawartość:
text/html; lynx %s; nametemplate=%s.html
text/html; lynx -dump %s; nametemplate=%s.html; copiousoutput
Ta regóła jest już zawarta w moim .muttrc:
auto_view text/html
Należy jeszcze zainstalować przeglądarkę konsolową lynx:
sudo zypper in lynx
Jeszcze na koniec kasowana przez nas poczta trafia najpierw do skrzynki Trash. Aby ją całkowicie skasować należy wejść do Trash i jeszcze raz ją skasować.
Tak na dobrą sprawę nie jestem pewny jakich systemów operacyjnych się u nad używa w firmie. Ja za to korzystam z systemu CRM https://www.connecto.pl/jak-dziala-system-crm/ który jest dla mnie świetnym rozwiązaniem.
OdpowiedzUsuńBardzo fajny artykuł. Jestem pod wrażeniem.
OdpowiedzUsuń