Этой темой меня понудили заняться сообщения в интернете об уходе осенью Microsoft с её сервисами из России. У нас вся почта как раз крутилась на Windows 10 и Outlook 2019, плюс плагин авто печати Print Tools. Чтобы избежать возможных напрягов с возрастанием количества задач по окончании периода отпусков, заранее создан запасной аэродром на Kubuntu, который теперь решено сделать основным.
Это, пожалуй, не статья или руководство, а так... некая записная книжка.
1/2 Использование fetchmail для получения почтовых вложений
Внимание: вместо параметров user, username, password и т.д. вы должны подставить свои значения.
Функционала одного только fetchmail здесь не хватит, дополнительно установим криптографический пакет openssl, почтовый фильтр procmail и утилиту для сохранения вложений uudeview а также слежение за папкой inoticoming, работа с корзиной trash-cli и печать из командной строки system-config-printer(где-то он присутствует по умолчанию, однако у меня его не было в системе):
sudo apt install openssl fetchmail procmail uudeview inoticoming trash-cli system-config-printer
Приводим конфигурационный файл ~/.fetchmailrc к следующему виду:
set daemon 3600 #интервал в секундах автопроверки почты даемоном, сейчас установлена проверка один раз в час
poll imap.yandex.com
port 993
proto IMAP
user "**********@yandex.ru"
password "mo**********pte"
#в password нужно вводить отдельно созданный пароль для почтовых программ и сборщиков почты, т.к. основной пароль входа в Яндекс не принимает от почтовой программы (в данном случае от fetchmail).
keep,#письма остаются на сервере после прочтения
ssl
mda "/usr/bin/procmail -d %T"
set syslog set logfile "fetchmail/logs/fetchmail.log"
Присваиваем файлу права 700 (без них fetchmail не будет работать с конфигом - небезопасно же, пароль открыт всем - и выругается):
chmod 700 ~/.fetchmailrc
Создаем нужный нам каталог для работы fetchmail:
/Home/user/Fetchmail
и подкаталоги:
~/fetchmail/logs/ ~/fetchmail/backup/ ~/fetchmail/attachments/
По пути ~/fetchmail/logs/fetchmail.log нам будет доступен лог работы fetchmail, что мне, к примеру, упростило поиск ошибок в настройках.
Лог нужно создать вручную:
> ~/fetchmail/logs/fetchmail.log
Создаем конфигурационный файл:
/Home/user/ .procmailrc
со следующим содержимым (учтите, что права на вашу директорию $HOME для работы procmail должны быть не более, чем 744, как и права на сам .procmailrc - без этого procmail будет заявлять, что конфиг подозрителен):
:0
*^content-Type:
{
# сделаем копию принятого письма
#:0c:
#$HOME/fetchmail/backup
#здесь будут распакованы все файлы из письма и сложены в нужный нам каталог
#для этого сделаем форвард в uudeview, который распакует вложения в $HOME/fetchmail/attachments
#опция -a создает нумерованные копии файлов, если файлы с таким именем уже обнаружены
:0f
| uudeview -i +a +o -p $HOME/fetchmail/attachments -
}
Присваиваем файлу права 700:
chmod 700 ~/.procmailrc
Возможно ниже приведены лишние действия, у меня без крона всё работает, предположительно из-за строчки в скрипте set daemon 3600 :
"...Теперь остается добавить fetchmail в cron для автозагрузки. В файле ~/fetchmail/fetchmail.cron сохраняем следующее содержимое:
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
@reboot fetchmail
Добавляем информацию в планировщик:
crontab ~/fetchmail/fetchmail.cron
И запускаем клиент:
fetchmail
Если что-то не сработает - в первую очередь смотрите лог fetchmail, затем гуглите..."
2/2 Автоматическая печатать файлов из каталога
Установить пакет inoticoming:
sudo apt-get install inoticoming
Установите пакет, trash-cli чтобы использовать папку «Корзина» вместо удаления PDF-файла.
sudo apt-get install trash-cli
и для работы lpr установить
sudo apt-get install system-config-printer
Если вы предпочитаете удаление файла через классический rm, то вам этот пакет не нужен и вам нужно заменить строку
lpr "$2/$1" && trash "$2/$1"
на
lpr "$2/$1" && rm "$2/$1"
в сценарии ниже.
Создать скрипт-оболочку printpdf:
mkdir -p ~/bin #создать папку bin
далее редактировать скрипт:
gedit ~/bin/printpdf либо kate ~/bin/printpdf
Добавьте код ниже, сохраните файл и закройте редактор:
#!/usr/bin/env bash
FILE="$1"
if [ "${FILE##*.}" = "jpg" ]
then
lpr "$2/$1" && rm "$2/$1"
elif [ "${FILE##*.}" = "jpeg" ]
then
lpr "$2/$1" && rm "$2/$1"
elif [ "${FILE##*.}" = "png" ]
then
lpr "$2/$1" && rm "$2/$1"
elif [ "${FILE##*.}" = "pdf" ]
then
lpr "$2/$1" && rm "$2/$1"
elif [ "${FILE##*.}" = "svg" ]
then
lpr "$2/$1" && rm "$2/$1"
else
echo "finish"
fi
exit 0
Сделать скрипт исполняемым:
sudo chmod ugo+x ~/bin/printpdf
В терминале включить слежение за папкой attachments:
inoticoming $HOME/fetchmail/attachments ~/bin/printpdf {} $HOME/fetchmail/attachments \;
Либо создать исполняемый скрипт для автозапуска "startinoticoming" в папке bin:
#!/usr/bin/env bash
inoticoming $HOME/fetchmail/attachments ~/bin/printpdf {} $HOME/fetchmail/attachments \;
exit 0
Сделать скрипт исполняемым:
sudo chmod ugo+x ~/bin/startinoticoming
Внимание, после вывода на печать папка attachments самоочищается.
Добавьте три файла: startinoticoming printpdf fetchmail в автозагрузку системы.
Запускаем fetchmail из терминала:
fetchmail
Вот и всё))
Использованы ресурсы:
https://help.ubuntu.ru/wiki/fetchmail
https://dump.4network.org/2015/06/15/retrieve-mail-and-save-...
https://askubuntu.com/questions/675195/how-to-print-pdf-file...
http://rus-linux.net/MyLDP/consol/lpr-print.html