设置一个垃圾邮件家庭电子邮件服务器(一些替代方式)(Debian Squeeze)
介绍
电子邮件垃圾邮件是一个巨大的问题。 我已经找到了一个简单的解决方案,但是需要一些时间才能完全“迁移”到它。
解决方案是创建一个唯一的电子邮件地址,每次我必须给别人或某些网站注册一个电子邮件地址。 如果我想在Twitter上注册一个帐号,我会使用“www.twitter.com@MYDOMAIN.COM”。 对于基于Web的服务,我使用完整的域名,包括。 @的左边的子域名(www)(一些设计不善的网站不认可www。作为有效的电子邮件地址,对于那些我刚刚离开的地方)。
对于人们,我使用的格式如下:“email.john.doe@MYDOMAIN.COM”。 您也可以使用“from.john.doe@MYDOMAIN.COM”。 好的是,@的电子邮件地址的左侧几乎是“无限的”。
因为我为每个联系人生成唯一的电子邮件地址,我可以很容易地找出我的电子邮件地址泄露的位置,然后我可以轻松地删除它。
这个howto将使用相应的脚本设置一个功能齐全的电子邮件服务器,从而简化电子邮件管理。 它还包括DNS设置部分 - 即使您处于动态地址 - 例如,如果要在家中运行自己的小邮件服务器。
概要
在这个我如何使用Debian Squeeze作为服务器。 对于其他Linux发行版,您必须自己做出修改。
在这个howto中正在做的一个简短的总结就是这样:
- 获取域名
- 照顾动态ip - 如有必要
- 照顾dns和路由
- 设置Postfix
- 设置procmail
- 设置鸽子
- 设置网络服务器进行电子邮件地址管理
- 用插件设置雷鸟
积分
在这方面我也在这里继续传递其他几个特别是关于绑定和电子邮件服务器的设置。 对于那些,我或多或少地从Falko的完美的Debian Server中复制了。 电子邮件转发部分也是由sjau从这里借来的。 没有这些,我可能不会能够设置这个。
获取域名
在开始运行自己的邮件服务器之前,您需要一个可以设置MX记录的域名。 我不想提出任何建议,因为那里有吨和吨的域名注册商。 我知道的最便宜的是GoDaddy 。
我不使用GoDaddy自己,但据我听说他们提供了一个坚实的服务。
处理动态IP
面临的另一个挑战是如何处理动态IP地址的事情。 如果您没有专门租用某个地方,但使用家庭互联网连接,那么很可能您没有静态ip。
在网络中,必须有一个静态ip,以便其他人总是知道到达哪里。 但是有一些服务可以帮助您。
我使用的一个服务是EveryDNS 。 他们让我托管域名的DNS 。
到目前为止,他们仍然免费提供这项服务。 虽然他们在2010年买下了这个承诺,但那个捐赠者的客户也可以免费使用这个系统。 在他们的网页上,他们没有提到任何新客户需要支付 - 但我不知道肯定。
EveryDNS的原因是,它们还提供了一些可用于更新DNS的perl脚本。 这是必不可少的,因为如果您没有静态IP地址,您的IP会随时间而变化。 你可以从这里获取perl脚本。
当你有一个域名,然后首先去什么是我的IP 。 它将显示您当前的公共IP地址。 然后在EveryDNS创建一个帐户,并至少输入以下条目,其中MYDOMAIN.COM将是您的域名:
(1)创建一个“A”记录类型,设置为完全限定域名“MYDOMAIN.COM”,并将其设置为您的公网IP地址
(2)创建一个“CNAME”记录类型,设置为完全限定域名“* .MYDOMAIN.COM”并设置为“MYDOMAIN.COM”
(3)设置“MX”记录类型,设置为完全限定域名“MYDOMAIN.COM”,设置为“MYDOMAIN.COM”,设置为“MX值”“10”
我们刚刚做的是设置域的DNS。 主域名位于您的IP地址(a-record),所有其他域名也可以找到(cname记录中的*指向主域),我们还在那里操作邮件服务器(mx记录)。
root用户
以root用户身份执行以下操作 - 除非另有说明。
Dyn。 IP更新
如前所述,如果您没有静态IP地址,则需要重新更新DNS信息。
(1)获取perlscript并使其可执行
cd /root
wget http://www.everydns.net/eDNS.pl
chmod 0755 eDNS.pl
(2)创建一个调用perl脚本的bash脚本(有其他方法,但是我发现最简单的):
touch eDNS.sh
echo "#!/bin/bash" > eDNS.sh
echo "perl /root/eDNS.pl -u USERNAME -p PASSWORD -d MYDOMAIN.COM" >> eDNS.sh
使用您的everydns登录凭据替换USERNAME和PASSWORD。
(3)设置一个cron来运行它
我喜欢使用包含所有cron的cron.txt文件。 我认为这样维护很简单。
首先,您必须检查是否已经有一个cron条目:
crontab -l
如果没有cron条目,那么只需运行以下命令即可
touch cron.txt
chmod 0700 cron.txt
echo "*/5 * * * * /root/eDNS.sh >/dev/null 2>&1" > cron.txt
如果已经有cron条目,请复制它们,创建一个cron.txt文件并插入它们并添加以下命令:
*/5 * * * * /root/eDNS.sh >/dev/null 2>&1
现在我们将cron.txt加载为cron:
crontab cron.txt
我们检查是否正确添加:
crontab -l
LAN /路由/绑定
我们面临的下一个问题是如何解决您的lan中的域。 如果您的邮件服务器在路由器后面,那么我可能会有一个本地ip,如192.168.0.x或10.0.0.x.
如果您在路由器后面,则需要将以下端口转发到您的服务器:25,80,133,443,991。可能需要更多端口587。
另外我们面对如何从lan内部解析域名的问题。 从lan外部,您的DNS条目应该指向您当前的IP地址。 然而,当你在lan里面做一个dns查询,它只会返回你的公共ip,并且它会失败。
有几个解决方案的问题 - 如果问题甚至存在。
一种方法是在路由器中使用dnsmasq(例如dd-wrt或tomato-wrt)。 但是,由于我无法保证其正常工作,我看到的唯一其他选项是在邮件服务器上设置完整的DNS服务器。
在本教程中,我将使用一个chrooted Bind9,因为我是最熟悉的。 对于其他DNS服务器,您将在线找到大量文档。
(1)安装软件并停止
apt-get install bind9
/etc/init.d/bind9 stop
(2)更改/ etc / default / bind9
配置,使选项行如下所示:
OPTIONS="-u bind -t /var/lib/named"
(3)在/ var / lib
下创建必要的目录
:
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
(4)然后将config目录从/ etc
移到/ var / lib / named / etc
:
mv /etc/bind /var/lib/named/etc
(5)从旧位置创建新配置目录的符号链接(以避免BIND将来更新时出现问题):
ln -s /var/lib/named/etc/bind /etc/bind
(6)使空和随机设备,并修复目录的权限:
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind
(7)编辑/etc/rsyslog.d/bind-chroot.conf
文件并添加
$AddUnixListenSocket /var/lib/named/dev/log
(8)重启服务
/etc/init.d/rsyslog restart
/etc/init.d/bind9 start
并检查/ var / log / syslog
是否有错误。
现在我们在chrooted环境中安装了Bind9。 接下来要做的是为您的域强制添加区域文件。
(9)编辑/etc/bind/named.conf.local
并添加
zone "MYDOMAIN.COM" IN { type master; file "/etc/bind/zones/MYDOMAIN.COM.db"; allow-update { none; }; };
(10)创建区域文件夹和区域文件
mkdir /etc/bind/zones
touch /etc/bind/zones/MYDOMAIN.COM.db
chown -R bind:bind /etc/bind/zones/MYDOMAIN.COM.db
(11)将您的区域文件信息添加到MYDOMAIN.COM.db
$TTL 86400 @ IN SOA @ MYDOMAIN.COM. ( 1 ; serial 2600 ; refresh 15M ; retry 3600 ; expiry 360 ) ; minimum @ IN NS ns.MYDOMAIN.COM. ns IN A LOCALIP www IN A LOCALIP MYDOMAIN.COM. IN A LOCALIP MYDOMAIN.COM. IN MX 10 LOCALIP
当然用您的实际域名替换MYDOMAIN.COM,使用您的静态LAN IP地址替换LOCALIP。 我们在这里告诉我们,该域名的域名服务器是托管在“ns.MYDOMAIN.COM”和“ns.MYDOMAIN.COM”是在静态本地ip地址找到。
(12)重启Bind9
/etc/init.d/bind9 restart
(13)更改路由器NS分辨率
当Bind9现在安装时,最后一件事情就是要做。 在您的路由器上,您必须更改Nameservers解析顺序。 第一个nameserer现在必须是您的“邮件服务器”,具有相应的静态本地ip。 否则整个bind9设置是无效的。 第二个Nameservers输入第一个名称中的内容。 根据您的路由器可能会有点棘手。