情况
我有以下内容~/.fetchmailrc
poll pop.gmail.com protocol pop3 user "[email protected]" password "***" ssl
mda "/usr/bin/procmail -d default -a foo@example-com"
poll pop.gmail.com protocol pop3 user "[email protected]" password "***" ssl
mda "/usr/bin/procmail -d default -a bar@example-com"
因此,我检索所有带有fetchmail -v -m '/usr/bin/procmail -d %T'
.
问题
但问题是所有账户都被找回了。
问题
fetchmail 命令是否可以要求仅检索一个特定地址的邮件?
答案1
您可以为每个帐户指定不同的名称并使用该via
选项
例如
poll foo via pop.gmail.com ...
poll bar via pop.gmail.com ...
现在您可以在命令行上指定每一项;fetchmail foo
只会获取该帐户的邮件。
我在 Outlook 中使用这种类型的结构:
poll outlook via imap-mail.outlook.com port 993
proto IMAP
user [email protected] is foo here
fetchall
password *****
ssl
poll outlook2 via imap-mail.outlook.com port 993
proto IMAP
user [email protected] is bar here
fetchall
password *****
ssl
这可以在 zsh 中按如下方式实现。
别名和检索邮件的函数
alias retrieveallmails="fetchmail -v -m '/usr/bin/procmail -d %T'" # For all the accounts
function retrievemail()
{
# For a specific account
fetchmail $1 -v -m '/usr/bin/procmail -d %T'
}
相关完成
_retrievemail_complete() {
local accounts
accounts=($(fetchmail --configdump | sed -n 's/.*"pollname":"\(.*\)",/\1/p'))
_arguments \
'1: :->account' \
'*:: :->arguments'
case $state in
(account)
_describe 'accounts' accounts
;;
(arguments)
_files
;;
esac
}
compdef _retrievemail_complete retrievemail