使用fetchmail(Debian Etch)从远程服务器检索电子邮件

通过fetchmail从远程服务器检索电子邮件(Debian Etch)

版本1.0
作者:Falko Timme

Fetchmail是一个用于从远程服务器检索电子邮件的程序。 假设您有五个不同服务器上的五个电子邮件帐户。 当然,你不想连接到他们中的每一个来获取你的电子邮件。 这是fetchmail发挥的地方。 如果您在Linux服务器上拥有用户帐户,则可以使fetchmail从远程服务器下载电子邮件,并将其放入一个邮箱(您的Linux用户中的一个),从中可以使用电子邮件客户端(例如Thunderbird或外表)。

或者想像您在提供商处有一个不进行垃圾邮件和病毒过滤的电子邮件帐户。 在这种情况下,您可以使用fetchmail将邮件下载到您自己的服务器,并通过垃圾邮件和病毒过滤器(例如SpamAssassin和ClamAV)进行管理,然后再使用电子邮件客户端下载邮件。

我不会保证这将为您工作!

1初步说明

您需要具有可以接收电子邮件的系统用户的Linux服务器,这意味着必须在系统上安装诸如Postfix或Sendmail之类的MTA。 否则,fetchmail将无法正常工作,因为它尝试将下载的电子邮件传递到MTA(Postfix,Sendmail,...),MTA将邮件传递到用户的邮箱(您可以将系统配置为包括垃圾邮件和在这个过程中进行病毒扫描,例如使用amavisd-newprocmail ,但这不在本教程中)。

我在本教程中使用Debian Etch系统,其中两个用户称为falko直到存在。

2安装fetchmail

为了安装fetchmail,我们所要做的就是运行

apt-get install fetchmail

3配置fetchmail

配置fetchmail有两种方法。 我们可以使其作为具有全局配置文件的守护进程运行,或者我们可以创建一个cron作业来运行fetchmail以及每用户配置文件。 我将在这里描述两种方法。

3.1运行fetchmail作为具有全局配置文件的守护进程

要使fetchmail作为守护进程运行,我们必须编辑/ etc / default / fetchmail并将START_DAEMON设置为yes

vi /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有两个电子邮件帐户,我们要从中检索电子邮件:

  • 第一个帐户:server pop.someprovider.tld ,协议POP3 ,用户名falko@someprovider.tld (是的,用户名是这种情况下的电子邮件地址),密码密码。
  • 第二个帐号:服务器mail.otherprovider.tld ,协议POP3 ,用户名ftimme ,密码verysecurepassword

直到有一个电子邮件帐户:

  • 服务器mailin.tillsprovider.tld ,协议POP3 ,用户名tbrehm ,密码iwonttellyou

所以我们的文件/ etc / fetchmailrc可能如下所示:

vi /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 "falko@someprovider.tld" 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

在文件的开头,我们有一些全局选项,例如set daemon 300 (这意味着fetchmail应该每300秒检索一次电子邮件)来控制程序的操作。 上述选项的含义如下:

  • set daemon :设置后台轮询间隔(以秒为单位)。
  • 设置syslog :通过syslog进行错误记录。
  • set postmaster :指定最后的邮件收件人的名称(默认:用户运行fetchmail,“postmaster”如果由root用户运行)。
  • 设置无bouncemail :直接错误邮件到本地邮局(按照上面的“postmaster”全局选项)。

然后我们有服务器和用户选项选项。 这些都是以投票开始的 , 如果每个轮询行都有相同的选项,那么我们可以在以默认值开始的部分中的轮询线之前指定它们:(例如,在我们的示例中为超时反垃圾邮件批量限制 )。

  • 超时 :服务器不活动超时(以秒为单位)(默认值为300)。
  • 反垃圾邮件 :指定什么SMTP返回被解释为垃圾邮件策略块。
  • batchlimit :指定连接故意拆除并重建之前发送到SMTP监听器的最大消息数(默认为0,表示无限制)。

投票线是不言而喻的; 正如您所看到的,fetchmail从falko的外部电子邮件帐户中检索电子邮件,并将它们放入一个帐户。

你会注意到轮询线有不同的结局(例如nofetchall (默认), fetchallkeepnokeep )。 含义如下:

  • nofetchall :仅检索新消息(默认)。 如果没有指定任何其他内容(例如fetchallkeep ),这意味着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现在应该下载电子邮件,并将其放入falko和邮箱(使用MTA)。 它会重复这个每个守护进程秒。

3.2使用每用户配置文件,并通过Cron运行fetchmail

而不是使用第3.1章所示的全局配置文件,我们可以使用每用户配置文件。 这些必须具有名称.fetchmailrc ,并且必须位于用户的homedir中。

我们现在想为用户falko创建一个文件。 确保您以falko登录,而不是root登录! 然后我们这样做:

cd ~/
vi .fetchmailrc
set postmaster falko
set bouncemail

poll pop.someprovider.tld protocol POP3 user "falko@someprovider.tld" there with password "secret"
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" fetchall

该文件看起来非常类似于3.1中的文件/ etc / fetchmailrc ,但是您会注意到我不再使用falko这个短语了(因为.fetchmailrcfalko的homedir中,fetchmail知道邮件应该是交付给falko )。 当然,你仍然可以使用falko在这里 ,所以该文件也可能看起来像这样:

set postmaster falko
set bouncemail

poll pop.someprovider.tld protocol POP3 user "falko@someprovider.tld" 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工作。 仍然是用户falko ,我们跑

crontab -e

并创建一个像这样的cron工作(每5分钟启动一次fetchmail):

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

4链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