Volgograd

Волгоград Linux User Group

Организована 23 ноября 2002 года

Проект заморожен Птн Июл 6 02:11:14 MSD 2012


Вход:  Пароль:  

ГраблеВодство/articles/localMailSystem


Настройка локальной почтовой системы


Оглавление документа

О чем этот документ?


В этом документы я попытался коротко рассказать о настройке почтовой системы на вашей
домашней машине. Для этого я использую postfix+fetchamil+procmail.

Что мы будем делать? Мы будем настраивать отправку писем (postfix) через smtp сервер,
обычно этот сервер вашего провайдера, забор почты с вашего ящика по pop3 или imap
протоколу (fetchmail) и сортировку писем по папкам (procmail).

Что нам нужно.
  1. Linux (у меня ALT Linux Master 2.2 ) :) http://altlinux.ru
  2. postfix (у меня postfix-1.1.13-alt0.2 postfix-smtpd-1.1.13-alt0.2 ) http://www.postfix.org/
  3. fetchmail (у меня fetchmail-6.2.1-alt1) http://catb.org/~esr/fetchmail/
  4. procmail (у меня procmail-3.22-alt3) http://www.procmail.org/
  5. ну и конечно один почтовый клиент (mutt) http://www.mutt.org/
  6. и один текстовый редактор (vim) http://www.vim.org/

Отправка писем


Cтавим пакеты postfix postfix-smtpd


После установки смотрим файл /etc/postfix/master.cf, в этом файле должен быть
раскомментирована следующая строка
smtp inet n – y – - smtpd

После чего открываем файл /etc/postfix/main.cf.
И правим следующие строки:

myhostname = user — т.е. мы указываем имя своего компа.
Например, есть у нас сервер smtp провайдера vlink.ru, и там у меня есть почтовый
пользователь user.

mydomain = vlink.ru — т.е. домен нашего сервера smtp

relayhost = [ip.adr] или dns-имя — вы вводите [10.10.3.2] или smtp.vlink.ru, т.е.
или ip адрес в квадратных скобках или его dns-имя, но уже без скобок. Если укажете
ip-адрес, то ставьте disable_dns_lookups = yes — нефиг тратить время на поиск его dns
имени.

Все, редактировать закончили, сохранили и вышли.

Теперь нам надо, чтобы наш postfix стартовал при каждой загрузке системы.


Ну и перечитаем конфиги.


Ну вроде все, можете спокойно отправлять письма. :)

Забор почты с ящика по pop3 или imap


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

Устанавливаем fetchmail


В домашнем каталоге создаем файл .fetchmailrc со следующем содержанием

  • set postmaster “user” — имя пользователя
  • set bouncemail — отсылать почтовые ошибки, автору письма
  • set no spambounce — не отсылать обратно
  • poll email_server protocol pop3 username «email_username» password «email_password» — запросить email_server по протоколу pop3 используя имя email_username и пароль email_password
  • flush — удалять на сервере все просмотренные письма после их забора.

Забираем почту
  1. Соединяемся с провайдером
  2. И от вашего пользователя запускаем команду fetchmail

Все, почта с сервера забрана и отдана на «растерзание» локальному серверу postfix, который в свою очередь вызовет procmail.

Желательно man fetchmail. Особо хотелось бы обратить внимание на опции fetchmail fethlimit и set daemon

Регулярные выражения


Для понимания правил сортировки надо немного знать регулярные выражения (regex).

Выражение — это строка символов. Символы, которые имеют особое назначение, называются метасимволами. Так, например, кавычки могут выделять прямую речь, т.е. быть метасимволами для строки, заключенной в эти кавычки. Регулярные выражения — это набор символов и/или метасимволов, которые наделены особыми свойствами.

Основное назначение регулярных выражений — это поиск текста по шаблону и работа со строками.

  • Звездочка — "*" — означает любое количество символов в строке, предшествующих «звездочке», в том числе и нулевое число символов.
    Выражение «1133*" — означает 11 + один или более символов “3” + любые другие символы: 113, 1133, 113312, и так далее.
  • Точка — . — означает не менее одного любого символа, за исключением символа перевода строки (\n).
    Выражение “13." будет означать 13 + по меньшей мере один любой символ (включая пробел): 1133, 11333, но не 13 (отсутствуют дополнительные символы).
  • Символ — ^ — означает начало строки, но иногда, в зависимости от контекста, означает отрицание в регулярных выражениях.
  • Знак доллара — $ — в конце регулярного выражения соответствует концу строки.
    Выражение "^$" соответствует пустой строке.

  • Символы ^ и $ иногда еще называют якорями, поскольку они означают, или закрепляют, позицию в регулярных выражениях.
  • Квадратные скобки — "[...]" — предназначены для задания подмножества символов. Квадратные скобки, внутри регулярного выражения, считаются одним символом, который может принимать значения, перечисленные внутри этих скобок..
    Выражение "[xyz]" — соответствует одному из символов x, y или z.
    Выражение "[c-n]" соответствует одному из символов в диапазоне от c до n, включительно.
    Выражение "[B-Pk-y]" соответствует одному из символов в диапазоне от B до P или в диапазоне от k до y, включительно.
    Выражение "[a-z0-9]" соответствует одному из символов латиницы в нижнем регистре или цифре.
    Выражение "[^b-d]" соответствует любому символу, кроме символов из диапазона от b до d, включительно. В данном случае, метасимвол ^ означает отрицание.
    Объединяя квадратные скобки в одну последовательность, можно задать шаблон искомого слова. Так, выражение "[Yy][Ee][Ss]" соответствует словам yes, Yes, YES, yEs и так далее. Выражение "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" определяет шаблон для поиска любого номера карточки социального страхования (для США).
  • Обратный слэш — \ — служит для экранирования специальных символов, это означает, что экранированные символы должны интерпретироваться буквально, т.е. как простые символы. Комбинация "\$" указывает на то, что символ "$" трактуется как обычный символ, а не как признак конца строки в регулярных выражениях. Аналогично, комбинация "\\" соответствует простому символу "\".

Ну теперь вернемся к нашим баранам.

Использование procmail для сортировки поступившей почты


Как всегда надо чего-нибудь поставить


Теперь создаем в домашнем каталоге файл .procmailrc


  • MAILDIR=$HOME/mail — определяем основную папку, в которой у нас будет лежать почта
  • DEFAULT=$MAILDIR/default.mbox — почтовый ящик куда попадет почта, если она не удовлетворяет любому из правил.

Далее идут правила. Проверка писем начинается с первого правила, если не
удовлетворяет, то проверяется по второму и так далее. Каждое правило начинается с
:0: — блокировка данного ящика, любая другая программа не сможет обратиться к этому
файлу. Потом * правило. При этом на следующей строке может быть и еще одно, и так
далее. В конце ставится имя почтового ящика, в который будет сложена
корреспонденция.

Для лучшего понимания правил приведу пример письма.

  • ^TO.*community@altlinux.ru — строка начинается с TO, между TO и
community@altlinux.ru может находиться 0 или более символов. Procmail ищет такую
подстроку в заголовке письма. Если находит, то кладет в указанную папку, если нет
то смотрит следующее условие, если его нет, то переходит к следующему правилу.
Все просто и понятно.


На этом вроде все.

Почта уходит, приходит и сортируется. :)

[ / Category Mail ]