unix 2014-03-22 22-27-07
Настройка почтовой системы в Linux
Дмитрий Аленичев<dmitri@gnu.org>
Аннотация
Из данного документа вы узнаете о том, как организована работа с почтой в Linux. Также вы научитесь самостоятельно настраивать почтовую систему и работать с описанными инструментами.
Введение
С каждым годом Интернет становится неотъемлемой часть жизни все большего количества людей. Одной из услуг, которые дает нам глобальная сеть, является электронная почта. Для одних это средство ведения деловой переписки, для других возможность общения с людьми, находящимися в других странах. Но, как бы то ни было, реальности нашего времени диктуют свои правила. И сегодня электронный почтовый ящик есть даже у людей, отдаленно не представляющих, как устроена работа с почтой в операционных системах, созданных для работы в сети. Я, конечно, говорю о UNIX. А, если быть точным, о Linux, как наиболее используемом на рабочих станциях представителе POSIX-совместимых систем.
Из данного документа вы получите исчерпывающую информацию о настройке рабочей станции для работы с электронной почтой. Описаны все действия, которые необходимо выполнить для создания полнофункциональной почтовой системы. Представленные конфигурационные файлы помогут вам разобраться в настройке описанных программ.
Новые версии
Последнюю версию этого документа вы сможете найти по адресу: http://gir.nongnu.org/people/daa/texts/linuxmail.html
Благодарности
Спасибо всем, кто присылал комментарии, пожелания и вопросы.
Обратная связь
Если у вас есть чем дополнить этот документ, или вы нашли здесь информацию, на ваш взгляд, не соответствующую действительности, свяжитесь со мной по электронной почте:
<alenitchev@nm.ru>
Авторские права
Copyright 2005 Дмитрий Аленичев.
Разрешается копирование, распространение, модификация этого документа согласно условиям лицензии GNU Free Documentation License, версии 1.1 или любой более поздней версии, опубликованной Free Software Foundation.
Почтовое сообщение
Перед тем, как пойдет речь о настройки почтовой системы, необходимо уяснить, что же такое почтовое сообщение.
Почтовое сообщение состоит из заголовка (служебная информация, адрес отправителя, получателя и т. д.) и тела (текста, написанного отправителем). Заголовок отделяется от тела пустой строкой.
Попробую объяснить, что могут включать в себя заголовок и тело письма.
Заголовок письма
Здесь представлены некоторые поля заголовка. Не все поля являются обязательными для заполнения. Вам, вероятно, будет достаточно заполнить поля «To», «From» и, возможно, «Subject».
Таблица 1. Поля заголовка письма
Поле
Назначение
To Адрес получателя. Если указано несколько адресов, то они разделяются запятыми
Cc Адрес получателя копии сообщения. Если указано несколько адресов, то они разделяются запятыми. Получатели «Cc»-копии увидят адреса других получателей копии
Bcc Адрес получателя невидимой копии. Если указано несколько адресов, то они разделяются запятыми. Отличается от «Cc» тем, что получатели «Bcc»-копии не увидят адресов других получателей копии
From Адрес отправителя
Subject Тема сообщения
Date Дата отправления сообщения
Reply-To Адрес для ответа
Message-ID Автоматически генерируемая строка
Received При прохождении сообщения через каждый пункт, который необходимо пройти для доставки, вставляется данная строка, в которой указано имя пункта, время и дату получения сообщения, из какого пункта оно происходит, идентичность сообщения, какое транспортное программное обеспечение использовалось. По этим заголовкам вы сможете проследить путь сообщения
X-* Заголовки, начинающиеся с X- вы можете определять сами и заносить в них любую информацию
Organization Название организации отправителя
User-Agent MUA отправителя
Тело письма
В теле письма содержится набранный вами текст. Все вложения, которые вы определили для добавления в письмо, также будет помещены в тело.
Получение почты
Задачи программы доставки почты заключаются в следующем:
Получение почты с pop3-сервера;
Передача писем программе обработки почты;
Рассмотрим две программы данного типа: fetchmail и getmail. Они очень сильно различаются по возможностям. Fetchmail работает с большим количеством протоколов (POP2, POP3, RPOP, APOP, KPOP, IMAP4 и другие) и имеет огромное количество различных функций. Getmail, наоборот, работает только с POP3, но многим она больше нравится за свою простоту.
fetchmail
Сайт проекта: www.catb.org/~esr/fetchmail
Создайте файл ~/.fetchmailrc:
[user@machine ~/]$ touch ~/.fetchmailrc
Измените права доступа, т.к. в этом файле будут храниться ваши пароли от почты:
[user@machine ~/]$ chmod 0600 ~/.fetchmailrc
Ниже вы найдете содержимое типичного файла конфигурации для fetchmail.
Пример 1. Пример конфигурационного файла .fetchmailrc
# .fetchmailrc - конфиг для fetchmail
# записывать лог-файл
set syslog
# общие для всех учетных записей настройки
defaults protocol pop3, # протокол
timeout 60, # время ожидания (в секундах)
nokeep, # удалять почту на сервере после получения
fetchall # получать всю почту
# специфичные для учетных записей настройки (сервер, login и пароль)
#
# Учетная запись 1
poll "pop.mailhost.ru",
user "username",
password "pass";
#
# Учетная запись 2
poll "mail.freemail.ru",
user "username",
password "pass";
Таким же образом укажите в конфиге все свои почтовые ящики.
Если вы хотите, чтобы полученная почта не передавалась локальному smtp-серверу, а сразу же сортировалась программой procmail, то, в приведенном выше примере конфигурационного файла, поставьте запятую после опции fetchall и укажите опцию mda procmail -f %F:
...
fetchall, # получать всю почту
mda procmail -f %F
...
Этой опцией вы укажите на то, что полученную почту необходимо отдавать для обработки MDA (в данном случае это procmail), а не MTA, как это подразумевается по умолчанию.
Большой разницы между обработкой почты с помощью MTA или MDA нет, т. к. практически каждый MTA вызовет procmail для обработки почты. Однако, если вы по какой-либо причине отказались от установки smtp-сервера (например, при использовании программ типа "smtp-plugins for MUA"), то эта опция может быть полезной. Хотя я не считаю отказ от установки smtp-сервера хорошей идеей.
getmail
Создайте директорию ~/.getmail/ и файл getmailrc в ней:
[user@machine ~/]$ mkdir ~/.getmail
[user@machine ~/]$ touch ~/.getmail/getmailrc
Пример 2. Пример конфигурационного файла getmailrc
# getmailrc - конфиг для getmail
# общие для всех учетных записей настройки
[default]
message_log = "~/.getmail/log" # путь к логу
delete = 1 # удалять почту на сервере после получения
readall = 1 # получать всю почту
postmaster = "| procmail" # почту на обработку
#
# Учетная запись 1
[username_at_mailhost]
server = pop.mailhost.ru
username = username
password = "pass"
#
# Учетная запись 2
[username_at_freemail]
server = mail.freemail.ru
username = username
password = "pass"
Точно также опишите все свои почтовые ящики.
Обработка почты
Сайт проекта: www.procmail.org
Хочу заметить, что корреспонденцию предпочтительнее хранить в формате mbox. Рассмотрим небольшой пример.
Допустим, что вам нужно составить список всех e-mail адресов отправителей, взятых из заголовков писем, находящихся в вашем рабочем почтовом файле. Затем этот список необходимо отсортировать в алфавитном порядке, удалить дубликаты и записать в файл. В случае с mbox это очень просто. Достаточно всего одной строчки:
[user@machine ~/]$ cat ~/Mail/work | grep '^From: ' | sort | uniq > list
Однако, хранить все письма в одном файле неудобно. Намного эффективнее сортировать сообщения от различных почтовых рассылок в отдельные файлы. В этом вам поможет procmail.
Procmail будет раскладывать вашу корреспонденцию по отдельным почтовым файлам. Создайте конфиг (~/.procmailrc) и лог (~/Mail/procmail.log):
[user@machine ~/]$ touch ~/.procmailrc
[user@machine ~/]$ touch ~/Mail/procmail.log
Пример 3. Пример конфигурационного файла .procmailrc
# .procmailrc - конфиг для procmail
# ----------
# Переменные
# ----------
MAILDIR=~/Mail # каталог с почтой
LOGFILE=~/Mail/procmail.log # лог для записи всех операций
DEFAULT=~/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)
friends # файл friends в каталоге MAILDIR
# Пример: удаление писем от адресата spammer@mail.ru
:0
* ^From.*spammer@mail.ru # условие (From: spammer@mail.ru)
/dev/null # каталог /dev/null
# Пример: автоматическая отсылка PGP-ключа
0:
* ^Subject.*PGP # условие (Subject: PGP)
| (formail -r ; cat ~/key.asc) # вывести PGP-ключ
| sendmail -t # отправить его
На основе этого примера вы сможете написать свой конфиг. Все зависит от ваших потребностей в сортировке почты.
Если в вашем почтовом файле уже находится большое количество писем, нуждающихся в сортировке, то вы можете воспользоваться следующей командой:
[user@machine ~/]$ cat ~/Mail/mbox | formail -s procmail
Я надеюсь вы поняли, что procmail это очень мощная программа сортировки электронной почты. Для нее можно писать правила практически неограниченной сложности. Все ваши рассылки и другая корреспонденция будут аккуратно разложены по отдельным файлам.
Просмотр и написание почты
Сайт проекта: www.mutt.org
All mail clients suck. This one just sucks less.
--Michael Elkins
В качестве MUA я предлагаю использовать mutt. Комментарии, я думаю, излишни, т. к. это самая удобная программа для чтения и написания писем. Попробую коротко описать как ее настраивать и использовать.
Создайте файл ~/.muttrc:
[user@machine ~/]$ touch ~/.muttrc
Пример 4. Пример конфигурационного файла .muttrc
# .muttrc - конфиг для mutt
# ---------------
# Общие настройки
# ---------------
set folder=~/Mail # каталог для почты
set alias_file=~/.mail_aliases # файл алиасов
set arrow_cursor # курсор в виде '->'
set attribution="%d, %n написал:"
# начало письма при ответе
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="~/.mailcap" # путь к .mailcap
set menu_scroll # прокручивать список по одной строке
set mail_check=5 # интервал проверки почты
set mbox=+mbox # файл для прочитанных сообщений
set mime_forward=ask-no # запрашивать вид пересылаемого письма
set pager_stop # в конце письма не переходить на следующее
set postponed=+drafts # черновики
set print=ask-yes # запрос перед печатью файла
set print_command=lpr # команда печати
set record=+sent # куда сохранять отправленные письма
set signature="~/.signature" # файл с подписью к сообщениям
set show_alt # y/n вместо д/н
set send_charset="us-ascii:iso-8859-1:koi8-r:windows-1251:utf-8"
# кодировка отправляемых писем
set visual=vim # редактор вызываемый по ~v
# сортировка писем при просмотре
set sort=threads
set sort_aux=reverse-date-received
set sort_browser=reverse-date
# путь к спулу почты
# procmail уже обработал почту и вы можете указать здесь файл mbox
set spoolfile='~/Mail/mbox'
# поле From заголовка отправляемых писем
set from="Your Name <user_name@host.domain>"
# собственные заголовки писем можно устанавливать с помощью my_hdr
my_hdr X-Url: http://alenitchev.nm.ru
# ------------------------------------
# Настройки просматриваемых заголовков
# ------------------------------------
ignore *
# поля которые я хочу видеть
unignore from: subject to cc mail-followup-to \
date x-mailer x-url user-agent reply-to
# ---------------
# Привязки клавиш
# ---------------
# клавиша <up> при просмотре письма на строку вверх
bind pager <up> previous-line
# клавиша <down> при просмотре письма на строку вниз
bind pager <down> next-line
# --------------
# Почтовые файлы
# --------------
# перечислите все ваши почтовые файлы
mailboxes +mbox +work +friends +lists/debian +lists/mlug
# если вы подписаны на mailing-list'ы укажите их адреса
# это нужно для использования возможности list-reply (клавиша 'L')
lists mlug@unixcenter.ru debian-russian@lists.debian.org
folder-hook mlug "push ^[V" # при открытии этих файлов нажимать 'Esc-V'
folder-hook debian "push ^[V" # (свернуть все дискуссии)
# при открытии mlug устанавливать заголовок Reply-To
folder-hook mlug "my_hdr Reply-To: \
Moscow Linux User Group <mlug@unixcenter.ru>"
# при открытии debian устанавливать заголовок Reply-To
folder-hook debian "my_hdr Reply-To: \
Debian <debian-russian@lists.debian.org>"
# Aliases.
# Очень удобное средство - укажите здесь псевдонимы и e-mail'ы
# получателей. Для написания письма можно будет использовать
# команду mutt alias_name. E-mail, соответствующий
# alias_name будет подставлен в поле From.
alias mlug Moscow Linux User Group <mlug@unixcenter.ru>
alias support TechSupport <support@hostname.ru>
В директории /etc находится файл Muttrc. Он может послужить вам хорошим примером конфигурационного файла для mutt.
Создайте файлы ~/.mailcap и ~/.signature:
[user@machine ~/]$ touch ~/.mailcap
[user@machine ~/]$ touch ~/.signature
Файл ~/.mailcap необходим для обработки MIME-типов. Приведу небольшой пример, чтобы продемонстрировать структуру этого файла.
Пример 5. Пример конфигурационного файла .mailcap
# .mailcap - обработка MIME-типов в mutt
image/*; ee %s
audio/mod; mikmod %s
text/html; links -g %s
application/pdf; xpdf %s
Думаю, что те типы, которые вам хотелось бы обрабатывать, вы без труда добавите сами, основываясь на вышеизложенном примере. Файл ~/.signature может содержать вашу подпись, которая будет добавлена к исходящим письмам.
Итак, после окончания настройки, запускайте:
[user@machine ~/]$ mutt
Перед собой вы увидите список писем из файла mbox (~/Mail/mbox).
Ниже вы найдете таблицы с описанием основных клавиш.
Таблица 2. Клавиши mutt. Главное окно.
Клавиша
Описание
Home Перейти к первому сообщению
End Перейти к последнему сообщению
PageUp Перейти вверх на один экран
PageDown Перейти вниз на один экран
Вверх Перейти к предыдущему сообщению
Вниз Перейти к следующему сообщению
Enter Чтение письма
c Открыть почтовый файл. Внизу экрана вы увидите предложение ввести имя файла. Нажатием Tab или ? вы откроете меню выбора файла.
m Написать новое письмо
r Ответить на текущее сообщение
f Переслать текущее сообщение
d Удалить текущее сообщение
C Копировать текущее сообщение в другой файл
L List-reply. Ответ на сообщение в mail-list
q Выйти из программы
? Просмотр справки
После нажатия на клавишу m (написать новое письмо) будет открыт текстовый редактор, в котором вы сможете набрать текст почтового сообщения. После выхода из редактора появится окно mutt, в котором вы сможете произвести ряд действий перед отправкой письма.
Таблица 3. Клавиши mutt. Создание сообщения.
Клавиша
Описание
c Адресаты CC
b Адресаты BCC
s Редактирование поля Subject
r Редактирование поля Reply-To
a Прикрепить файл в виде вложения
e Вернуться к редактированию сообщения
C Копировать сообщение в файл
q Отложить сообщение
y Отправить сообщение
? Просмотр справки
Таблица 4. Клавиши mutt. Чтение сообщения.
Клавиша
Описание
Вверх Прокрутка письма вверх на одну строчку
Вниз Прокрутка письма вниз на одну строчку
q Закончить чтение
? Просмотр справки
Запустите mutt с опцией -y, чтобы увидеть список из файлов указанных в конфиге (mailboxes +mbox +work +friends). Запуск с опцией -f filename откроет указанный почтовый файл.
Отправка почты
У вас есть выбор: отправлять в помощью своего (локального) smtp-сервера или использовать какой-нибудь внешний сервер (например, провайдера). В первой версии этого руководства я рекомендовал отправлять почту с помощью smtp-сервера, поставляемого с дистрибутивом, но в этом случае вам придется позаботиться о его безопасности. Намного меньше хлопот будет при отправке через внешний сервер, но удобнее использовать хорошо настроенный локальный сервер.
Я рассмотрю четыре программы этого типа и расскажу о настройке каждой из них.
Имя машины
Перед настройкой smtp-сервера убедитесь, что у вас правильно установлено имя компьютера. Для установки имени:
Укажите полное имя машины в /etc/sysconfig/network (HOSTNAME=«yourhostname.yourdomainname»)
Запишите имя машины (без имени домена!) в /etc/HOSTNAME
Добавьте новое имя в /etc/hosts:
127.0.0.1 localhost yourhostname.yourdomainname
Sendmail
Сайт проекта: www.sendmail.org
На данный момент sendmail является smtp-сервером по умолчанию во многих дистрибутивах Linux. Этот сервер довольно громоздкий и сложный в настройке. Его можно использовать как для самостоятельной отправки писем, так и для отправки писем через другой почтовый сервер. Сразу же после установки sendmail уже можно использовать, но для пересылки писем через внешний сервер необходимо настроить smarthost.
Настройка smarthost
Откройте /etc/sendmail.cf и найдите в начале файла строки:
# "Smart" relay host (may be null)
DS
Вот после этого DS и запишите в квадратных скобках имя smtp-сервера. Должно получиться вот так:
# "Smart" relay host (may be null)
DS[smtp.server.ru]
Теперь письма будут отправляться через указанный smtp-сервер.
Ограничение доступа
Для ограничения доступа к вашему smtp-серверу определенного набора доменов вы можете использовать следующую последовательность действий. Добавьте в файл /etc/mail/access имя домена и тип ограничения:
spamers.localdomain 550 Spam is bad!
dial-up_hosts.domain REJECT
adsl_hosts.domain REJECT
Чтобы изменения вступили в силу, необходимо обновить файл /etc/mail/access.db:
[root@machine ~/]# /usr/sbin/makemap hash /etc/mail/access.db < \
/etc/mail/access
...и перезапустить sendmail:
[root@machine ~/]# /etc/rc.d/init.d/sendmail restart
Управление почтовой очередью
Почтовая очередь хранится в директории /var/spool/mqueue. Для просмотра почтовых сообщений, находящихся в очереди, а так же их состояния вы можете воспользоваться программой mailq:
[user@machine ~/]$ mailq
/var/spool/mqueue (1 request)
----Q-ID---- --Size-- -----Q-Time----- ---------Sender/Recipient---------
j1RIZop10488 59 Sun Feb 27 21:35 alenitchev
(host map: lookup (fake.net): deferred)
fake@fake.net
Как видно из приведенного выше примера, адрес хоста fake.net не найден.
Для немедленной обработки почтовой очереди предназначена программа runq.
Exim
Сайт проекта: www.exim.org
Exim является smtp-сервером по умолчанию для Debian GNU/Linux. Программа очень удобная и настроить ее не сложно.
Вы можете настроить exim во время этапа базовой настройки Debian или сделать это в любое время с помощью программы eximconfig. Рассмотрим конфигурацию для отправки почты через smarthost.
Выберите пункт «mail sent by smarthost; received via SMTP or fetchmail», введите почтовое имя машины и настройте параметры, связанные с приемом почты от других компьютеров, по своему усмотрению. Наконец, введите имя сервера, выступающего в роли smarthost.
Теперь вам нужно настроить перезапись адреса. Добавьте в файл /etc/exim/exim.conf, секцию «REWRITE CONFIGURATION»:
*@localhost ${lookup{$1}lsearch{/etc/email-addresses}\
{$value}fail} Ffsr
Для окончания настройки перезаписи адреса добавьте в файл /etc/email-addresses записи для пользователей:
root: alenitchev@nm.ru
dmitri: alenitchev@nm.ru
alenitchev: alenitchev@users.sourceforge.net
Esmtp и Msmtp
В этом разделе описаны программы не являющиеся stmp-серверами, но тем не менее позволяющие отправлять почту. Такой тип программ называется «smtp-plugins for MUA», то есть надстройка над MUA, позволяющая отсылать корреспонденцию через внешний smtp-сервер. Эти программы просты в настройке и удобны в использовании.
Esmtp
Сайт проекта: esmtp.sourceforge.net
Создайте файл ~/.esmtprc:
[user@machine ~/]$ touch ~/.esmtprc
Пример 6. Пример конфигурационного файла .esmtprc
# .esmtprc - конфиг для esmtp
#
hostname = smtp.mail_host.ru:25
username = "user_name"
password = "password"
В ~/.muttrc необходимо добавить следующую строчку:
set sendmail="esmtp -v"
Msmtp
Сайт проекта: msmtp.sourceforge.net
Создайте файл ~/.msmtprc:
[user@machine ~/]$ touch ~/.msmtprc
Пример 7. Пример конфигурационного файла .msmtprc
# .msmtprc - конфиг для msmtp
# ---------------------------
# Учетная запись по умолчанию
# ---------------------------
account default
host smtp.work_host.ru # smtp-сервер
from login@work_host.ru # e-mail
user login # логин
password pass # пароль
# ------------------------
# Локальная учетная запись
# ------------------------
account local # имя учетной записи
host localhost # используется локальный smtp-сервер
from user_name@hostname.ru # e-mail
# ---------------------------------------------------------------
# Учетная запись провайдера с аутентификацией CRAM-MD5. Порт 2500
# ---------------------------------------------------------------
account provider # имя учетной записи
host mail.super_provider.ru # smtp-сервер
port 2500 # порт
from login@super_provider.ru # e-mail
auth cram-md5 # аутентификация CRAM-MD5
user login # логин
password "pass" # пароль
В ~/.muttrc необходимо добавить следующую строчку:
set sendmail="msmtp"
Эти программы позволят вам отправлять почту через внешний smtp-сервер, не забивая себе голову проблемами администрирования почтового сервера.
Другие программы
Помимо перечисленных в этом разделе программ, существует огромное количество других почтовых серверов. Таких как: qmail, postfix, и др. Они больше подходят для использования на сервере, чем на локальной машине. Информацию о их настройке и использовании ищите в интернете.
Адресная книга
Сайт проекта: abook.sourceforge.net
Итак, ваша система уже позволяет получать, сортировать, читать, писать и отправлять письма. Теперь пора позаботиться об удобстве хранения многочисленных адресов получателей ваших сообщений. Я расскажу про программу abook, наиболее удобную консольную адресную книгу.
Запускайте abook:
[user@machine ~/]$ abook
Разобраться в интерфейсе этой программы не составит труда.
Приведу пример добавления записи. Нажимайте клавишу a и вводите имя. Открывается окно просмотра и редактирования записи. Клавиши 2, 3, 4, 5 служат для добавления к записи e-mail адресов. С помощью клавиш Влево, Вправо вы можете перемещаться между разделами «CONTACT», «ADDRESS», «PHONE», «OTHER». Окончив редактирование записи нажатием на клавишу Enter возвращайтесь к списку записей. Для написания письма выбранному адресату предназначена клавиша m. Если вы хотите написать письмо на несколько адресов сразу, то выделите нужные записи нажатием пробела и нажмите m. В abook, также как и в mutt, имеется встроенная справка - ?.
Записи вашей адресной книги хранятся в файле .abook.addressbook, а настройки программы - в .abookrc.
У этой программы имеется одна полезная возможность, которая может вам пригодиться. Это конвертирование файлов, содержащих адресную книгу, между различными форматами. Например, вам нужно получить HTML-версию вашей адресной книги. Для этого вы можете воспользоваться следующей командой:
[user@machine ~/]$ abook --convert abook .abook.addressbook html \
addressbook.html
Синтаксис этой команды:
abook --convert ФорматВходногоФайла ВходнойФайл ФорматВыходногоФайла \
ВыходнойФайл
Поддерживаемые форматы входного файла:
Таблица 5. Форматы входного файла
Имя
Описание
abook родной формат программы abook
ldif адресная книга ldif / Netscape
pine адресная книга pine
csv comma separated values
Поддерживаемые форматы выходного файла:
Таблица 6. Форматы выходного файла
Имя
Описание
abook родной формат программы abook
mutt mutt alias
html HTML-файл
pine адресная книга pine
gcrd адресная книга GnomeCard (VCard)
csv comma separated values
elm elm alias
text текст
Шифрование писем
Сайт проекта: gnupg.org
Для начала вам необходимо запустить gpg без ключей для создания каталога ~/.gnupg в котором будут храниться различные конфигурационные файлы:
[user@machine ~/]$ gpg
gpg: /home/alenitchev/.gnupg: directory created
gpg: /home/alenitchev/.gnupg/options: new options file created
gpg: you have to start GnuPG again, so it can read the new options file
Теперь вы можете создать пару ключей (public и secret) для шифрования писем и файлов:
[user@machine ~/]$ gpg --gen-key
Вам будет необходимо ответить на несколько вопросов. На этом этапе затруднений у вас возникнуть не должно. Отмечу лишь, что в качестве ключевой фразы (passphrase) необходимо выбрать что-нибудь посложнее. После окончания генерации ключа вы можете использовать GnuPG.
Экспорт открытого ключа
Экспортировать свой открытый ключ вы можете следующим образом:
[user@machine ~/]$ gpg --export -a Dmitri Alenitchev > gpg-public-key.asc
Этой командой вы экспортируете открытый ключ пользователя Dmitri Alenitchev и перенаправите вывод в файл gpg-public-key.asc.
Импорт открытого ключа
Импортировать чей-нибудь открытый ключ позволяет команда:
[user@machine ~/]$ gpg --import gpg-public-key.asc
Например:
[user@machine ~/]$ gpg --import friend-key.asc
gpg: key 8421F11C: public key imported
gpg: Total number processed: 1
gpg: imported: 1
[user@machine ~/]$ gpg --list-keys
/home/alenitchev/.gnupg/pubring.gpg
------------------------
pub 1024D/F18D5DDB 2004-12-11 Dmitri Alenitchev <alenitchev@nm.ru>
sub 2048g/8E70D455 2004-12-11 [expires: 2005-12-11]
pub 1024D/8421F12C 1997-10-05 My Friend <friend@host.domain>
sub 2048g/5E985ED4 1997-10-05
Справку о других командах вы можете получить, запустив gpg с опцией --help
Перед тем, как отправить кому-нибудь зашифрованное письмо вам необходимо импортировать public key адресата!
GnuPG + mutt
Теперь пора поговорить об использовании GnuPG при отправке и получении почты. Создавайте новое письмо в mutt, перед отправкой нажимайте клавишу p. Внизу экрана вы увидите приглашение:
(e)шифр, (s)подпись, (a)подпись как, (b)оба, (f)отказаться?
Зашифруйте свое сообщение и отправляйте адресату. После того как вы нажмете y для отправки письма, вам будет предложено ввести идентификатор ключа. Вводите имя адресата и выбирайте ключ из списка.
Защита от спама
О том, что такое спам, и зачем от него защищаться, наверняка все слышали. Здесь вы не найдете описания специальных программ, предназначенных для защиты от спама, оставим это для администраторов почтовых серверов. Я расскажу про то, как можно фильтровать сообщения, основываясь на так называемых «белых» и «черных» списках. Этот способ поможет снизить количество спама, которое вы видите перед собой ежедневно. Приступим.
Добавление адресов в «черный» или «белый» список
Для начала напишем скрипт, который будет извлекать почтовый адрес из поля From в заголовке письма.
#!/usr/bin/perl -wn
unless (/\</) { print; } else { print /<([^>]+)/, "\n"; }
Назовите его listadd, поместите в директорию /usr/local/bin и выполните команду:
[root@machine ~/]# chmod +x /usr/local/bin/listadd
Добавьте к вашему ~/.muttrc следующие строки:
# ---------- Add to black/white list ---------- #
# Для добавления адресата из режима списка писем
macro index \eb '| formail -x From: | listadd >> ~/Mail/blacklist'
macro index \ew '| formail -x From: | listadd >> ~/Mail/whitelist'
# Для добавления адресата из режима чтения письма
macro pager \eb '| formail -x From: | listadd >> ~/Mail/blacklist'
macro pager \ew '| formail -x From: | listadd >> ~/Mail/whitelist'
# ---------- Add to black/white list ---------- #
Теперь при чтении писем в mutt вам достаточно нажать Esc-b для добавления отправителя к «черному» списку и Esc-w для добавления к «белому». Не добавляйте mail-листы в «белый» список, т. к. в сообщения из «белого» списка будут складываться в ваш default-почтовый файл.
Фильтрация
Теперь поговорим собственно о защите, то есть о фильтрации. Вам придется дополнить ваш ~/.procmailrc новыми правилами. Для начала добавьте следующую строку к вашим переменным:
SPAM=/home/user_name/Mail/spam # Файл для писем со спамом
Далее добавьте следующие правила перед всеми вашими персональными правилами сортировки.
# ---------- Spam Filters ---------- #
# -----------------------
# "Белый"/"Черный" список
# -----------------------
# Если отправитель в "белом" списке, то в $DEFAULT.
:0:
* ? formail -x"From" -x"From:" -x"Sender:" \
-x"Reply-To:" -x"Return-Path:" -x"To:" \
| egrep -is -f $MAILDIR/whitelist
$DEFAULT
# Если отправитель в "черном" списке, то в /dev/null
:0:
* ? formail -x"From" -x"From:" -x"Sender:" \
-x"Reply-To:" -x"Return-Path:" -x"To:" \
| egrep -is -f $MAILDIR/blacklist
/dev/null
Эффективной практикой борьбы со спамом является фильтрация писем с заголовками вроде «X-Spam-Status: Yes», «X-Spam-Level: 15».
# --------------
# Спам-заголовки
# --------------
# Письма с заголовками X-Advertisement
:0:
* ^X-Advertisement:.*
$SPAM
# Письма с установленным заголовком X-Spam-Status
:0:
* ^X-Spam-Status: Yes
$SPAM
# Письма с заголовком X-Spam-Level равным 15 или выше
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
$SPAM
# Нет получателя
:0:
* To:[ ]*$
$SPAM
# Пустое поле To:
:0:
* !^To: .*
$SPAM
# ---------- Spam Filters ---------- #
Замечание: Письма, отправитель которых указан в файле blacklist будут утеряны навсегда (отправлены в /dev/null). Если вас это не устраивает, то замените /dev/null на $SPAM или какой-нибудь другой файл.
Надеюсь, вы поняли, что приведенные выше правила не являются каким-либо эталоном. Это лишь то, что помогает мне в борьбе со спамом. Основываясь на этом примере вы сможете сформировать свой личный защитный комплекс, отвечающий вашим запросам.
Не забывайте просматривать ваш файл $SPAM, постоянно пополняйте ваши файлы с «белым» и «черным» списком и забудьте о проблеме спама!
Заключение
Мы настроили систему для работы с почтой. Не правда ли, это было совсем не сложно?
Если у вас что-нибудь не получилось, то вы можете задать вопрос в форум, посвященный Linux, или в тематический mail-list.
Развитие этого руководства продолжается. Присылайте пожелания по поводу того, каким вы хотите видеть его дальнейшее развитие.