Mutt'ная дока

Copyright © 2004 Mike Belopuhov, mkb@cvs.hnet.spb.ru


Оригинал: openbsd.hnet.spb.ru

Содержание:

1. Об использовании почты в UNIX

2. Получение почты -- fetchmail

3. Обработка принятой корреспонденции -- procmail

4. Посылка писем

4.1. sendmail

4.2. msmtp

5. Роль mutt в этом всем деле

6. Фильтры спама

6.1. Bayesian spamfilter

7. See Also


1. Об использовании почты в UNIX

В этой статье аккумулирован опыт многих авторов, посвятивших какую-либо часть своего времени теме электронной почты. И прежде всего я хочу выразить им свою признательность. Эта статья не ставит себе целью описать весь функционал используемых программ, на то есть соответствующие страницы руководства.

Сразу же хочу ответить на вопрос "Почему mutt?": потому что это действительно удобно. Unix way это, когда несколько отдельных программ делают свою работу на 5+ и, объеденив все их усилия вместе, можно получить мощную, настраиваемую и расширяемую систему, в данном случае, для работы с электронной корреспонденцией.

Возрастающая популярность mutt говорит о реинкарнации стандартных для Unix подходов к решению каждодневных задач. То, что все большее и большее количество начинающих и опытных пользователей обращают свой взор на консольные почтовые клиенты, и прежде всего на mutt, дает возможность говорить о том, что идеи Unix процветают. Так тому и быть!

Покончив с идеологическими вопросами, перейдем к техническим. Та связка программ, которую предлагается использовать не нова, что позволяет говорить о ее удобстве и простоте. Итак процесс работы с почтой начинается с приема письма. Эту роль уже несколько лет отводят программе fetchmail. Она поддерживает все основные протоколы приема почты (различные версии IMAP и варианты POP3). Далее, вместо того, чтобы отдать почту SMTP серверу на localhost, мы будем ее отдавать для локальной доставки procmail'у, который обеспечит необходимую фильтрацию и разбор писем по почтовым ящикам. Но все по порядку...

2. Получение почты -- fetchmail

Итак получение почты. Мы ограничимся рассмотрением приема почты по POP3 протоколу. Выглядит это так: в файл .fetchmailrc в домашней директории пользователя записывается подобная информация:

poll mail.server.com proto pop3 user 'username' pass 'password' is 'localuser' here mda 'procmail -d %T'

Параметр mda указывает кому отдать письма после приема для доставки (по умолчанию используется sendmail). В данном случае мы отдаем их procmail'у.

Для каждого ящика делается своя запись наподобие этой.

3. Обработка принятой корреспонденции -- procmail

Фильтровать почту можно как угодно. Потенциал procmail по-настоящему велик. В примере мы будем фильтровать почту, приходящую с дискуссионного листа в отдельный ящик и еще кое-что. Для этого в ~/.procmailrc пишется следующее:

MAILDIR= $HOME/Mail LOGFILE= /dev/null LOGABSTRACT= no VERBOSE= off FORMAIL= /usr/local/bin/formail DEFAULT= $MAILDIR/default :0 * ^Subject:.*(credit|cash|money|debt|sex|sale|loan) $MAILDIR/spam :0 Whc: .msgid.lock | $FORMAIL -D 16384 .msgid.cache :0 a $MAILDIR/duplicates :0 * ^Content-type:.*html $MAILDIR/junk :0 * ^X-Mailing-List: openbsd\@openbsd\.ru $MAILDIR/openbsd_ru

Значение переменных MAILDIR, LOGFILE, VERBOSE, FORMAIL должно быть понятно из контекста. Подробнее можно узнать на странице руководства procmailrc(5).

Все что прошло, будет сваливаться в ~/Mail/default -- это и будет основной почтовый ящик. Письма дискуссионного листа будут попадать в отдельный ящик. HTML письма будут сохраняться в ящике ~/Mail/junk. Дубликаты писем будут сохраняться в ~/Mail/duplicates. Вызов formail нужен для фиксирования прошедших писем по полю Message-ID. Результат работы formail будет сохраняться в ~/Mail/.msgid.cache .

4. Посылка писем

Собственно здесь рекомендовать что-либо сложнее, поскольку sendmail это обычно обертка (wrapper) вокруг реальной почтовой системы. Поэтому разобъем этот параграф на несколько частей. Я напишу о sendmail (еще сумел написать о msmtp), кто хочет, пусть добавит про другие MTA. Вообще не грех посмотреть в параграфе See Also в разделе Статьи.

4.1. sendmail

Говорить много не придется, поскольку sendmail практически не требует конфигурации. Единственное, что если Вы не хотите сами доставлять почту SMTP серверу получателя или вынуждены использовать какой-либо промежуточный SMTP сервер (к примеру корпоративный почтовый сервер или сервер Вашего ISP), то это можно осуществить, указав в sendmail.mc строку:

