Сбор и сортировка вложений писем с помощью Fetchmail + Procmail + uudeview

от автора

Предыстория

На работе поступила задача от коллеги о необходимости решения вопроса с сохранением вложений в письма (поступают на определенный почтовый адрес) и сохранением их на файловом сервере. В теме письма указана аббревиатура, которую необходимо указать в имени директории, куда будет сохраняться вложения.

В интернете я нашел несколько статей, с использованием данных инструментов, но по большей части они мне не давали сделать то, что было задумано и пришлось дописать конфигурационный файл, который позволил нам сохранять файлы на сетевой шаре.

Что и для чего

Fetchmail — он нам нужен для сбора писем с почтового сервера, настройка этой утилиты в целом не имеет каких-либо сложных пунктов. Более подробно здесь.

Procmail — это агент доставки электронной почты, позволяет обработать письмо. Более подробно по ссылке.

Так же нам необходима утилита uudeview — данная утилита работает с бинарными файлами, нужна для обработки вложений.

Установка и настройка утилит

Мною была выбрана серверная ubuntu 22.04, производим установку:

sudo apt update
sudo apt upgrade
apt install fetchmail procmail uudeview cifs-utils

и создаем директорию, где все будет жить

mkdir mail

Создаем файл fetchmail.log в созданной директории mail

touch mail/fetchmail.log

выдать доступы на него:

chmod 700 mail/fetchmail.log chown user:user mail/fetchmail.log

подключаем сетевую папку (в моем случае файловый сервер работает на Windows Server, поэтому подключение через samba протокол через cifs)
Открываем файл /etc/fstab

mcedit /etc/fstab

И добавляем строку (сначала путь на файловый сервер, а потом точка монтирования)

//*путь к серверу* /mnt cifs defaults,uid=1000,gid=1000,rw,credentials=/home/user/.smbclient 0 0

Создаем файл с кредами

открываем файл

mcedit .smbclient

и добавляем строки с данными (укажите данные своей учетной записи):

username=user password=password domain=example.com

Монтируем

mount -a

далее, настраиваем fetchmail:

mcedit ~/.fetchmailrc

В случае IMAP подключения

poll mail.example.com   port 993   proto IMAP   user "user"   password "password"   ssl   mda "/usr/bin/procmail -d %T"   set syslog set logfile "mail/fetchmail.log"

где mail.example.com — почтовый сервер, к которому вы будете принимать почту
Остальное, думаю ясно и понятно )

в случае POP3 подключения

poll mail.example.com   port 995   proto POP3   user "user"   password "password"   ssl   mda "/usr/bin/procmail -d %T"   set syslog set logfile "mail/fetchmail.log"

Прописываем доступ к файлу:

chmod 700 .fetchmailrc chown user:user .fetchmailrc

Теперь переходим к настройке Procmail

mcedit ~/.procmailrc

и добавляем следующее:

SHELL=/usr/bin/sh  subject =`cat | egrep "^Subject:" | awk '{ print $2 }'` :0 * ^Subject:[ ].+[a-z0-9] * ^Content-Type:  | mkdir /mnt/${subject} ;\  uudeview -i +a +o -p /mnt/$subject -

Прописываем доступ к файлу:

chmod 700 .procmailrc chown user:user .procmailrc

Объясняю:

данный конфиг файл проверяет письма на почтовом сервере и создает папку с именем темы и сохраняет в нее вложения из письма

Запуск

Теперь, после всех настроек, мы отправляем тестовое письмо с вложением и выполняем команду:

  fetchmail -kv

Если есть необходимость, добавьте в планировщик задач выполнение команды

открываем планировщик:

crontab -e

и добавляем запись, которая будет выполнять команду каждую минуту:

*/1 * * * * /usr/bin/fetchmail -kv

Проверяем, на наличие новой директории на сетевой шаре и вложений в них.

Финал

В моем случае возникла проблема с кодировкой , темы написанные на кириллице, сохраняются в кривом виде, поэтому используем латиницу, пока что решение данной проблемы не нашлось.

Если у вас не происходит сохранение файлов на сетевой шаре, а на локальном диске все окей, проверьте доступа к сетевой папке.


ссылка на оригинал статьи https://habr.com/ru/articles/806755/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *