返回列表 回复 发帖

postfix 发信邮件服务器设置

以下设置针对需要大量外发邮件的服务器,如果你的邮件服务器是专门用来发垃圾邮件的,那么下面这些设置恐怕也没有太多作用,下面的这些设置也仅仅是让我们发出的邮件更符合发送规则,当然了,如果滥发,不管你设置怎么样的策略,一旦超过了邮件运营商的限制,封你还是没商量的。

安装djbdns
djbdns 是一個由Qmail 的作者所设计的一个轻量级DNS server,我们使用它提供的dnscache服务作为本地邮件发送的DNS查询缓存,用于加快邮件的转发速度。
ucspi-tcp软件包由一组工具组成。它们用来简单的建立客户机-服务器tcp后台程序。TcpServer是一个比inetd安全性更好的选择。它内建有基于规则的连接控制,能完善地在达到预定义的最大系统负载时将连接推迟
  1. shell>wget http://www.qmailtoaster.org/download/develop/ucspi-tcp-toaster-0.88-1.3.5.src.rpm
  2. shell>wget http://www.qmailtoaster.org/download/develop/daemontools-toaster-0.76-1.3.3.src.rpm
  3. shell>wget http://www.qmailtoaster.org/download/develop/djbdns-1.05-1.0.5.src.rpm
  4. Shell >yum -y install rpm-build
  5. shell>rpm -vih daemontools-toaster-0.76-1.3.3.src.rpm
  6. shell>rpm -ivh ucspi-tcp-toaster-0.88-1.3.5.src.rpm
  7. shell>rpm -ivh djbdns-1.05-1.0.5.src.rpm
  8. shell>cd  /usr/src/redhat/SPECS
  9. shell>rpmbuild --bb daemontools-toaster.spec
  10. shell>rpmbuild --bb ucspi-tcp-toaster.spec
  11. shell>rpmbuild --bb djbdns.spec
  12. shell>cd  /usr/src/redhat/RPMS/i386
  13. shell>rpm --ivh daemontools-toaster-0.76-1.3.3.i386.rpm  ucspi-tcp-toaster-0.88-1.3.5.i386.rpm
  14. shell>rpm --ivh djbdns-1.05-1.0.5.i386.rpm djbdns-localcache-1.05-1.0.5.i386.rpm
  15. shell>rm {/var/djbdns/,/}service/{axfrdns,tinydns}               // 我们只需要dnscache 服务
  16. shell>echo -n 10000000 >/var/djbdns/dnscache/env/CACHESIZE  // 修改DNS内存cache大小10M
  17. shell>echo -n 30000000 >/var/djbdns/dnscache/env/DATALIMIT
  18. shell>echo nameserver 127.0.0.1 >/etc/resolv.conf
  19. shell>/etc/init.d/djbdns start
复制代码
安装domainkey
雅虎的这项技术被称之为“DNS端的电子签名(DomainKeys)”,专门对付各种各样经过改头换面的垃圾邮件。垃圾邮件经常通过改动电子邮件的发送着对用户进行欺骗,用户往往会误以为这不是垃圾邮

件,因而打开查看的可能性加大。雅虎的“DomainKeys”允许接受电子邮件的系统对邮件进行检查,以确定邮件发送者的身份是不是假的。“DomainKeys”通过使用加密技术完成电子邮件发送者身份的
验证。外发的邮件通过私人密码进行数字签名,而接受电子邮件的系统则使用公共密码对签名进行核实。
  1. shell>wget http://nchc.dl.sourceforge.net/sourceforge/dk-milter/dk-milter-1.0.1.tar.gz
  2. shell>yum -y install sendmail-devel                       // dk-milter编译需要
  3. shell>yum -y install csh
  4. shell>tar -zxvf dk-milter-1.0.1.tar.gz
  5. shell>cd dk-milter-1.0.1
  6. shell>sh Build -c
  7. shell>sh Buld install
  8. shell>cd dk-filter
  9. shell>chmod +x  gentxt.csh
  10. shell>./gentxt.sh  default  hiadmin.com                     // 保存输出的文字
  11. shell>cp default.private  /etc/postfix/hiadmin.com.key.pem   // 拷贝私钥到/etc/postfix
  12. shell>chmod 600  /etc/postfix/hiadmin.com.key.pem
  13. shell>/usr/bin/dk-filter  -A  -l  -p inet:8891@localhost  -d  hiadmin.com  \  // 启动dk-filter签名服务
  14.                      -s  /etc/postfix/hiadmin.com.key.pem  -S  default