define(`SMART_HOST', `mail.isp.com')dnl

Обратите внимание на открывающуюся и закрывающуюся кавычки.

4.2. msmtp

Это вещь, господа! Если Вы хотите отправлять почту не через свой SMTP, а, например, через SMTP одного из бесплатных почтовых серверов (особенно через те сервера, где присутствует аутентификация), то msmtp это то, что Вам нужно!

В ~/.muttc меняете значение параметра sendmail на "/usr/local/bin/msmtp" и создаете простой rc-файл (~/.msmtprc ):

account default host mail.server.com from username@mail.server.com user username password mypassword auth plain

Домашняя страница проекта: msmtp.sf.net. Порт для OpenBSD можно взять здесь.

5. Роль mutt в этом всем деле

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

Поскольку с конфигурацией mutt можно разбираться неделями, то стартовая конфигурация никогда не повредит...

# Сброс настроек ignore * unignore Date To From: Subject # # Здесь оставлено место для цветовой гаммы... # # Забиндить на кнопку 'G' прием почты macro index G "!fetchmail -a -f ~/.fetchmailrc" macro pager G "!fetchmail -a -f ~/.fetchmailrc" macro generic G "!fetchmail -a -f ~/.fetchmailrc" # В mutt нет адресной книги, поэтому мы польземся алиасами source "~/.mail_aliases" set alias_file="~/.mail_aliases" # Кириллизация всего и вся ;) set allow_8bit=yes set ascii_chars=yes set charset="koi8-r" set send_charset="koi8-r:us-ascii:iso-8859-1:utf-8" # Не пищать! set beep=no # Внешний вид просмотрщика ящика set index_format="%4C %Z %{%b %d} %-15.15F %s" set to_chars=" TCF" set sort=threads # Что считать за квотирование set quote_regexp="^([ \t[A-Za-z]*]*[>+])+" # Какие заголовки отображать hdr_order Date From To Subject # Весьма удобная штука set pager_context=1 set pager_index_lines=6 # Различные предустановки ответов set include=ask-yes set fast_reply=yes set confirmappend=no # К написанию писем set edit_headers=yes set attribution="On %d, %n wrote:" set date_format="!%a, %b %d, %Y at %H:%M %Z" set indent_string="> " set editor="vim" # Почтовые ящики set folder="~/Mail" mailboxes =default mailboxes =openbsd_ru subscribe openbsd_ru set mbox="~/Mail/default" set mbox_type=mbox set postponed="~/Mail/postponed" set record="~/Mail/sent" set sort_browser=reverse-size # Все связанное с отсылкой писем set realname="Name Surname" set from="Name Surname <username@mail.server.com>" set envelope_from=yes set sendmail="/usr/sbin/sendmail -oi" # ПЖП пусть отдохнет... set pgp_verify_sig=no

Все это пишется в ~/.muttrc.

Надо сказать, что почтовые алиасы (~/.mail_aliases), заменяющие адресную книгу, записываются несложно:

mkb mkb@rbcmail.ru, mkb-mall@list.ru leolik leolik@hnet.spb.ru

Вниманее: Если Вы хотите поэкспериментировать с доставкой почты, добавте к опциям fetchmail опцию -k. В этом случае почта с сервера удаляться не будет.

Теперь про цвета... вот схема от Owl:

color hdrdefault red default color quoted brightblue default color signature red default color indicator brightyellow red color error brightred default color status yellow blue color tree magenta default color tilde magenta default color message brightcyan default color markers brightcyan default color attachment brightmagenta default color search default green color header brightred default ^(From|To|Cc|Reply-To|Subject): color body magenta default "(ftp|https?)://[^ ]+" color body magenta default [-a-z_0-9.+]+@[-a-z_0-9.]+ color underline brightgreen default # attributes when using a mono terminal mono header underline ^(From|To|Cc|Reply-To|Subject): mono quoted bold

Если Вы готовы, то самое время запустить mutt:

$ mutt -y

Попробуйте принять почту, нажав 'G'. Если все прошло успешно, Вы можете убрать опцию -k fetchmail'а (если Вы ее устанавливали).

Наиболее вероятные в данный момент действия, а следовательно и комбинации клавиш отображаются сверху. Полный список можно получить нажав `?'.

6. Фильтры спама

Постоянно пополняющийся раздел о борьбе со спамом расположен здесь. Там так же есть ссылка на небольшой фильтр рекламы в письмах дискуссионных листов Subscribe.ru. Не грех будет продублировать ссылку -- разъяснения смотреть здесь.

6.1. Bayesian spamfilter

Небольшое howto по прикручиванию bmf к mutt лежит сдесь.

7. See Also

Страницы руководства (man pages):

fetchmail(1)

mutt(1)

muttrc(5) -- Очень полезно. Подробно рассказано о конфигурации mutt. Также следует посмотреть комментарии в примере rc файла, поставляющимся с mutt, обычно это /etc/mutt/Muttrc (или что-то наподобие, к примеру /usr/local/share/examples/mutt/Muttrc).

procmail(1)

procmailrc(5) -- Достаточно подробно описан конфигурационный файл procmail'а

procmailex(5) -- Примеры procmailrc. Обязательно посмотреть

sendmail(8)

Статьи:

Почтовая система для домашней машины, автор Илья Воронин.

Быстрое руководство пользователя E-mail клиента Mutt, перевод Ивана Зенкова.

getmail+procmail+mutt+msmtp (на примере FreeBSD), автор Роман Богородский.


Last updated: $Id: mutt.html,v 1.5 2004/09/05 14:43:27 mkb Exp $