Monday, December 11th, 2017

Настройка fetchmail для проверки и получения почты Gmail

Published on Март 30, 2009 by   ·   Комментариев нет

Постановка задачи

Вы хотите получать/проверять почту Gmail используя программу fetchmail

Исходные данные

- у есть почтовый ящик gmail_account@gmail.com
- вы используете Unix-подобную операционную систему (Linux, FreeBSD, etc...)

Наличие необходимых программ

Если программа fetchmail у вас еще не установлена, установите ее одним
из способов, предусмотренных в вашей операционной системе. С помощью
одной только программы fetchmail можно проверить наличие писем на
почтовом сервере, но для того чтобы эту почту получить fetchmail
использует MTA (Mail Transfer Agent) — другую программу. Обычно по
умолчанию это sendmail, так что проверьте что sendmail тоже установлена.
Sendmail настраивать не нужно — достаточно настроек по умолчанию.

Быстрый старт — проверка новых сообщений на сервере

В вашем домашнем каталоге создайте файл .fetchmailrc:

  $ touch /home/user/.fetchmailrc

Установите для него права чтения/записи для владельца и запрет всего остальным:

  $ chmod 600 /home/user/.fetchmailrc

Важное замечание: так как в этом файле будет пароль к учетной записи
Gmail, вы должны быть уверены в том, что никто кроме вас не сможет
посмотреть его содержимое. То есть тот кто имеет непосредственный или
сетевой доступ к вашему компьютеру а также полномочия вашей учетной
записи или учетной записи root может узнать ваш пароль Gmail.

Откройте .fetchmailrc в своем любимом текстовом редакторе и создайте
следующее содержимое:

        poll pop.gmail.com
        port 995
        proto POP3
        user 'gmail_account@gmail.com'
        pass 'gmail_password'
        ssl

Подразумеваем что у вас есть подключение к Internet, поэтому можно сразу
проверить наличие на сервере новых сообщений:

        $ fetchmail -c
        fetchmail: Ошибка проверки сертификата сервера: unable to get local issuer certificate
        fetchmail: Ошибка проверки сертификата сервера: certificate not trusted
        fetchmail: Ошибка проверки сертификата сервера: unable to verify the first certificate
        1 сообщение для gmail_account@gmail.com на pop.gmail.com (6891 октетов).

Опция -c говорит fetchmail не получать почту а только проверить наличие
новых писем. Мы видим, что в почтовом ящике есть 1 новое сообщение. От
предупреждений касающихся ssl сертификата избавимся позже — они имеют
статус предупреждений только и не влияют на функционал. Кстати в
некоторых версиях fetchmail вы вообще можете их не получить.

Получение сообщений с сервера

Для получения писем с сервера fetchmail использует MTA (Mail Transfer
Agent), слушающий порт 25 (стандатртный порт mail службы). В качестве
MTA используем sendmail, так как это вариант по умолчанию для
большинства дистрибутивов. Если sendmail у вас уже работает как фоновый
процесс (демон), то выполнив следующую команду, вы получите сообщения с
сервера (в случае наличия там таковых конечно). Но для ясности настройки
имеет смысл показать какой будет результат работы fetchmail, если
sendmail не запущена (параметр -k говорит fetchmail не удалять письма на
почтовом сервере после их получения):

        $ fetchmail -k

        fetchmail: Ошибка проверки сертификата сервера: unable to get local issuer certificate
        fetchmail: Ошибка проверки сертификата сервера: certificate not trusted
        fetchmail: Ошибка проверки сертификата сервера: unable to verify the first certificate
        1 сообщение для gmail_account@gmail.com на pop.gmail.com (6891 октетов)
        считывается сообщение gmail_account@gmail.com@gmail-pop.l.google.com:1 из 1 (6891 октетов)...
        fetchmail: сбой подключения к localhost:smtp [127.0.0.1/25]: В соединении отказано.
        fetchmail: Сбой SMTP-подключения к localhost
        fetchmail: Ошибка SMTP-транзакция при выборке из gmail_account@gmail.com@pop.gmail.com и доставке на хост SMTP localhost
        fetchmail: Статус запроса=10 (SMTP)

Это значит ваш компьютер отказал в приеме почты на порту 25.

Запускаем sendmail с параметром -bd (переход в режим фонового процесса):

   # sendmail -bd

Примечание: эту команду необходимо выполнять от пользователя root (или
использовать для этого sudo), так как только запуск программы с
полномочиями администратора позволят ей открыть порт 25. При успешном
старте sendmail молча переходит в фоновую работу, ничего не выводя на
терминал.

Теперь повторяем запуск fetchmail:

        $ fetchmail -k

        fetchmail: Ошибка проверки сертификата сервера: unable to get local issuer certificate
        fetchmail: Ошибка проверки сертификата сервера: certificate not trusted
        fetchmail: Ошибка проверки сертификата сервера: unable to verify the first certificate
        1 сообщение для gmail_account@gmail.com на pop.gmail.com (6891 октетов).
        считывается сообщение gmail_account@gmail.com@gmail-pop.l.google.com:1 из 1 (6891 октетов)...... не пропущено

