piątek, 23 listopada 2012

Mutt konfiguracja

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

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ć.

2 komentarze:

  1. 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ń
  2. Bardzo fajny artykuł. Jestem pod wrażeniem.

    OdpowiedzUsuń