Почтальон (fetchmail)
20.01.2003Зачем оно надо?
После долгого использования удалённого доступа в интернет мне надоело смотреть на задумчивые почтовые клиенты, которые как будто замерзают на всё время сеанса получения почты. Чувство комфорта в работе это, естественно, не вызывало. Да и запуск каждый раз почтового клиента при доступе в сеть или лицезрение его постоянно запущенным тоже не вызывало особого удовольствия. И тут пришёл на помощь старый добрый unix-way с его дотошным разделением труда. Не надо возлагать на программу того, что она не обязана делать. Пусть этим займется программа, которая для этого предназначена. А как известно: специалист справится со своими задачами куда лучше, нежели работник широкого профиля с той же работой.
Вот тут и появляется на сцене fetchmail. Задачи программы до безобразия просты: принять почту с удалённых почтовых ящиков хозяина и положить её в системный почтовый ящик. Теперь Вам не надо задумываться о том, чтобы запустить почтового клиента строго тогда, когда компьютер войдёт в сеть. Мало того, процесс получения почты можно автоматизировать. Ваша машина без проблем может дозваниваться до провайдера в ночные часы, когда расценки на интернет дешевле, забирать почту и отключаться. Зачем лишать себя сна, если всё может сделать машина, тем более компьютеры для того и создавались, чтобы перекладывать на них работу человека. И, просыпаясь утром, Вы можете почитать свежую почту, не подключаясь к сети.
Что для этого надо?
Собственно, нам нужен сам fetchmail. Может даже не понадобится искать его в интернете и скачивать, так как он входит в состав большинства современных дистрибутивов. Как правило он разбивается на два пакета: fetchmail и fetchmail-daemon. Последний запускается как системный демон и не требует участия человека. На момент написания статьи у меня в системе стоит fetchmail версии 6.2.0.
Ближе к телу.
Конфигурационные файлы fetchmail могут находиться в двух местах: в файле /etc/fetchmailrc и в ~/.fetchmailrc. Формат этих файлов одинаков, но без пущей надобности в общесистемный лезть не стоит.
Итак, начну с простого примера. Однако этого простого примера вполне достаточно в большинстве случаев. Рассмотрим ~/.fetchmailrc:
################################################################# set postmaster "localuser" set daemon 600 poll mail.domain.ru with proto POP3 user 'username' there with password 'pass' is 'localuser' here option mda procmail ################################################################
где:
- localuser - пользователь локальной системы, которому будет складываться почта.
- mail.domain.ru - почтовый сервер, с которого вы собираетесь забирать почту.
- usrname - имя пользователя на почтовом сервере.
- pass - пароль на почтовом сервере.
А теперь построчный разбор приведённого примера...
set postmaster "localuser"
Этому пользователю будет отправляться почта, которая есть в ящике, но предназначена несуществующему пользователю вашей системы. Этот параметр очень желателен в написании общесистемного конфигурационного файла. При написании пользовательского он не обязателен.
set daemon 600
fetchmail работает в режиме демона и через указанный промежуток времени проверяет почту. Время указывается в секундах. В данном случае 600 секунд, то есть 10 минут.
poll mail.domain.ru with proto POP3
Здесь указывается с какого сервера и по какому протоколу забирать почту. Надо просто заменить mail.domain.com из примера на тот сервер, который используете Вы.
Теперь о протоколах. Fetchmail поддерживает достаточно много протоколов доступа к почтовым серверам, но в настоящее время большей частью пользуются двумя основными: POP3 и IMAP4.
user 'username' there with password 'pass' is 'localuser' here option
Здесь уточняется логин и пароль аккаунта почтового сервера, а так же пользователь локальной системы, которому будет складываться почта с удалённого хоста.
mda procmail
Эта строчка указывает, кто будет доставлять почту пользователю локально. Этим может заниматься и локальный почтовый сервер, но procmail выгодно отличается тем, что может сортировать почту для пользователя.