复制代码
dk-filter 命令说明:
  1. -a peerlist   # 那些 host 不做 DKIM check
  2. -A               # dk-filter 死掉時自動重啟
  3. -b modes         # s (singer) / v (verify) 預設為 sv
  4. -c canon         # 預設是 simple (表頭不改變),
  5.                  # 另外為 relaxed (表頭可能修正,去除空白,不換行等等)
  6. -C config        # 設定檔,詳見下述
  7. -d domlist       # 要 sign 的 domain 列表,以逗號區隔
  8. -D               # 一併 sign -d 之下 domain 的 sub-domain
  9. -f               # 前台執行
  10. -h               # 會在 Mail Header 中加入 X-DomainKeys 資訊
  11. -H               # DomainKey-Signature 中說明 sign 的 header 資訊
  12. -i ilist         # 只做 sign, 不做 verify,預設為 127.0.0.1
  13. -I elist         # 透過此主機轉信之來源做 sign,不做 verify
  14. -l               # log 必要訊息到 maillog
  15. -m mtalist       # MTA 名字,也就是 DaemonPortOptions 中的 Name,預設是全部
  16. -M macrolist     # MTA macros which enable signing
  17. -o hdrlist       # 哪些 Header 不 sign,Ex: -o to,subject,date , From 一定要 sign
  18. -P pidfile       # pid file 路徑
  19. -s keyfile       # private key
  20. -S selector      # selector,會以 selector._domainkey.Domain 進行 type=TXT 查詢
  21. -u userid        # 以什麼身份執行
  22. -V               # 版本資訊
复制代码
将以下公匙记录到DNS Server 上
例:
  1. default._domainkey   IN  TXT "k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALxzF8xb/uXCnC58p/kCLtxW5tm/xrR905O6X0C6Ydohw574EsimbCaeqsCtqm+3IKyrnBj3JeShbEGBJN5HEF0CAwEAAQ==" ;
复制代码
----- DomainKey default for hiadmin.com

分别建立记录 :
  1. default._domainkey.hiadmin.com
  2.   _domainkey.hiadmin.com
复制代码
设置一条txt记录 :
  1. k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALxzF8xb/uXCnC58p/kCLtxW5tm/xrR905O6X0C6Ydohw574EsimbCaeqsCtqm+3IKyrnBj3JeShbEGBJN5HEF0CAwEAAQ==
复制代码
设置 SPF
Sender Policy Framework。SPF可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案。当你定义了你的domain name的SPF记录之后,接收邮件方会根据你的SPF记录来确定连接过来的IP地址是

否被包含在SPF记录里面,如果在,则认为是一封正确的邮件,否则则认为是一封伪造的邮件。
例:
  1. hiadmin.com.    466    IN    TXT     "v=spf1 ip4:61.xx.xx.xx ip4:61.xx.xx.xx mx ~all"
复制代码
61.152.246.24-25 和 MX 记录中设置的主机为信任邮件发送服务器,其他全部不信任
修改 /etc/postfix/main.cf
增加
  1. smtpd_milters = inet:localhost:8891
  2. non_smtpd_milters = inet:localhost:8891
复制代码
测试
发一封信到google 检查邮件头是否包含了 DomainKey-Signature
如下所示
  1. Received-SPF: pass (google.com: domain of public@hiadmin.com designates 61.xxx.xxx.xx as permitted sender) client-ip=61.xxx.xxx.xxx;
  2. DomainKey-Status: good (test mode)
  3. Authentication-Results: mx.google.com; spf=pass (google.com: domain of public@hiadmin.com designates 61.xxx.xxx.xxx as permitted sender) smtp.mail=public@hiadmin.com;

  4. domainkeys=pass (test mode) header.From=public@hiadmin.com
  5. Received: from pc00497 (unknown [211.xxx.xxx.xxx])
  6. by hiadmin.com (Postfix) with ESMTPA id 980912580D1
  7. for <martian2008@gmail.com>; Mon, 27 Oct 2008 17:46:09 +0800 (CST)
  8. DomainKey-Signature: a=rsa-sha1; s=default; d=hiadmin.com; c=simple; q=dns;
  9. b=Q/1un1hpfsZP7zs+0rPsVzb3DFtpIaaGkPL2aSEjmQL7cx9Fhn8EtYLz1J8p7xKLt
  10. lItLJN609cDDER5kjCJKg==
