Поиск по сайту:

Получение электронной почты с удаленных серверов с помощью fetchmail в Debian


На этой странице

  1. 1 Предварительное примечание
  2. 2. Установите fetchmail
  3. 3. Настройка fetchmail
    1. 3.1 Запуск fetchmail в качестве демона с файлом глобальной конфигурации
    2. 3.2. Используйте файлы конфигурации для каждого пользователя и запускайте fetchmail через Cron

    Fetchmail — это программа для получения электронной почты с удаленных серверов. Представьте, что у вас есть пять учетных записей электронной почты на пяти разных серверах. Конечно, вы не хотите подключаться к каждому из них, чтобы получать электронные письма. Здесь в игру вступает fetchmail. Если у вас есть учетная запись пользователя на сервере Linux, вы можете заставить fetchmail загружать электронные письма с удаленных серверов и помещать их только в один почтовый ящик (тот, который принадлежит вашему пользователю Linux), откуда вы сможете получать их с помощью своего почтового клиента (например, Thunderbird или Перспектива).

    Или представьте, что у вас есть учетная запись электронной почты у провайдера, который не фильтрует спам и вирусы. В этом случае вы можете использовать fetchmail для загрузки писем на свой собственный сервер и пропускать их через спам- и вирусные фильтры (например, SpamAssassin и ClamAV), прежде чем загружать письма с помощью своего почтового клиента.

    1 Предварительное примечание

    Вам нужен сервер Linux с системным пользователем, который может получать электронные письма, а это означает, что в системе должен быть установлен MTA, такой как Postfix или Sendmail. В противном случае fetchmail не будет работать, потому что он пытается передать загруженные электронные письма на MTA (Postfix, Sendmail, ...), а MTA доставляет почту в почтовый ящик пользователя (вы можете настроить систему так, чтобы она включала спам- и вирусы). сканирование в этом процессе, например, с помощью procmail, но это не рассматривается в этом руководстве).

    В этом руководстве я использую систему Debian, в которой существуют два пользователя с именами falko и until.

    2 Установите fetchmail

    Чтобы установить fetchmail, все, что нам нужно сделать, это запустить

    apt install fetchmail

    3 Настройте fetchmail

    Существует два способа настройки fetchmail. Мы можем запустить его как демон с файлом глобальной конфигурации или создать задание cron для запуска fetchmail вместе с файлами конфигурации для каждого пользователя. Я опишу оба метода здесь.

    3.1 Запуск fetchmail в качестве демона с файлом глобальной конфигурации

    Чтобы fetchmail работал как демон, мы должны отредактировать /etc/default/fetchmail и установить для START_DAEMON значение yes:

    nano /etc/default/fetchmail
    # This file will be used to declare some vars for fetchmail
    #
    # Uncomment the following if you dont want localized log messages
    # export LC_ALL=C
    
    # Declare here if we want to start fetchmail. 'yes' or 'no'
    START_DAEMON=yes

    Далее мы должны создать файл конфигурации /etc/fetchmailrc, потому что демон fetchmail не запустится, если этот файл не существует. В этом файле мы можем указать, как должен вести себя демон fetchmail, а также детали, которые fetchmail должен знать для получения электронных писем с иностранных учетных записей электронной почты.

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

    • Первая учетная запись: сервер pop.someprovider.tld, протокол POP3, имя пользователя [email  (да, в данном случае имя пользователя — это адрес электронной почты), секретный пароль.
    • Вторая учетная запись: сервер mail.otherprovider.tld, протокол POP3, имя пользователя ftimme, пароль verysecurepassword.

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

    • Сервер mailin.tillsprovider.tld, протокол POP3, имя пользователя tbrehm, пароль не скажу.

    Итак, наш файл /etc/fetchmailrc может выглядеть так:

    nano /etc/fetchmailrc
    # /etc/fetchmailrc for system-wide daemon mode
    # This file must be chmod 0600, owner fetchmail
    
    set daemon        300                # Pool every 5 minutes
    set syslog                        # log through syslog facility
    set postmaster  root
    
    set no bouncemail                # avoid loss on 4xx errors
                                    # on the other hand, 5xx errors get
                                    # more dangerous...
    
    ##########################################################################
    # Hosts to pool
    ##########################################################################
    
    # Defaults ===============================================================
    # Set antispam to -1, since it is far safer to use that together with
    # no bouncemail
    defaults:
    timeout 300
    antispam -1
    batchlimit 100
    
    poll pop.someprovider.tld protocol POP3 user "" there with password "secret" is falko here
    poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall
    poll mailin.tillsprovider.tld protocol POP3 user "tbrehm" there with password "iwonttellyou" is till here keep

    В начале файла у нас есть некоторые глобальные параметры, такие как установка демона 300 (что означает, что fetchmail должен получать электронные письма каждые 300 секунд), которые управляют работой программы. Значения вышеуказанных опций следующие:

    • set daemon: установите интервал фонового опроса в секундах.
    • set syslog: ведение журнала ошибок через системный журнал.
    • set postmaster: Укажите имя получателя почты последней инстанции (по умолчанию: пользователь, запускающий fetchmail, \postmaster\, если запускается пользователем root).
    • set no bouncemail: Прямая почта об ошибках локальному почтмейстеру (в соответствии с глобальным параметром \postmaster\ выше).

    Затем у нас есть сервер и параметры пользователя. Они идут вместе в строки, начинающиеся с опроса; если есть параметры, одинаковые для каждой строки опроса, мы также можем указать их перед строками опроса в разделе, который начинается со значений по умолчанию: (например, тайм-аут, антиспам и пакетный лимит в нашем примере).

    • timeout: тайм-аут бездействия сервера в секундах (по умолчанию 300).
    • антиспам: Укажите, какие SMTP-возвраты интерпретируются как блоки политики спама.
    • batchlimit: укажите максимальное количество сообщений, которые будут отправлены прослушивателю SMTP до того, как соединение будет преднамеренно разорвано и восстановлено (по умолчанию 0, что означает отсутствие ограничений).

    Линии опроса говорят сами за себя; как вы видите, fetchmail извлекает электронные письма с обеих внешних учетных записей электронной почты falkos и помещает их в одну учетную запись.

    Вы заметите, что строки опроса имеют разные окончания (например, nofetchall (по умолчанию), fetchall, keep, nokeep). Значения следующие:

    • nofetchall: получать только новые сообщения (по умолчанию). Если ничего другого не указано (например, fetchall, keep), это означает nofetchall.
    • fetchall: извлекать все сообщения независимо от того, просматриваются они или нет.
    • keep: Не удалять просмотренные сообщения с сервера.
    • nokeep: удаление просмотренных сообщений с сервера.

    Чтобы узнать больше обо всех доступных параметрах конфигурации, взгляните на

    man fetchmail

    /etc/fetchmailrc должен иметь права доступа 600 и должен принадлежать пользователю fetchmail, поэтому мы делаем следующее:

    chmod 600 /etc/fetchmailrc
    chown fetchmail /etc/fetchmailrc

    Наконец, мы можем запустить fetchmail:

    /etc/init.d/fetchmail start

    Теперь Fetchmail должен загружать электронные письма и помещать их в почтовые ящики falkos иtils (используя MTA). Это будет повторяться каждые установленные секунды демона.

    3.2. Используйте файлы конфигурации для каждого пользователя и запускайте fetchmail через Cron

    Вместо использования глобального файла конфигурации, как показано в главе 3.1, мы можем использовать файлы конфигурации для каждого пользователя. Они должны иметь имя .fetchmailrc и должны находиться в домашнем каталоге пользователя.

    Сейчас мы хотим создать такой файл для пользователя falko. Убедитесь, что вы вошли в систему как falko, а не root! Затем мы делаем это:

    cd ~/
    vi .fetchmailrc
    set postmaster falko
    set bouncemail
    
    poll pop.someprovider.tld protocol POP3 user "" there with password "secret"
    poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" fetchall

    Файл очень похож на файл /etc/fetchmailrc из главы 3.1, однако вы заметите, что я больше не использую здесь фразу is falko (поскольку .fetchmailrc находится в домашнем каталоге falkos, fetchmail знает, что письма должны доставляться falko) . Конечно, здесь вы все равно можете использовать is falko, так что файл тоже может выглядеть так:

    set postmaster falko
    set bouncemail
    
    poll pop.someprovider.tld protocol POP3 user "" there with password "secret" is falko here
    poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall

    Чтобы узнать больше обо всех доступных параметрах конфигурации, взгляните на

    man fetchmail

    .fetchmailrc должен иметь права доступа 600, чтобы только falko мог читать/писать в него:

    chmod 600 ~/.fetchmailrc

    Вот и все. Теперь falko может запустить процесс поиска, запустив

    fetchmail

    или

    fetchmail -v

    который показывает, что происходит.

    Конечно, falko не хочет запускать поиск вручную каждые несколько минут, поэтому мы создаем для него задание cron. Еще как юзер фалько, бежим

    crontab -e

    и создайте задание cron, подобное этому (которое будет запускать fetchmail каждые пять минут):

    */5 * * * * /usr/bin/fetchmail &> /dev/null

    4 ссылки

    • Debian: http://www.debian.org
    • Fetchmail: http://fetchmail.berlios.de