Используемые термины: Fetchmail, Procmail, Dovecot, IMAP, POP3.
Рассмотрим ситуацию, когда нужно забирать почту с mail.ru (для примера) и сохранять ее в локальный ящик на сервере Dovecot. Для этого мы настроим Fetchmail для сбора почты по IMAP, затем Procmail для локальной доставки почты в Dovecot. Для каждого пользователя (системного или виртуального) мы создадим свои конфигурационный файлы Fetchmail и Procmail.
Подразумевается, что у нас уже настроен Dovecot. В качестве формата хранения почты должен быть настроен Maildir. Для примера, каталог хранения почты будет /home/mail/admins24.local/[email protected].
Если в Вашей системе нет настроенного Dovecot, можно воспользоваться инструкцией Почтовый сервер Postfix на CentOS 7 с виртуальными доменами, системой управления, веб-доступом и многим другим.
Некоторые почтовые системы не разрешают подключение по IMAP или POP3 по умолчанию. Для включения такой возможности необходимо зайти в настройки почтового аккаунта и разобраться, как включается данная опция. Для примера, читайте инструкцию Настройка почты GMAIL и Яндекс для подключения по IMAP или POP3.
Проверить, что мы корректно настроили почту и теперь у нас есть возможность подключиться по IMAP/POP3 можно с помощью любой почтовой программы, например, Mozilla Thunderbird.
Переходим к процессу сбора писем с удаленного почтового ящика. Устанавливаем fetchmail.
а) если используем систему RPM:
yum install fetchmail
б) если используем систему deb:
apt-get install fetchmail
После установки fetchmail открываем его конфигурационный файл:
vi /home/mail/admins24.local/[email protected]/fetchmail.conf
* в данном примере конфигурационный файл размещен в каталог виртуального пользователя. Вы его можете разместить в любом другом каталоге.
Приводим конфигурационный файл к виду:
set logfile /home/mail/admins24.local/[email protected]/fetchmail.logset invisibleset no bouncemail
poll imap.mail.ruport 993proto IMAPuser “[email protected]”password “mail_user_password”sslkeepmda “/usr/bin/procmail -m /home/mail/admins24.local/[email protected]/procmail.conf”
* где:
* в данном примере мы задаем файл для логов fetchmail.log (он будет располагаться в том же каталоге, что и файл fetchmail.conf); с помощью опции invisible говорим, чтобы fetchmail не выдавал своего присутствия (как будто письма приходят напрямую с удаленного почтового сервера); опция no bouncemail говорит о необходимости отправлять сообщения об ошибках постмастеру, а не отправителю; подключение будет выполняться с imap.mail.ru по безопасному (SSL) IMAP соединению (порту 993). Полученные письма будут передаваться программе procmail, которая будет выполнять транспорт на основе настроек из файла procmail.conf, находящегося в той же директории, что и сам fetchmail.conf.
Задаем следующие права на созданный файл:
chmod 700 /home/mail/admins24.local/[email protected]/fetchmail.conf
* в противном случае, fetchmail выдаст ошибку, что файл должен иметь права доступа не более -rwx—— (0700).
Запускаем fetchmail с нашими настройками:
fetchmail -v -f /home/mail/admins24.local/[email protected]/fetchmail.conf
Если все настроено верно, мы должны увидеть такие строки:
…fetchmail: IMAP< A0002 OK LOGIN Completed.…fetchmail: IMAP< A0008 OK FETCH Completed.…procmail: Couldn’t read “procmail.conf”…
* первая строка говорит об успешной аутентификации на IMAP-сервере; вторая об окончании получения списка писем и их загрузки; третья строка выдает ошибку поиска конфигурационного файла для procmail — это нормально, так как мы его еще не настроили.
Устанавливаем procmail.
а) на RPM:
yum install procmail
б) на deb:
apt-get install procmail
Создаем конфигурационный файл (в нашем примере он должен находиться в той же папке, что и конфиг fetchmail):
vi /home/mail/admins24.local/[email protected]/procmail.conf
MAILDIR=”/home/mail/admins24.local/[email protected]/”DEFAULT=”/home/mail/admins24.local/[email protected]/”LOGFILE=”procmail.log”VERBOSE=on
:0
где MAILDIR — каталог, в котором хранятся письма пользователя; DEFAULT — путь хранения почты, если procmail не смог применить ни одного правила (в нашем примере это тот же каталог, что и MAILDIR); LOGFILE — файл для лога; VERBOSE — подробный вывод информации в лог. Данная настройка говорит локальному доставщику сохранить письма в каталоге /home/mail/admins24.local/[email protected].
Для корректной работы нашего сборщика, необходимо, чтобы он запускался от имени пользователя, который является владельцем файлов почты. Посмотреть владельца можно командой:
ls -ld /home/mail/admins24.local/[email protected]
Мы увидим что-то на подобие:
drwx—— 10 vmail vmail 4096 июл 11 14:10 /home/mail/admins24.local/[email protected]
… где vmail vmail — пользователь-владелец и группа-владелец каталога, в котором у меня хранится почта пользователя. В моем случае доступ разрешен пользователю vmail, от которого и нужно запускать сборщик почты.
Для запуска fetchmail заходим в систему под пользователем vmail (в вашем случае это может быть другой пользователь):
su – vmail
Запускаем наш сборщик:
$ fetchmail -v -f /home/mail/admins24.local/[email protected]/fetchmail.conf
* данная команда загрузить непрочтенные письма. Если нужно загрузить все письма (например, при первом запуске) используем опцию -a.
Проверяем, что он корректно отработал. В локальном почтовом ящике должны появиться письма, а в удаленном ящике письма должны отметиться как прочтенные (или удалиться, если мы не использовали опцию keep).
Выходим из командной консоли пользователя:
Редактируем задания в cron:
crontab -u vmail -e
* мы запускаем редактирование cron от пользователя vmail.
Добавляем строку:
*/5 * * * * /bin/fetchmail -v -f /home/mail/admins24.local/[email protected]/fetchmail.conf
* в данном примере fetchmail будет запускаться каждые 5 минут.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies