Настройка клиентской почтовой системы в Linux (mail linux procmail mutt fetchmail)
Ключевые слова: mail, linux, procmail, mutt, fetchmail, (найти похожие документы)
From: Дмитрий А. Аленичев <zlyden@nightmail.ru.>
Newsgroups: email
Date: Mon, 2 Dec 2004 14:31:37 +0000 (UTC)
Subject: Настройка клиентской почтовой системы в Linux
Оригинал: http://zlyden.nightmail.ru/docs/linuxmail.html
Настройка почтовой системы в Linux
Copyright © 2004 Dmitri A. Alenitchev
История:
Версия 1.0 30 Ноября 2004
Первая версия. Работа с почтой: fetchmail, procmail, mutt, abook. FAQ.
Содержание
Введение
1. Получение почты
2. Обработка почты
3. Просмотр и написание почты
4. Адресная книга
Заключение. Пара слов об отправке почты
FAQ. Часто задаваемые вопросы (ЧаВО)
Дополнительные источники информации
Введение
Настроить Линукс для работы с почтой совсем не сложно. Нужно лишь
написать конфигурационные файлы для нескольких ключевых
узкоспециализированных программ, на которых и будет основана наша
удобная и многофункциональная система работы с электронной почтой.
Фактически эта статья описывает все основные аспекты работы с почтой в
Linux.
В качестве программ для работы с почтой я выбрал:
* fetchmail - Прост в настройке. Все необходимые функции.
* procmail - Неограниченные возможности по обработке почты!
* mutt - Лучший консольный MUA (Mail User Agent).
* abook - Очень удобная консольная адресная книга.
* sendmail - Из комплекта ASPLinux. Ничего настраивать не нужно.
Все эти программы поставляются с любым современным дистрибутивом
Linux.
Получение почты (fetchmail)
В нашей почтовой системе fetchmail будет отвечать за прием почты.
Итак, создаем файл /home/user_name/.fetchmailrc:
$ touch /home/user_name/.fetchmailrc
Изменяем права доступа, т.к. в этом файле будут храниться наши пароли
от почты:
$ chmod 0600 /home/user_name/.fetchmailrc
Теперь открываем его своим любимым редактором и пишем:
# .fetchmailrc - конфиг для fetchmail
# записывать лог-файл
set syslog
# единые настройки для всех учетных записей
defaults protocol pop3,
timeout 60,
nokeep, # удалять почту на сервере после получения
fetchall # получать всю почту
# можно настроить дополнительные параметры
#
# Учетная запись 1
poll "pop.mailhost.ru",
user "username",
password "pass";
#
# Учетная запись 2
poll "mail.freemail.ru",
user "username",
password "pass";
Таймаут указывается в секундах, то есть, в данном случае, 1 минута.
Таким же образом укажите в конфиге все свои почтовые ящики.
Получение почты мы настроили. Теперь дело за обработкой.
Обработка почты (procmail)
Procmail будет раскладывать нашу корреспонденцию по отдельным почтовым
файлам. Создаем конфиг (.procmailrc) и лог (procmail.log):
$ touch /home/user_name/.procmailrc
$ touch /home/user_name/Mail/procmail.log
Открываем конфиг и пишем:
# .procmailrc - конфиг для procmail
# Переменные
#
MAILDIR=/home/user_name/Mail # каталог с почтой
LOGFILE=/home/user_name/Mail/procmail.log # лог для записи всех операций
DEFAULT=/home/user_name/Mail/mbox # файл для не отсортированных сообщений
#
# Правила сортировки почты
#
# Пример: сортировка почты, приходящей на e-mail user_name@host.ru
:0
* ^To.*user_name@host.ru # условие (To: user_name@host.ru)
host_mail # файл host_mail в каталоге MAILDIR
#
# Пример: mailing-list Moscow LUG
:0
* ^To.*mlug@UnixCenter.RU # условие (To: mlug@UnixCenter.RU)
mlug # файл mlug в каталоге MAILDIR
#
# Пример: сортировка от адресатов из friends.org
:0
* ^From.*@friends.org # условие (From: *@friends.org)
fromfriends # файл fromfriends в каталоге MAILDIR
#
# Пример: удаление писем от адресата spammer@microsoft.com
:0
* ^From.*spammer@microsoft.com # условие (From: spammer@microsoft.com)
/dev/null # каталог /dev/null
#
# Пример: автоматическая отсылка PGP-ключа
0:
* ^Subject.*PGP # условие (Subject: PGP)
| (formail -r ; cat /home/user_name/key.asc) # вывести PGP-ключ
| sendmail -t # отправить его
Я надеюсь вы поняли, что procmail это очень мощная программа
сортировки электронной почты. Для нее можно писать правила практически
неограниченной сложности. Все ваши рассылки и другая корреспонденция
будут аккуратно разложены по отдельным файлам.
Просмотр и написание почты (mutt)
В качестве MUA, как я уже писал, у нас будет работать mutt. Это
консольная, очень удобная и простая в использовании, программа для
чтения и написания писем. Попробую коротко описать как ее настраивать
и использовать.
Создаем файл /home/user_name/.muttrc:
$ touch /home/user_name/.muttrc
Открываем и пишем:
set folder=/home/user_name/Mail # каталог для почты
set arrow_cursor # курсор в виде '->'
set attribution="%d, %n написал:"
# начало письма при ответе
set charset="koi8-r" # кодировка терминала
set copy=yes # сохранять копии исходящих писем
set edit_headers # редактировать заголовки при создании письма
set editor="vim" # редактор писем
set folder_format="%t%N %-30.30f %8s"
# вид списка папок
set index_format="%4C %Z %{%b %d} %-31.31F %N (%4c) %s"
# вид списков писем
set mailcap_path="/home/user_name/.mailcap"
# путь к .mailcap
set menu_scroll # прокручивать список писем по 1 строке
set mail_check=5 # интервал проверки почты
set mbox=+mbox # файл для хранения прочитанных сообщений
set mime_forward=ask-no # запрашивать вид пересылаемого письма
set postponed=+drafts # черновики
set print=ask-yes # запрос перед печатью файла
set print_command=lpr # команда печати
set record=+sent # куда сохранять отправленные письма
set signature="~/.signature" # файл с подписью к сообщениям
set show_alt # y/n вместо д/н
set pager_stop # в конце письма не переходить на следующее
set send_charset="us-ascii:iso-8859-1:koi8-r:windows-1251:utf-8"
# кодировка отправляемых писем
#
# сортировка писем при просмотре
set sort=threads
set sort_aux=reverse-date-received
set sort_browser=reverse-date
#
set spoolfile='/var/spool/mail/user_name'
# путь к спулу почты
#
set from="Your Name <user_name@host.domain.>"
# поле From заголовка отправляемых писем
#
# файлы c почтой
mailboxes 'echo /home/user_name/Mail/*'
#
# если вы подписаны на mailing-list'ы укажите здесь адреса
subscribe zopyrus@itconnection.ru
В каталоге /etc находится файл Muttrc. Он может послужить вам хорошим
примером конфигурационного файла для mutt.
Создайте файлы /home/user_name/.mailcap и /home/user_name/.signature:
$ touch /home/user_name/.mailcap
$ touch /home/user_name/.signature
Файл .mailcap нам необходим для обработки MIME-типов. Приведу
небольшой пример, чтобы продемонстрировать структуру этого файла:
text/html; links %s
image/gif; xview %s
image/jpg; xview %s
Думаю, что типы, которые вам хотелось бы обрабатывать вы без труда
добавите сами.
В файле .signature укажите свою подпись. Пример я думаю приводить не
надо ;-)
Итак, настройка окончена, запускаем:
$ mutt
Перед собой мы видим список писем из спула
(/var/spool/mail/user_name). Нажатием клавишы '?' открываем справку.
Смотрим список клавиш, на которые нам придется нажать не один раз в
процессе ежедневной работы с этой программой. Выход из справки - 'q'.
Чтобы открыть какой-нибудь почтовый файл следует нажать 'c'. Внизу
экрана мы видим предложение ввести имя файла. Нажимайте 'Tab' или '?'
и откроется окно выбора файла. Выбираем какой-нибудь файл и видим
список почтовых сообщений. Клавишы 'Вверх', 'Вниз' - перемещение по
списку писем; 'Enter' - чтение письма; 'Page Up', 'Page Down' -
страничная прокрутка письма. Об остальных клавишах вы без труда
найдете нужную информацию во встроенной справке.
Адресная книга (abook)
Итак, наша система уже позволяет получать, сортировать и создавать
письма. Теперь пора позаботиться об удобстве написания писем.
Запускаем abook:
$ abook
Разобраться в интерфейсе этой программы не составит труда.
Приведу пример добавления записи. Нажимаем клавишу 'a', вводим имя.
Открывается окно просмотра и редактирования записи. Клавишы
'2','3','4','5' служат для добавления к записи e-mail адресов.
Клавишами 'Влево','Вправо' перемещаемся между разделами 'CONTACT',
'ADDRESS', 'PHONE', 'OTHER'. Окончив редактирование записи нажатием
клавишы 'Enter' возвращаемся к списку записей. Для написания письма
выбранному адресату предназначена клавиша 'm'. Если вы хотите написать
письмо на несколько адресов сразу, то выделите нужные записи нажатием
пробела и нажмите 'm'. В abook, также как и в mutt, имеется встроенная
справка - '?'
Записи вашей адресной книги хранятся в файле .abook.addressbook, а
настройки программы - в .abookrc. Кстати, рекомендую поменять строку
'www_command=lynx' на 'www_command=links', так как links все-таки
более удобный браузер, чем lynx.
Заключение. Пара слов об отправке почты
Мы настроили систему для работы с почтой. Не правда ли, это было
совсем не сложно?
Для отправки почты я рекомендую использовать локальный smtp-сервер.
Это может быть любой из популярных продуктов: sendmail, qmail, postfix
и другие. Обычно в составе дистрибутива имеется какая-нибудь из
перечисленных выше программ, причем с настройками по умолчанию, то
есть сразу после установки, их можно использовать по назначению.
Именно по-этому я не стал уделять внимание настройке сервера отправки
почты в своей статье.
FAQ. Часто задаваемые вопросы (ЧаВО)
В: Как проверять почту при каждом подключении к Интернет?
Скрипты, находящиеся в паке /etc/ppp/ip-up.d/ выполняются каждый раз
при подключении к Интернет. Кидайте в /etc/ppp/ip-up.d/ скрипт
следующего содержания:
#!/bin/sh
FETCHMAIL=/usr/bin/fetchmail
[ ! -x "$FETCHMAIL" ] || exec "$FETCHMAIL" > /dev/null 2>&1
В: Как отправлять отложенную почту при каждом подключении к Интернет?
В ту же папку (/etc/ppp/ip-up.d/) кладете скрипт:
#!/bin/sh
SENDMAIL=/usr/sbin/sendmail
[ ! -x "$SENDMAIL" ] || exec "$SENDMAIL" -q >/dev/null 2>&1
Данный скрипт можно совместить в одном файле с предыдущим
В: Как автоматически декодировать почту закодированную uuencode
Что-то типа этого:
:0 B
* ^begin 644 .*
{
MAILDIR=$HOME/files
:0
| uudecode
}
Добавьте это правило к вашему .procmailrc
Дополнительные источники информации
Прочитайте документацию для каждой программы (/usr/share/doc/), а
также посмотрите man page.