Руководство по электронной почте с использованием Mutt


Ссылка на оригинал: http://www.gentoo.org/doc/ru/guide-to-mutt.xml

C версии: 1.0

1. Введение в E-Mail


Если вы не любитель e-mail клиентов с замысловатым графическим интерфейсом, или если вы просто хотите поэкспериментировать с другими клиентами, чтобы выбрать подходящий для себя, самым простым способом в вашем случае будет использование связки консольных приложений:


fetchmail->procmail->mutt->smtp


Программы эти не просто мощны и гибко настраиваемы, они также легковесны и эффективны. Потому, однажды настроив и запустив всю эту e-mail систему, вы будете просто ошеломлены тем, что сможете делать с её помощью.


Поскольку это краткое руководство, мы не будем рассматривать службы отправки почты (Mail Transfer Agent), такие как sendmail, postfix или exim. Мы также не будем использовать 25 порт для почтовых служб.


Мы можем себе это позволить, так как fetchmail способен передавать принятую почту непосредственно службе доставки почты (MDA) вместо того чтобы перенаправлять её на 25 порт. И мы можем не использовать службу отправки почты (MTA) для простой передачи почты.


Для запуска своей e-mail системы вам понадобится установить следующее программное обеспечение.


Листинг 1.1: Установка нужных программ

# emerge fetchmail procmail mutt nbsmtp



Теперь от полностью рабочей e-mail системы нас отделяют четыре маленьких шажка в направлении конфигурации файлов.

Важно: После каждого шага необходимо тестировать настройку на корректность. Это конечно же подразумевают, что всё необходимое программное обеспечение у вас уже установлено.



2. Fetchmail


Fetchmail забирает почту с удаленного сервера на вашу локальную машину. Для этого вам необходимо настроить файл .fetchmailrc в вашей домашней директории, подобно примеру:




Листинг 2.1: Пример .fetchmailrc

poll mail.myisp.net protocol pop3 user "myname" password "mypassword"



Сразу после создания файла, необходимо выставить права доступа к нему (он должен быть читаем только его владельцем). Сделать это можно следующей командой:


Листинг 2.2: Изменение прав доступа

# chmod 710 .fetchmailrc



Чтобы увидеть процесс в действии, используйте ключ -v. Чтоб получить все сообщения, используйте -a. И ещё вы должны использовать ключ -m для того, чтобы передать принятую почту procmail.


Предупреждение: Будет также хорошей идеей использовать ключ -k, в этом случае если что-то пойдет не так, ваша почта не будет удалена с сервера и вы сможете её повторно забрать.



Пришло время проверить fetchmail в действии!


Листинг 2.3: Тест Fetchmail #1

# fetchmail -akv -m "/usr/bin/procmail -d %T"



Как только вы добьётесь работающей системы, вы можете добавить процесс в cron или какой-нибудь монитор навроде gkrellm. Fetchmail также может быть запущен как демон с указанием секундного интервала.


3. Procmail


Procmail - это программа фильтрующая почту получаемую от fetchmail. А далее, также как и MDA, она поставляет отфильтрованную почту в ваши почтовые ящики, откуда её уже можно прочитать программой mutt (это почтовый клиент, который мы будем использовать).


Для использования procmail, также необходимо создать файл .procmailrc в своём домашнем каталоге. Для наших целей "быстрой настройки" мы будем использовать простой .procmailrc, который фильтрует почту от трех списков рассылки gentoo в три почтовых ящика: gentoo-dev, gentoo-user и gentoo-announce.

Примечание: Правила фильтра называются условиями. Я также добавил условия для того, чтобы отфильтровать некоторый спам.



Листинг 3.1: Пример .procmailrc

MAILDIR=$HOME/MuttMail ##проверьте правильность пути

5LOGFILE=$HOME/.procmaillog

LOGABSTRACT=no

#VERBOSE=on... используется только для отладки

VERBOSE=off

FORMAIL=/usr/bin/formail

NL="

"

##условные строки начинаются с :0

##не записывайте комментарии в строки условия

##отредактируйте ненужные условия!

##строки условий начинаются с *, а регулярные выражения ваши лучшие друзья

##условия добавленные после * попадают прямо в egrep

##строка следущая за условиями, в следующем регистре является именем почтового ящика


#отлавливание копий, используя formail

