Copyright © 2004 Mike Belopuhov, mkb@cvs.hnet.spb.ru
Содержание:
1. Об использовании почты в UNIX
2. Получение почты -- fetchmail
3. Обработка принятой корреспонденции -- procmail
В этой статье аккумулирован опыт многих авторов, посвятивших какую-либо часть своего времени теме электронной почты. И прежде всего я хочу выразить им свою признательность. Эта статья не ставит себе целью описать весь функционал используемых программ, на то есть соответствующие страницы руководства.
Сразу же хочу ответить на вопрос "Почему mutt?": потому что это действительно удобно. Unix way это, когда несколько отдельных программ делают свою работу на 5+ и, объеденив все их усилия вместе, можно получить мощную, настраиваемую и расширяемую систему, в данном случае, для работы с электронной корреспонденцией.
Возрастающая популярность mutt говорит о реинкарнации стандартных для Unix подходов к решению каждодневных задач. То, что все большее и большее количество начинающих и опытных пользователей обращают свой взор на консольные почтовые клиенты, и прежде всего на mutt, дает возможность говорить о том, что идеи Unix процветают. Так тому и быть!
Покончив с идеологическими вопросами, перейдем к техническим. Та связка программ, которую предлагается использовать не нова, что позволяет говорить о ее удобстве и простоте. Итак процесс работы с почтой начинается с приема письма. Эту роль уже несколько лет отводят программе fetchmail. Она поддерживает все основные протоколы приема почты (различные версии IMAP и варианты POP3). Далее, вместо того, чтобы отдать почту SMTP серверу на localhost, мы будем ее отдавать для локальной доставки procmail'у, который обеспечит необходимую фильтрацию и разбор писем по почтовым ящикам. Но все по порядку...
Итак получение почты. Мы ограничимся рассмотрением приема почты по POP3 протоколу. Выглядит это так: в файл .fetchmailrc в домашней директории пользователя записывается подобная информация:
poll mail.server.com proto pop3
user 'username' pass 'password' is 'localuser' here
mda 'procmail -d %T'
Параметр mda указывает кому отдать письма после приема для доставки (по умолчанию используется sendmail). В данном случае мы отдаем их 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 .
Собственно здесь рекомендовать что-либо сложнее, поскольку sendmail это обычно обертка (wrapper) вокруг реальной почтовой системы. Поэтому разобъем этот параграф на несколько частей. Я напишу о sendmail (еще сумел написать о msmtp), кто хочет, пусть добавит про другие MTA. Вообще не грех посмотреть в параграфе See Also в разделе Статьи.
Говорить много не придется, поскольку sendmail практически не требует конфигурации. Единственное, что если Вы не хотите сами доставлять почту SMTP серверу получателя или вынуждены использовать какой-либо промежуточный SMTP сервер (к примеру корпоративный почтовый сервер или сервер Вашего ISP), то это можно осуществить, указав в sendmail.mc строку:
define(`SMART_HOST', `mail.isp.com')dnl
Обратите внимание на открывающуюся и закрывающуюся кавычки.
Это вещь, господа! Если Вы хотите отправлять почту не через свой 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 можно взять здесь.
...очень непростая -- отображать письма, строить нити обсуждения, подготавливать письма к отправке, запускать программы зборщика почты и программу отправки почты.
Поскольку с конфигурацией 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'а (если Вы ее устанавливали).
Наиболее вероятные в данный момент действия, а следовательно и комбинации клавиш отображаются сверху. Полный список можно получить нажав `?'.
Постоянно пополняющийся раздел о борьбе со спамом расположен здесь. Там так же есть ссылка на небольшой фильтр рекламы в письмах дискуссионных листов Subscribe.ru. Не грех будет продублировать ссылку -- разъяснения смотреть здесь.
Небольшое howto по прикручиванию bmf к mutt лежит сдесь.
Страницы руководства (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 $