В этом документы я попытался коротко рассказать о настройке почтовой системы на вашей
домашней машине. Для этого я использую postfix+fetchamil+procmail.
Что мы будем делать? Мы будем настраивать отправку писем (postfix) до нужного вам smtp сервера,
обычно этот сервер вашего провайдера, забор почты с вашего ящика по pop3 или imap
протоколу (fetchmail) и сортировку писем по папкам (procmail).
ну и конечно один почтовый клиент (mutt) и один текстовый редактор (vim)
Отправка писем
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 удалять на сервере все просмотренные письма после их забора.
Забираем почту
Соединяемся с провайдером
И от вашего пользователя запускаем команду 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, включительно. В данном случае, метасимвол ^ означает отрицание.
Выражение "[^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 ищет такую
подстроку в заголовке письма. Если находит, то кладет в указанную папку, если нет
то смотрит следующее условие, если его нет, то переходит к следующему правилу.
Все просто и понятно.