使用 fetchmail 仅检索一个特定帐户的邮件

使用 fetchmail 仅检索一个特定帐户的邮件

情况

我有以下内容~/.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

相关内容