复制代码
设置milter-limit 控制postfix 发送频率
milter-limit 是Sendmail 的一个filter,用于限制用户发邮件的数量,以防止邮件服务器
被非法用于发送垃圾邮件,它可以实现对指定的客户端IP、收件人、发件人进行限制。该
filter可以不做任何修改即可用于Postfix中
www.snertsoft.com 下载 (需要注册)
  1. http://www.snertsoft.com/download/milter-limit-0.13.tar.gz
  2. http://www.snertsoft.com/download/libsnert-current.tar.gz
  3. shell>yum install db-devel
  4. shell> tar -zxvf libsnert-current.tar.gz
  5. shell> tar -zxvf milter-limit-0.13.tar.gz
  6. shell>cd com/snert/src/lib
  7. shell> ./configure --with-db=/usr            # 检查是否有Berkeley DB 支持
  8. shell> make build
  9. shell> cd ../milter-limit
  10. shell> ./configure --enable-run-user=postfix --enable-run-group=postfix
  11. shell> make build
  12. shell> make install
复制代码
修改 /etc/postfix/main.cf
  1. smtpd_milters = unix:/var/run/milter/milter-limit.socket  # 如果有多个milter 用逗号分隔
复制代码
过滤规则:
milter-limit 的规则文件写在/etc/mail/access 中,然后用makemap 来生成
makemap hash /etc/mail/access.db < /etc/mail/acces
# 请注意access.db权限不能为可执行,并且可以让postfix 用户能够读取
/etc/mail/access 文件的规则包括
  1. milter-limit-Connect:       # 客户端连接IP
  2. milter-limit-From:          # 发件人地址
  3. milter-limit-To:             # 收件人地址
  4. milter-limit-Auth:          # 通过SMTP认证的发件人
复制代码
支持以下匹配规则
  1. [network/cidr]limit        无类域间路由
  2. !pattern!limit              简单文本匹配
  3. /regex/limit               POSIX正则表达式
复制代码
limit:时间单位可以是秒(s)、分钟(m)、小时(h)、天(d)、星期(w)
格式: messages ‘/’ time [unit]

过滤规则例子:
  1. milter-limit-Connect:80.94              [80.94.96.0/20]-1/1   500/3d          # 冒号之间不能有空格
复制代码
# 80.94开头的网段:从地址80.94.96.0/20 (80.94.96.0- 80.94.111.255) 不受限制,其他地址限制在 3天内最多发送500封邮件
  1. milter-limit-To:163.com                                        100/1h
复制代码
# 发往163.com域限制在1小时发送100封邮件
策略:
启动参数: policy=reject
  1. none            什么都不做
  2. tag              给邮件标题打标签   启动参数:subject-tag=[SPAM]
  3. quarantine     将邮件送入隔离队列(不发送,需要通过命令激活).
  4. later            不接收邮件,提示发送端发送延迟消息,邮件仍旧在发送端的队列中,稍候重试
  5. reject           拒绝邮件(默认值)
  6. discard         直接丢弃
复制代码
启动命令
  1. /usr/local/sbin/milter-limit  verbose=all policy=later -start
复制代码
如果需要调试使用 verbose=all 在/var/log/maillog 中查看日志
其他参数用 -help 参数查看
postfix 基本参数设置
  1. smtp_skip_4xx_greeting = yes
  2. smtp_skip_5xx_greeting = yes
  3. default_destination_concurrency_limit = 2 #同一IP并发连接
  4. initial_destination_concurrency = 2
  5. smtp_helo_name = mail.hiadmin.com        # 本机对外真实域名
  6. smtpd_milters = inet:localhost:8891,unix:/var/run/milter/milter-limit.socket   
  7. #使用sendmail 的milter-limit 插件来实现对指定的客户端IP、收件人、发件人进行限制
复制代码
http://www.hiadmin.com/tag/milter/
返回列表
开源邮件服务器 开源邮件服务器 web 开源邮件 开源 mail 开源 邮件服务器 邮件技术 mail技术 反垃圾邮件 反垃圾mail mail投递
邮件服务器 mail服务器 开源软件 mail软件 mail服务新品牌 开源邮件服务新品牌
开源mail服务新网站 邮件服务新品牌 mail tmail mailserver 163邮件 sendmail |Linux维护|Linux代维|成都Linux维护|成都Linux代维