Содержание
Fetchmail
Установка
Настройка
Использование
Проверка и отображение новых писем с помощью notify-osd
Скрипт проверки писем
Задание cron
Безопасность
Ссылки
Fetchmail- утилита для unix-подобных систем, созданная для сбора почты с удаленных POP3, IMAP, ETRN и ODMR почтовых серверов и доставки локальным пользователям. Другими словами- консольный почтовый клиент.
Установка
Пакет fetchmail находится в репозиториях Ubuntu, поэтому установка производится одной командой
sudo apt-get install fetchmail
Настройка
Для работы пакета fetchmail необходимо предварительно его настроить, для этого в домашнем каталоге необходимо создать файл со следующим содержимым:
gedit ~/.fetchmailrc
skip pop.mail.ru proto POP3
user '<user_name>@mail.ru', with password '********'
skip imap.yandex.ru proto IMAP port 995
user '<user_name>@gmail.com', with password '*******'
Присваиваем права на исполнение
chmod 700 ~/.fetchmailrc
В данном примере приведены настройки для работы с серверами по протоколам POP3 и IMAP, если у вас одна учетная запись почты, то выберете свой вариант, вместо <user_name> введите имя контакта, а вместо свой *** пароль. Параметр skip перед именем сервера указывает, что почту нужно проверять только по принудительному запросу. При таком конфигурационном файле обращение к почтовому серверу происходит с явным указанием:
fetchmail [параметры] pop.mail.ru
Использование
Fetchmail представляет собой полноценный консольный почтовый клиент, при помощи которого можно принимать и пересылать почту, и основное её применение, конечно же, различного рода серверы.
Проверка и отображение новых писем с помощью notify-osd
В приведенном ниже описании рассматривается применение пакета fetchmail на обычных рабочих компьютерах с целью оповещения о наличии новых писем в вашем почтовом ящике. Данный способ основан на применении одного простого скрипта и стандартного пакета cron для того, что бы отказаться от запущенного в фоне тяжелого почтового клиента (Thunderbird, Evolution и т.д.).
Скрипт проверки писем
Создайте новый файл в удобной для Вас папке (рекомендуется использовать ~/bin, которая не будет удаляться при переустановке системы):
mkdir ~/bin
gedit ~/bin/chck-mail.sh
И скопируйте в него следующее содержимое
#!/bin/bash
#--------------Проверка почтового ящика на сервере yandex.ru--------------------
checkmail=`fetchmail -c imap.yandex.ru`
all=`echo $checkmail cut -d " " -f 1`
readed=`echo $checkmail cut -d ' ' -f 3 sed s/(//g`
acc1=`echo $checkmail cut -d ' ' -f 6`
let "div = $all — $readed"
if [ $div != 0 ] 2>/dev/null; then
if [ $div -eq 1 ]; then
notify-send "Электропочта" "Для $acc1 одно новое письмо" -i mail-notification.png -t 20000
elif [ $div -eq 2 -o $div -eq 3 -o $div -eq 4 ]; then
notify-send "Электропочта" "Для $acc1 $div новых письма" -i mail-notification.png -t 20000
else
notify-send "Электропочта" "Для $acc1 $div новых писем" -i mail-notification.png -t 20000
fi
fi
#------------------------Проверка почтового ящика на сервере mail.ru---------------------
checkmail=`fetchmail -c pop.mail.ru 2>/dev/null`
mail2=`echo $checkmail cut -d " " -f 1`
acc2=`echo $checkmail cut -d ' ' -f 4`
if [ $acc2 = <user_name>@mail.ru ] 2>/dev/null; then
if [ $mail2 -eq 1 ]; then
notify-send "Электропочта" "Для $acc2 одно новое письмо" -i mail-notification.png -t 20000
elif [ $mail2 -eq 2 -o $mail2 -eq 3 -o $mail2 -eq 4 ] ; then
notify-send "Электропочта" "Для $acc2 $mail2 новых письма" -i mail-notification.png -t 20000
else
notify-send "Электропочта" "Для $acc2 $mail2 новых писем" -i mail-notification.png -t 20000
fi
fi
В тексте необходимо заменить <user_name> на свое имя пользователя почтового сервера.
Как можно заметить файл описывает два метода проверки почты по различным протоколам IMAP и POP3, настоятельно рекомендуется использовать IMAP, если нужно сохранять письма на сервере (для этого в настройках почтового сервера нужно указать протокол, по которому будут отдаваться письма почтовым клиентам (mail.ru не поддерживает IMAP). При использовании протокола POP3 в настройках почтового клиента, который будет использоваться для просмотра писем необходимо указать «Удалять письма с сервера», в противном случае скрипт будет постоянно оповещать о наличии новых писем.
В строках типа
notify-send "Электропочта" "Для $acc1 одно новое письмо" -i mail-notification.png -t 20000
последняя цифра означает время отображения всплывающего уведомления в миллисекундах.
Необходимо сделать данный файл исполняемым
chmod +x bin/chck-mail.sh
Отправьте себе тестовое письмо и в терминале запустите скрипт на исполнение
~/bin/chck-mail.sh
должно появиться подобное уведомление: В случае возникновения ошибок, напишите нам об этом на форуме, приведя текст ошибки.
Задание cron
Для автоматической проверки почтового ящика необходимо добавить задание cron для созданного ранее скрипта, для этого в терминале введите команду
crontab -e
, если вы ни разу этого не делали, то появится диалог выбора предпочитаемого редактора, укажите nano (выбор 2 по умолчанию). В появившемся окне редактора допишите в конец файла:
DISPLAY=:0
*/10 * * * * /home/<user_name>/bin/chck-mail.sh
Первая строка говорит консольному cron какой дисплей использовать для вывода графики. Во второй устанавливается выполнение скрипта chck-mail.sh (измените <user_name> на свое имя пользователя в системе) каждые 10 минут. Сохраняем и закрываем редактор, и если все правильно, то в терминале появится строка
crontab: installing new crontab