Книга: Linux-сервер своими руками
13.4. Другие программы для работы с электронной почтой
13.4. Другие программы для работы с электронной почтой
Кроме агентов MTA и демонов POP-сервиса существуют также программы для получения почты, POP-клиенты и программы для сортировки почты.
Конечно, любая почтовая программа, например, kmail или Outlook, обладают встроенным POP-клиентом, но, кроме сбора почты, почтовые программы, как правило, обладают массой других не менее полезных функций — создание, отправка сообщений и тому подобные.
В качестве POP-клиента рассмотрим стандартный почтовый клиент Linux — fetchmail, а также программу сортировки почты — procmail.
Лучше всего объяснять работу любой программы на практическом примере. Сначала сформулируем задачи:
1. На один ящик [email protected] поступает почта для всех отделов какой-либо организации. Вам нужно выполнить сортировку приходящей почты по названию отдела, например, если в теле письма или в одном из его заголовков упоминается название отдела, отправить это сообщение одному из пользователей отдела.
2. Настроить автоответчик электронной почты. Этот автоответчик будет работать подобно обыкновенному автоответчику: когда пользователь получает сообщение, автоответчик автоматически отправит ответ, содержащий примерно такое сообщение: «Ваше сообщение получил. Прочитаю в 19:00».
Теперь займемся решением первой задачи. Сначала немного конкретизируем ее. Пусть у вашей организации существует 3 отдела. Адрес первого отдела — [email protected], второго — [email protected], а третьего — [email protected]. У вас также есть пользователь mail, на имя которого будет приходить вся почта. Его адрес — [email protected]. Также вы хотите, чтобы рассылка проекта LinuxRSP отправлялась вам по адресу [email protected].
Для начала в домашнем каталоге пользователя mail создайте файл .procmailrc примерно такого содержания, как это показано в листинге 13.2 :
Листинг 13.2. Файл .procmailrc
:0
* ^Subject:.*dep1
! dep1
:0
* ^Subject: .*dep2
! dep2
:0
* ^Subject: . *dep3
! dep3
:0
* ^Subject:.*LinuxRSP
! adm
Таким образом, вы определили правила сортировки почты. Если в теме (заголовок Subject) будет присутствовать название отдела, то сообщение будет отправлено нужному пользователю.
Примечание. Если вы создавали файл .procmailrc, зарегистрировавшись в системе как пользователь root, измените права доступа к этому файлу:
chown mail.mail .procmailrc
chmod 600 .procmailrc
Можно выполнить сортировку по полю From или любому другому, например, последнее правило могло бы выглядеть так:
:0
* ^From:.* Subscribe.Ru
! adm
Но в этом случае, если кто-нибудь из пользователей вашей системы также подпишется на другую рассылку на сервере Subscribe.Ru, то вся почта попадет к пользователю adm и вам придется читать рассылку вместе.
Примечание. Подробнее о правилах сортировки вы прочитаете в справочной системе Linux, введя команду man procmail.
В этом же каталоге ($HOME/mail) создайте файл .forward. Если вы работаете как пользователь root, установите права доступа к этому файлу так же как и для файла .procmailrc. В этом файле задаются правила перенаправления почты. Добавьте в него следующую строку:
|IFS=' ' && exec /usr/bin/procmail USER=<mail>
Обычно программа procmail находится в каталоге /usr/bin. Если вы при самостоятельной сборке программы указали другой каталог, измените команду перенаправления в файле .forward.
Теперь создайте файл .fetchmailrc. Этот файл нужно создать в каталоге того пользователя, от имени которого будет запускаться fetchmail. В этот файл добавьте следующие строки:
set postmaster "mail"
poll provider.ru proto POP3 no dns
user "mail" pass "my_password" to mail here
options fetchall
Таким образом вы установите постмастера (пользователь mail. provider.ru) — имя почтового сервера, откуда вы будете забирать почту по протоколу POP3. При этом вы будете использовать имя пользователя mail и пароль my_password. Опция fetchall указывает программе получить всю почту и потом удалить полученные сообщения на сервера provider.ru.
Запускать программу fetchmail можно как демон, а можно с помощью планировщика crontab. В первом случае просто выполните команду:
fetchmail –d 12000
При этом fetchmail будет проверять наличие новой почты через каждые 20 минут. Во втором случае выполните команду crontab –e и введите новое задание:
0,20,40 * .* * * /usr/bin/fetchmail
Теперь перейдем к решению второй задачи. Напомню, что наша цель — создание автоответчика. Существуют два типа автоответчиков. Первые посылают автоответ только на определенные сообщения, а вторые — на все. Например, вам нужно отправить клиенту прайс-лист вашей организации по его требованию. Это первый тип автоответчика. Если же вы уезжаете летом на недельку отдохнуть куда-нибудь и хотите, чтобы программа сообщила людям, что вы в отпуске — это второй тип.
Займемся настройкой первого типа. Для этого в ваш файл .procmailrc добавьте строки:
0:
* ^Subject.*Price
| (formail –r ; cat $HOME/pricelist.zip)
| sendmail –t
Как видите все намного проще, чем ожидалось. А второй тип автоответчика создается еще проще:
0:
| (formail –r; cat $HOME/infо.txt)
| sendmail –t
Заметьте — вы не определяете никаких условий, поэтому ответное письмо будет отправлено всем, кто напишет вам сообщение. В файл info.txt нужно записать ваш автоответ.
Сделаем небольшой вывод. Программа fetchmail используется для загрузки сообщений, a procmail — для ее сортировки. Рекомендую вам изучить параметры программ fetchmail и procmail — вы найдете их в документации по этим программам. Используйте procmail с большой осторожностью, потому что если вы неправильно укажете условия сортировки, почта будет просто утеряна без возможности восстановления.
- Другие инструменты для осуществления резервного копирования
- Типы данных для работы с датой и временем
- СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Новые функции API для работы с Blob и массивами
- Другие изменения в 7-й версии InterBase
- 10 Алгоритм работы с возражениями
- 1.2.5. Пример программы
- 24.7. Использование программы-твикера
- Датчик расположения и другие датчики
- 33.1. Интерактивный и неинтерактивный режим работы
- 4. Режимы работы экспертных систем