Загрузка почты с использованием 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, например, с new
tmp
cur
подкаталоги) вы получите результат, который вы запрашиваете. Просто сделайте все, что вы сделали, чтобы получить ваши сообщения POP3 в папку maildir MAIL_USER
, только используя imap
вместо pop3
и все готово.
Если вы специально хотите сделать это в Procmail, измените
DEFAULT=$MAILDIR/INBOX
в
DEFAULT=$MAILDIR/
Но вся ваша .procmailrc
кажется бессмысленным. Почему вы трубите вещи через formail
? Ваши действия просто дублируют поведение Procmail по умолчанию с несколькими ошибками. Я думаю, что вы могли бы упростить как ваше собственное понимание, так и процесс, выяснив, как Fetchmail доставляет сообщения туда, куда вы хотите. (Не совсем уверен, поддерживает ли он maildir, хотя; быстрое прибегание к помощи не дало результатов. Возможно, не указывать mda
вообще, если ты так сделал с POP3.)