Загрузка почты с использованием IMAP с fetchmail

Мне нужно скачать все почтовые сообщения из почтового аккаунта с fetchmail.

Когда я пытаюсь использовать POP3, я могу правильно загрузить всю почту в следующем формате:

[root@srv root]# ls /home/mail_import/MAIL_USER/new/
1453828024.7837_0.srv
1453828029.7843_0.srv

Но протокол pop3 не позволяет выбрать папку, поэтому мне нужно использовать IMAP.

Я не могу загрузить почту отдельно при использовании IMAP. Я попытался, и у меня есть один файл со всеми письмами.

Например:

[root@srv home]# stat /home/mail_import/MAIL_USER/teste
  File: ‘/home/mail_import/MAIL_USER/teste’

[root@srv home]# head /home/mail_import/MAIL_USER/teste
From root@SRV  Tue Jan 26 18:56:31 2016
Return-path: <root@SRV  >
Envelope-to: MAIL_USER@SRV  
Delivery-date: Wed, 02 Dec 2015 15:47:00 -0500

Мне нужно скачать все письма с помощью imap в отдельных файлах, таких как pop3.

Мой.fetchmailrc это:

set bouncemail
set no spambounce
set softbounce
set properties ""
defaults:
  antispam -1
  batchlimit 100

poll DOMAIN with proto IMAP
  user 'USER' there with password 'PASS' is 'MAIL' here
  options keep fetchall ssl mda "/usr/bin/procmail -f %F -d %T";
  folder INBOX

и мой.procmailrc это:

MAILDIR=/home/mail_import/MAIL_ACCOUNT
DEFAULT=$MAILDIR/INBOX
LOGFILE=/var/log/procmail
LOCKFILE=$MAILDIR/.default.lock
VERBOSE=on
:0 fhw
|formail
#
## Any other rules the user wishes to either include with INCLUDERC,
## or hardcode into this file, would go here.
## --------------------------------------------------------------------------
## If we're here, the mail didn't match any other rules, so deliver normally.
:0:
$DEFAULT
## If that fails, report an error and throw the mail away.
EXITCODE=75
:0
/dev/null

Есть какой-то правильный вариант загрузки электронной почты с использованием IMAP отдельно равного POP3?

1 ответ

Я не понимаю, почему вы используете Procmail здесь вообще. Просто запустите Fetchmail и позвольте ему получать вашу почту. Укажите папку назначения в подходящем формате и перейдите.

Независимо от того, являются ли сообщения электронной почты отдельными файлами, это не особенность протокола. Это особенность используемой вами программы доставки; если вы решили доставить в файл (Беркли mbox формат; что вы видите здесь, с From_ в начале каждого сообщения), тогда все сообщения будут доставлены в один файл. Если вы доставляете в папку (в формате maildir, например, с newtmpcur подкаталоги) вы получите результат, который вы запрашиваете. Просто сделайте все, что вы сделали, чтобы получить ваши сообщения POP3 в папку maildir MAIL_USER, только используя imap вместо pop3и все готово.

Если вы специально хотите сделать это в Procmail, измените

DEFAULT=$MAILDIR/INBOX

в

DEFAULT=$MAILDIR/

Но вся ваша .procmailrc кажется бессмысленным. Почему вы трубите вещи через formail? Ваши действия просто дублируют поведение Procmail по умолчанию с несколькими ошибками. Я думаю, что вы могли бы упростить как ваше собственное понимание, так и процесс, выяснив, как Fetchmail доставляет сообщения туда, куда вы хотите. (Не совсем уверен, поддерживает ли он maildir, хотя; быстрое прибегание к помощи не дало результатов. Возможно, не указывать mda вообще, если ты так сделал с POP3.)

Другие вопросы по тегам