Автоматизация обработки почты на Ubuntu
Тематические термины: POP3, IMAP, Ubuntu
Рассмотрим задачу по обработке почтовых вложений и сохранение их в различных каталогах.
Установка ПО
Настройка
Fetchmail
Procmail
Дополнительные опции
Поиск писем в определенных папках
Условие с полем From
Удаление сообщений с сервера
Русские названия файлов
Установка необходимого ПО
apt-get install fetchmail procmail uudeview
* где:
- fetchmail — собирает почту с удаленных почтовых серверов (почтовых ящиков).
- procmail — локальный обработчик, используется для фильтрации.
- uudeview — для работы с бинарными файлими, нужен для обработки вложений.
Настройка ПО
Fetchmail
Открываем следующий файл:
vi ~/.fetchmailrc
И приводим его к следующему виду:
poll imap.yandex.com
port 993
proto IMAP
user "mailautomat"
password "password"
ssl
mda "/usr/bin/procmail -d %T"
set syslog set logfile "fetchmail/logs/fetchmail.log"
* где imap.yandex.com — сервер с постовым ящиком, с которого будем принимать почту; 993 — порт для поделючения по IMAP; mailautomat / password — имя учетной записи и пароль для подключения к серверу.
Для настройки подключения по POP3:
poll pop3.yandex.com
port 995
proto POP3
user "mailautomat"
password "password"
ssl
mda "/usr/bin/procmail -d %T"
set syslog set logfile "fetchmail/logs/fetchmail.log"
Procmail
Открываем файл конфигурации:
vi ~/.procmailrc
И приводим его к виду:
:0
*^content-Type:
{
:0fw
| uudeview -i +a +o -p $HOME/fetchmail/attachments -
}
Создаем необходимые каталоги и лог-файл:
mkdir -p ~/fetchmail/logs
touch ~/fetchmail/logs/fetchmail.log
mkdir ~/fetchmail/attachments
Устанавливаем права 700 для конфигурационного файла fetchmailrc (в противном случае, она не запустится):
chmod 700 ~/.fetchmailrc
Запускаем fetchmail:
fetchmail -kv
Программа подключится к почтовому ящику, найдет все непрочитанные письма с вложениями и скачает их в каталог fetchmail/attachments.
Дополнительные полезные опции
Поиск писем в определенных папках
vi ~/.fetchmailrc
poll imap.yandex.com
...
user "mailautomat"
password "password"
folder "folder1" "folder2" "&BBAEMgRCBD4EMQQwBDQ-"
...
* чтобы fetchmail искал письма в нужных нам папках, просто дописываем опцию folder и перечисляем их через пробел.
* если название папки на русском, необходимо выполнить перекодировку в UTF-7 (3-я папка в данном примере). Для этого можно воспользоваться онлайн-инструментом на странице toolswebtop.com/text/process/encode/UTF7-IMAP.
Условие с полем From
vi ~/.procmailrc
:0
*^content-Type:
* ^From.*master@dmosk.ru
{
...
* в данном примере будут обрабатываться только те сообщения, которые пришли от адреса master@dmosk.ru.
Удаление сообщений с сервера
Запускаем fetchmail с ключом -K:
fetchmail -K
Русские названия файлов
Если вложения на русском языке, может понадобиться конвертация названия. Сначала ставим пакет convmv:
apt install convmv
Для конвертации вводим следующую команду:
convmv -f koi8-r -t utf8 -r --notest <путь к файлу>
* данной командой мы конвертируем название в кодировке koi8-r в utf8.