Все, сообщение находится в вашем каталоге для почты (по умолчанию это
обычно /var/spool/mail/user):

        $ ls -l /var/spool/mail/user/
        -rw------- 1 user users 7,2K 2008-11-30 02:47 msg.JHE

Теперь можете читать его вашей любимой программой для работы с
сообщениями, например mutt.

Избавимся от предупреждений касающихся ssl сертификата

В вашем домашнем каталоге создайте каталог .sslcerts (это только пример,
вы можете создать другой каталог в другом месте):

 mkdir /home/user/.sslcerts

Установите на него права чтения/записи/выполнения для владельца,
остальным запрет:

 chmod 700 /home/user/.sslcerts


Получите сертификат Gmail (у вас должен быть установлен пакет программ
openssl):

       [cc lang="bash" tab_size="2" lines="-1"] openssl s_client -connect pop.gmail.com:995 -showcerts > /home/user/.sslcerts/gmail.pem

Откройте файл .sslcerts/gmail.pem в текстовом редакторе и удалите все
содержимое кроме блока данных, включительно строки '——BEGIN
CERTIFICATE——' и '——END CERTIFICATE——'. Таким образом получаем
содержимое:

        -----BEGIN CERTIFICATE-----
        MIIC3TCCAkagAwIBAgIDCDijMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT
        MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0
        aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcxMDI1MTc1MzE2WhcNMDkxMjI0MTg1MzE2
        WjBoMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
        TW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xFjAUBgNVBAMTDXBv
        cC5nbWFpbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO03QxerFKZV
        8yeomuL4zSl8Pr7hMWnKMMgp/CwhwadeBmL0LQHHbjL/6z/Z59ZQvrztqkwhchA2
        APKzUwRVTyn7Shx6vBqk6oFmTqoOLmY6hbq6l8uVdUv0AfbHwio8CnLpK2+nbuFl
        flPwx1DH0E3grD8+CrH5SmScfTWbDkcXAgMBAAGjga4wgaswDgYDVR0PAQH/BAQD
        AgTwMB0GA1UdDgQWBBTJRG/OFpZt+BV43JM3NshHMjpwazA6BgNVHR8EMzAxMC+g
        LaArhilodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxzL3NlY3VyZWNhLmNybDAf
        BgNVHSMEGDAWgBRI5mj5K9KylddH2CMgEE8zmJCf1DAdBgNVHSUEFjAUBggrBgEF
        BQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADgYEAOKr3mhxtwFCS3J6lbeaf
        3KrHKi935BZkI75sRbON+hog0t2ovcM2i7fxs3xneH8USLsHgfxNBj9tkMogMK/K
        sO/NUVZ/IfyqcNNkp2619qTQXthKRH42JKpAKgNhT1bdno3pxn+eDEpqmU3CE7IP
        HDCjWOK1fGkZ/yFAuTxuxAc=
        -----END CERTIFICATE-----

Выполряем хеширование сертификата с помощью c_rehash:

        c_rehash /home/user/.sslcerts/
        Doing /home/user/.sslcerts/
        gmail.pem => 7f549ca4.0

Получаем отпечаток ключа (fingerprint) сервера Gmail, для чего выполняем
fetchmail с опциями -c и -v. Опция -c для холостого хода — только
проверка почтового ящика, а -v включает многословный режим, который
среди прочих отчетов показывает нам отпечаток ключа сервера):

        $ fetchmail -c -v
        ...
        fetchmail: Отпечаток ключа pop.gmail.com: 44:A8:E9:2C:FB:A9:7E:6D:F9:DB:F3:62:B2:9E:F1:A9
        ...

Примечание: эта команда сразу напечатает отпечаток ключа:

        $ LC_ALL=C fetchmail -c -v 2>/dev/null | grep fingerprint
       
        fetchmail: pop.gmail.com key fingerprint: 44:A8:E9:2C:FB:A9:7E:6D:F9:DB:F3:62:B2:9E:F1:A9

Теперь добавляем отпечаток ключа и путь к каталогу с сертификатами в
файл .fetchmailrc, так что теперь он должен быть таким:

        poll pop.gmail.com
        port 995
        proto POP3
        user 'gmail_account@gmail.com'
        pass 'gmail_password'
        ssl
        sslcertpath /home/user/.sslcerts
        sslfingerprint "44:A8:E9:2C:FB:A9:7E:6D:F9:DB:F3:62:B2:9E:F1:A9"

Все, fetchmail работает без ворчания:

        shell$ fetchmail -c
        fetchmail: Для gmail_account@gmail.com на pop.gmail.com почты нет

Дополнительная информация

Справочное руководство по Fetchmail на русском языке:

internet security software reviews

http://linux.yaroslavl.ru/docs/serv/fetchmail/fetchmail-man.html

zp8497586rq








































Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]