Крылатая почта юниксоида Anton Karpov Хакер, номер #083, стр. 083-102-1 <toxa@toxahost.ru> Почтовая система в стиле UNIX-way Для чего, по-твоему, предназначен почтовый клиент? Правильно, читать почту. А ты никогда не задумывался, почему все современные MUA (Outlook Express, Thunderbird, Sylpheed), кроме выполнения своих непосредственных задач, еще и сортируют почту, получают и отправляют письма, обрабатывают спам, в общем, занимаются всем, чем угодно, разве что кофе не варят? Так уж повелось в современном мире «дружелюбных к пользователю» систем, что все связанное с определенным кругом задач (в нашем случае - с почтой) делает Одна Большая Программа. И пользователь даже не задумывается, что тем самым сильно себя ограничивает. Зачем, например, мне держать эту Программу запущенной, если я хочу всего лишь автоматически забирать новую почту с сервера. Или автоматически пересылать определенные сообщения на другой ящик. Или отправлять почту не сразу, а в определенное время. К счастью, есть путь, способный освободить нас от рамок одной программы. И имя ему - UNIX-way. [ингредиенты] Для приготовления нашей почтовой пользовательской системы нам понадобятся следующие компоненты: mutt, getmail, procmail, spamassassin, msmtp, а также vim, gnupg, antiword и mairix - по вкусу. Я использую FreeBSD, поэтому весь софт будем ставить из портов. Разумеется, нетрудно спроецировать процесс установки и на твой любимый дистрибутив. Mutt - превосходный консольный почтовый клиент, способный творить с письмами невероятные вещи. Расписывать все его достоинства не имеет смысла, достаточно сказать, что это самый популярный MUA среди разработчиков из opensource-сообщества, кернел-хакеров и просто крутых юниксоидов ;-). Мы будем ставить его devel-версию 1.5.х («стабильная» ветка имеет сейчас номер 1.4.х), которая имеет такие преимущества, как скорость работы, поддержку SMIME-расширений (1.4.х умеет только PGP-шифрование), и в то же время достаточно стабильна. Мы научим mutt читать news-конференции. # cd /usr/ports/mail/mutt-devel # make WITH_MUTT_MAILDIR_MTIME_PATCH=yes WITH_MUTT_NNTP=yes WITH_MUTT_IMAP_HEADER_CACHE=yes Как видно, вместо традиционного mbox я собираюсь использовать Maildir-формат почтового ящика. Для меня основным преимуществом Maildir является формат «одно письмо - один файл». Getmail - программа для доставки почты с удаленных POP3/IMAP-серверов с множеством удобств и приятностей (поддержка SSL, доставка в Maildir-style ящики, докачка сообщений после разрыва сессии и т.п.), написанная на Питоне. Более популярный вариант - fetchmail. # cd /usr/ports/mail/getmail # make install clean Также нам не обойтись без procmail. Она будет обрабатывать, модифицировать (если нужно) и выполнять сортировку сообщений по папкам. # cd /usr/ports/mail/procmail # make install clean Msmtp - это легковесный почтовый агент, созданный для машин, на которых нет запущенного SMTP-демона. Исторически (так сказать, by design) подразумевается, что на каждой *nix-машине работает почтовый сервер (хотя бы для обработки локальных отчетов администратору, см. periodic(8)), настроенный, при необходимости, на релей «внешнего» почтовика. Но часто на desktop-машинах это совсем не так: periodic tasks убирают из crontab(5), а почтовый сервер выключают. В этом случае вместо sendmail можно использовать msmtp, который имеет поддержку SMTP-авторизации, TLS, множества аккаунтов, но при этом не выступает в роли полноценного MTA (не слушает порт и не принимает соединения). |