:0 Whc: .msgid.lock

| $FORMAIL -D 16384 .msgid.cache


:0 a

$MAILDIR/duplicates


#люди которые всегда пишут с одного почтового адреса

:0

* ^From:.*(craig\@hotmail|renee\@local.com)

$MAILDIR/friends


#выборка некоторого спама

:0

* ^Subject:.*(credit|cash|money|debt|sex|sale|loan)

$MAILDIR/spam


#никаких html писем

:0

* ^Content-Type:.*html

$MAILDIR/junk


#складировать письма из списков рассылки в мои почтовые ящики

:0

* ^List-Id:.*gentoo-user

gentoo-user


:0

* ^List-Id:.*gentoo-dev

gentoo-dev


:0

* ^List-Id:.*gentoo-announce

gentoo-announce


#получать любую другую почту с gentoo

:0

* ^From:.*gentoo.org

gentoo


:0

* ^From:.*@freshmeat\.net

freshmeat


###########################################

# последние условие: складирует остальную #

# почту в почтовый ящик по умолчанию #

###########################################

:0

* .*

default


# конец файла


Примечание: В данном случае вам только потребуется создать почтовую директорию в $HOME/MuttMail, после чего Procmail создаст все необходимые файлы почтового ящика в этом каталоге, используя названия из строк условий. Для дополнительной информации посетите http://www.procmail.org/



Для проверки нашего .procmailrc, повторно запустите fetchmail (который мы уже настроили). Помните также, что опция -k оставляет почту на удаленном сервере, потому её можно использовать для нашего теста.


Листинг 3.2: Тест Procmail #1

# fetchmail -akv -m "/usr/bin/procmail -d %T"



Ну всё, теперь когда fetchmail и procmail работают, мы можем зайдя в $HOME/MuttMail прочитать нашу почту программой less или вашим любимым файловым менеджером.


4. Почтовый клиент Mutt


Mutt используется для чтения и написания писем. Это очень мощное, сложно-настраиваемое, легковесное и эффективное приложение.


Mutt поддерживает чтение и запись в различных форматах почтового ящика: mbox, MMDF, MH и Maildir. Тип почтового ящика распознается автоматически. В нашем случае мы используем формат mbox, где все сообщения почтового ящика сохраняются в отдельных файлах.


Mutt также имеет способность работать с папками, расположенными на удаленном IMAP сервере. См. Поддержку IMAP в разделе 4.11 руководства по Mutt и сайт Mutt http://www.mutt.org/.


При установке mutt создаётся основной файл конфигурации /etc/mutt/Muttrc. Вам также необходимо создать файл .muttrc в своём домашнем каталоге.


Листинг 4.1: Пример .muttrc


(Конечно, неплохо бы прочитать документацию Mutt из /usr/share/doc/mutt*)

(Любые настройки здесь отменяют параметры общей конфигурации из /etc/mutt/Muttrc)


# cp /etc/mutt/Muttrc ~/.muttrc

# nano -w .muttrc

set pager_context=1

set pager_index_lines=6 #показывать оглавления в окне программы

set menu_scroll

set pgp_verify_sig=no #не показывать pgp на странице

set status_on_top #разместить статусную строку вверху

set sort=threads #сортировать сообщения по заголовкам


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 yourname@isp.net"


#set from="default-mailaddress" #задаёт ваш адрес в строке "from"

#set realname="myname"


set record="$HOME/MuttMail/sent" #сохранять отправленную почту здесь

set delete=yes #удалить без подтверждения

set include=yes #выделять сообщение в ответе

set fast_reply=yes #не подтверждать ответ

set beep=no #не пищать

set markers=no #не помечать + сложенные строки

set confirmappend=no #не подтверждать сохранение в =keep

set to_chars=" +TCF" #нет L для mail_list


set folder = $HOME/MuttMail

mailboxes =gentoo-user

mailboxes =gentoo-dev

mailboxes =gentoo-announce

mailboxes =gentoo

mailboxes =freshmeat

mailboxes =duplicates

mailboxes =default

mailboxes =sent

mailboxes =friends

mailboxes =junk

mailboxes =spam

mailboxes =keep


save-hook .* =keep #mbox по умолчанию сохраняет (s) почту в =keep

subscribe gentoo-user gentoo-dev #подписанные списки


