Документация по ОС FreeBSD Воскресенье, 05.05.2024, 16:06
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Mail

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

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

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

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

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

Если программа fetchmail у вас еще не установлена, установите ее одним из способов, предусмотренных в вашей операционной системе. С помощью одной только программы fetchmail можно проверить наличие писем на почтовом сервере, но для того чтобы эту почту получить fetchmail использует MDA (Mail Delivery 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 использует MDA (Mail Delivery Agent), слушающий порт 25 (стандатртный порт mail службы). В качестве MDA используем 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):

        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 на русском языке:
http://linux.yaroslavl.ru/docs/serv/fetchmail/fetchmail-man.html


Источник: http://www.opennet.ru/base/net/fetchmail_setup.txt.html
Категория: Mail | Добавил: oleg (19.03.2009) | Автор: Александр Марецкий
Просмотров: 1391 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024