Gentoo Logo

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


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

Содержание:

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                ##проверьте правильность пути
LOGFILE=$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.



Для печати

Обновлено 20 мая 2003

Исходный документ обновлен 17 сентября 2006

Аннотация: Данное руководство расскажет вам, с чего начинается использование мощных консольных приложений для работы с электронной почтой. Таких, например, как fetchmail, procmail, mutt и nbsmtp.

Mike Polniak
автор

Ken Nowack
редактор

Иван Зенков
переводчик

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.