bind pager h display-toggle-weed #переключать заголовки кнопкой h


# симулировать старое url меню

macro index \cb |urlview\n 'call urlview to extract URLs out of a message'

macro pager \cb |urlview\n 'call urlview to extract URLs out of a message'


#запуск fetchmail нажатием кнопки G

macro index G "!fetchmail -a -m 'procmail -d %T'\r"

macro pager G "!fetchmail -a -m 'procmail -d %T'\r"


#редактирование .muttrc... не требует перезапуска


macro generic ,sm ":source $HOME/.muttrc\r"

macro generic \cj "!rxvt -bg wheat -e joe $HOME/.muttrc\r"


#по умолчанию список заголовков в полях удаляется перед показом почты

#игнорирует всё, кроме того, что вам нужно

ignore *

unignore Date To From: Subject X-Mailer Organization User-Agent

hdr_order Date From To Subject X-Mailer User-Agent Organization


##ваш Mutt должен поддерживать несколько цветов

##для обозначения четырех уровней выделенного текста

##данные настройки отменяют параметры общей конфигурации в /etc/mutt/Muttrc


#color quoted green default

color quoted1 magenta blue

#color quoted2 yellow default

#color quoted3 red default

#color signature cyan cyan



#эта цветовая схема взята из /etc/mutt/Muttrc.color

#закомментируйте её, если вам нужна цветовая схема по умолчанию из /etc/mutt/Muttrc

# Je vois la vie en rose :-)

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


# конец файла... но вы можете его дописывать и дописывать... :)



Это только маленький пример файла .muttrc. На самом же деле гораздо больше опций поддаются конфигурации, например, те же настройки gpg. Для примеров и помощи посмотрите http://mutt.netliberte.org/.


Теперь вы можете протестировать наш .muttrc


Листинг 4.2: Тест .muttrc

# mutt -y



После чего должно появиться окно Mutt с почтовыми ящиками, которые мы создали, когда настраивали fetchmail.


Нажмите ? для получения помощи в навигации по почтовым ящикам в Mutt.


5. SMTP


Последний шаг, это настройка nbsmtp ('No-Brainer SMTP'), используемого для отправки почты на ваш сервер SMTP. Данная настройка самая простая и требует лишь добавления нескольких строк в конфигурационный файл .muttrc


domain: домен, сообщаемый nbsmtp. Будет почти всегда похож на окончаниее вашего адреса электронной почты.


from@addr: Это тот адрес, который будет сообщаться nbsmtp в строке "from". Обратите внимание, что данный адрес может отличаться от того, что записан в поле "From:" вашего почтового клиента (MUA).


host: Сервер smtp, куда, собственно, и будет отправляться почта.




Листинг 5.1: Добавление поддержки smtp

# nano -w .muttrc

set sendmail="/usr/bin/nbsmtp -d isp.net -h smtp.isp.net -f urname@isp.net"



Теперь всё готово для создания письма. В окне Mutt нажмите m, для того чтобы написать текстовое сообщение на ваш же почтовый ящик. Mutt использует значение EDITOR или VISUAL, указываемое с помощью опций editor= в .muttrc. После того, как сообщение будет написано, нажмите y для его отправки. Если всё прошло удачно, мы увидим сообщение 'sending mail', следующее за 'New mail in =sent'.


Помните, в .muttrc у нас задано сохранять всю отправленную почту при помощи строки :set record="$HOME/MuttMail/sent"


Теперь, чтобы завершить испытание, снова запустите fetchmail для получения всей почты и вашего тестового письма, которое вы себе отправили. Как только это тестовое письмо будет найдено, нажмите h для того, чтобы посмотреть все его заголовки и полный путь прохождения почты (mail transfer path).

Примечание: Есть ещё одна программа, которая, возможно, вам пригодится, под названием urlview. Она извлекает ссылки из текстовых сообщений и перенаправляет их в ваш браузер.



Листинг 5.2: Установка urlview

# emerge urlview



После чего создайте ~/.urlview копируя конфигурационный файл из /usr/share/doc/urlview*/, и подправьте необходимые настройки под свой браузер.


Чтож, теперь у нас есть мощная почтовая система. Читайте различную документацию и руководства, а также ищите примеры конфигурационных файлов в 'google' по ключевым словам muttrc и procmailrc.