首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > Sendmail > Postfix 读书心得 > 正文

Postfix 读书心得

出处:疯狂老头的博客 作者:疯狂老头 时间:2006-9-5 23:23:00
寫在前面
這篇是我讀 SAMS POSTFIX 一書的心得及筆記,筆記不照順序,內容前後不按照書,很多我讀過的東西我不再寫上去,若有錯誤,請告訴我,以便更正
該書的 ISBN 是 0-672-32114-9
基本設定
main.cf
myhostname and mydomain
若末設定 myhostname 和 mydomain 時,預設使用系統設定的 hostname ,可以用
#uname -n
查看hostname .
myorigin
用 sendmail 寄信出去,預設的 mail From FQDN
relay_host
指示收進來的信要送到那一台 SMTP Server 做 Relay HOST .... 常用在內部有專用的 Relay SMTP Server ,或是偷用 ISP Mail Server 的頻寬
mydestination
Postfix 收信的 Domain
不過要注意,若是有用 Virtual Domains 的功能,就不能設 mydestination.
smtpd_banner
這是用來設定當 SMTP 連進來時,要顯示的版本資訊
default_destination_concurrency_limit
同時送信到遠端的 SMTP Server 的限制,預設值
default_destination_concurrency_limit = 10
default_local_concurrency_limit
同時送信到本機的的 SMTP Server 的限制,預設值
default_destination_concurrency_limit = 2
default_destination_recipient_limit
送信到遠端 SMTP Server 時,一封信內最多可以有多少收件者,預設值
default_destination_recipient_limit = 10
message_size_limit
進來的信件最大限制,預設值
message_size_limit = 10240000
單位是 Byte,包含信件檔頭的訊息
line_length_limit
使用 SMTP 寄信進來,每一行最大可以傳送多少 bytes,預設值
line_length_limit = 2048
header_size_limit
每一封信寄進來,最大的 header 大小,預設值
header_size_limit = 102400
Look Up Table
regexp
格式有
pattern value
pattern1!pattern2 value
example:
/^postmaster@.*$/ OK
/^(.*)-outgoing@(.*)$/!/^owner-.*/ 550 Ise ${1}@${2} instead
pcre
postfix 也支援 PCRE 的格式. format 同 regexp
Database
NIS
NIS, Network Informaion System 用法如下
alias_maps = hash:/etc/postifx/alias, nis:nis.server.com
MySQL
postfix 同樣也支援 MySQL 用法
alias_maps = mysql:/etc/postfix/mysql-alias.cf
至於 mysql-alias.cf 的內容如下
user = rich
password = richard
dbname = postfix
table  = alias
select_field = real_address
where_field = alias_address
additional_conditions = and status = 'current'
hosts = mysql.server.com
這樣下會如下的 SQL 指令
SELECT real_address from postfix_aliases where alias_address = '$lookup' and status = 'current'
$lookup 會被換作 pattern 值
LDAP
以 LDAP 相關參數
alias_map = hash:/etc/postfix/aliases, ldap:myldap
myldap_server_host = meshach.server.com
myldap_search_base = dc = server, dc = com
myldap_result_attribute = mailbox
Access Table
Access Table 可以控制那些來源的信件可以進來,那些不行,來源可以有以下的格式
user@domain
hostname.domain
domain
user@
aaa.bbb.ccc.ddd (IP)
aaa.bbb.ccc
而結果會有以下的格式
OK          允許
REJECT      拒絕
XXX text    用 XXX 作 retuen code ,並且以 text 作為訊息
text        允許 SMTP ,並且以 text 作為訊息
會用到 Access 的參數
smptd_client_restrictions       限制那一個 clinet 可以送信
smtpd_helo_restrictions         限制那個用 SMTP HELO和 EHLO 指令時,那個 hostname 可以送信
smtpd_sender_restrictions       限制 SMTP MAIl FROM 指令
smtpd_recipient_restrictions    限制 SMTP RCPT TO 指令
記得存檔以後要執行
#postmap /etc/postfix/access
在 /etc/postfix/main.cf 加上類似以下的語法
smtpd_sender_restrictions = hash:/etc/postfix/access
aliases Tables
aliases 最簡單的說法就是可以用來做 "假" email 位置,有幾種用法
送信到相關的 e-mail 位置
用 pipe 的方式送到一個命令列
加入到一個檔案
送到一組 e-mail ,而這組列表存在於一個檔案
基本的語法
pattern: result
實務用法
name: name_1,name_2,name_3    送給 name_1,name_2,name_3
name: | program               送給 program 這隻程式處理
name:  file                   檔案是要 full path 的文字檔,記得處理權限問題,並且要在 main.cf 內加上 allow_mail_to_files
name: :include:filelist       送給在 filelist 內所有有郵件名單的.
canonical table
postfix 內的 cleanup 這隻程式會用 canonical table 重寫message header 內的 message address. 通常會配合 aliases ,用在公司會使用
Firstname.Lastname
這樣格式的 E-mail 上,例如在 Aliases 內寫
Richard.Liu richliu
Kevin.lin   kevinlin
而在 canonical 內寫
richliu Richard.Liu
kevinlin Kevin.Lin
預設值是sender 和 recipient 用同一個 canonical file ,你可以在 main.cf 內指定
sender_canonical_maps = hash:/etc/postfix/canonical
recipient_canonical_maps = hash:/etc/postfix/canonical
relocate table
當你的使用者換一個名字,你的系統可以傳一段訊息給他,並且可以告訴他新的 E-mail Address 在那邊
fireduser fireduser@lostspace.com Please Change Your AddressBook
當 someone 寄給 fireduser 時,你的系統會自動回信寫
user has moved to fireduser@lostspace.com, Please Change Your AddressBook
在 main.cf 內的設定值是
relocated_maps = hash:/etc/postfix/relocated
注意: relocte table 並不會幫你將信件轉給新的位置,如果你要會自動轉給新的位置,請用 aliases
transport table
在遞送 mail 的時候,可以用個人指定的 protocol 傳送到遠端的 Server 語法
destination transport:[nexthop]
Example
smtp.server.com local:
pop3.server.com local:
lostworld.org    uucp:lostworld
remote.org      smtp:
remote2.org     smtp:relay.server.com
remote3.org     smtp:relay.server.com:1025
當然,在 main.cf 內要設定
transport_maps = hash:/etc/postfix/transport
注意:當你在 tansport 內指定一個 protocol 時,必需同意也在 master.cf 內設定
virtual table
orz .....
UCE(Unsolicited Commercial Email)
UCE 通常被稱作 Spam .....
header_checks
最簡單的就是檢查檔頭
header_checks = regexp:/etc/postfix/header_checks
Setting Relaying Parameters
設定可以 relay 的 Domain,基本設定如下,後面接的是預設值
smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains
這邊可以用多個參數,而參數和參數之間可以用逗號(,)或是空白分開,個人比較喜歡用逗號
check_relay_domains 允許以下幾種狀況的 Client 進行 relay
任何列在 $relay_domains 參數內的 client,預設會加入 $mydestination 這個參數
列在 $relay_domains 的目的地
列在 $inet_interfaces 參數內的目的地
列在 virtual table 內的目的地
Reject 參數
reject   所有的要求,包含 Local
reject_invalid_hostname   錯誤的 HELO hostname
reject_maps_rbl   如果 client 列在 $maps_rbl_domains
reject_non_fqdn_hostname   HELO 的hostname非FQDN,請注意, MS 產品不按 SPEC 來,常送出 non fqdn hostname
reject_non_fqdn_recipient   收件人位置非FQDN
reject_non_fqdn_sender   寄件人非FQDN
reject_unauth_destination   收件人位置不符合 $mydestination,$inet_interfaces,$virual_maps 或 $relay_domain
reject_unauth_pipelining   用 SMTP pipelining 送出的郵件(似乎是給 local 用?)
reject_unknown_client   clinet 的 hostname 未知
reject_unknown_hostname   client 的 HELO 沒有 DNS A or MX 記錄, 請注意 MS 產品不照規格來
reject_unknown_recipient_domain   收件者的位置的 domain 沒有 DNS A or MX 記錄
reject_unknown_sender_domain   寄件者的位置的 domain 沒有 DNS A or MX 記錄
Permit 參數
permit   
permit_auth_destination   
permit_mx_backup   
Database Check
並不是做資料庫檢查,而是 Postfix 可以讀取檔案,檢查該 client 是不是符合該檔 domain 允許或是禁止通過的列表目前支援以下幾個查詢表格
•  check_client_access
•  check_helo_access
•  check_recipient_access
•  check_sender_access
使用方法,在 main.cf 你想設定的的參數,加上 check_helo_access 之類的語法
smtpd_recipient_restrictions = check_helo_access hash:/etc/postfix/heloaccess , reject
而內容大致上就是
server.com OK
richliu.com OK
poorman.org OK
這個參數在上下文有提到 (fixme) 這樣 應該可以用 pcre 的function ,例如 check_helo_access pcre:/etc/postfix/heloaccess
確認 HELO 位置
由於 Microsoft 程式的問題,讓我在這邊吃了很多苦頭,Microsoft 在破壞 RFC 和製造 RFC 的混亂不遺餘力,在此大力遣責 Microsoft 所寫的任何有問題的 Mail Client 及 Mail Server
本人最幹的就是 HELO 只會送出主機名稱,並不會送出 FQDN .
在 main.cf 內確認 HELO 的參數是
smtpd_helo_restrictions = value
POSTFIX HELO 限制的參數
check_helo_access maptype:mapname   
check_client_access maptype:mapname   
permit   
permit_mynetworks   允許在 mynetworks 內的 client sendmail
permit_naked_ip_address   允許沒有被 brackets(應該為 [])框起來的 IP
reject   所有的要求,包含 Local
reject_unknow_client   拒絕沒有 DNS PTR Record
reject_maps_rbl   如果 client 列在 $maps_rbl_domains
reject_invalid_hostaname   Reject 不正確的 HELO hostname
reject_unauth_pipelining   用 SMTP pipelining 送出的郵件(似乎是給 local 用?)
reject_unknown_hostname   client 的 HELO 沒有 DNS A or MX 記錄
reject_non_fqdn_hostname   HELO 的hostname非FQDN
確認 MAIL FROM: 位置
在 main.cf 內 確認 MAIL FROM:
smtpd_sender_restrictions = value
而其他的參數,和碓認 HELO 位置大致相同,但是多了以下幾個
check_sedner_accress maptype:mapname   
reject_non_fqdn_sender   拒絕 sender 的 connect 是沒有 fqdn 的.
RBL
RBL(The Realtime Blackhole List) 要靠以上這幾招要擋廣告信幾乎是不可能的,所以有時要籍助外部的力量,比較常見的參數是
reject_maps_rbl
maps_rbl_domains
reject_rbl_client
比較常見的 RBL 提供者
•  http://www.mail-abuse.com/
•  http://www.ordb.org/
•  http://www.spamhaus.org/
原書上用 www.mail-abuse.org ,但是該網站己經改到 www.mail-abuse.com 了.
只要做如下的設定,你就可以用 RBL 的力量了
maps_rbl_domains = blackholes.mail-abuse.org, dialups.mail-abuse.org
smtpd_helo_restrications = reject_maps_rbl
smtpd_sedner_restrictions = reject_maps_rbl
我個人是用
maps_rbl_domains = relays.ordb.org,sbl-xbl.spamhaus.org
smtpd_sender_restrictions =
   permit_mynetworks,
   pcre:/etc/postfix/access,
   reject_maps_rbl,
   reject_unknown_sender_domain,
   reject_non_fqdn_sender

Advanced Postfix Server Topic
Using MySQL
= Using OpenLDAP
Using POP3 and IMAP
Using SqWebMail
Performance Tuing
main.cf
Inbound Message Control
•  smtpd_recipient_limit 限制收件者的數量,default value is 1000 (預設值似乎很高?),不過限制這個數量並不會減低系統資源,因為信還是會送進來
•  smtpd_timeout = value 在回應給 SMTP Client 後,等待回應的時間,這可以擋掉一些不是真的要送資料的 client
m=分
n=小時
d=日
w=week
•  smtpd_error_sleep_time 當回一個 error code 給 remote smtp server 後,會 delay 一小段時間不讓他連上來
•  smtpd_soft_error_limit
•  smtpd_hard_error_limit
Outbound Message Control
•  initial_destination_concurrency postfix 一開始最會建立二個連線到要送信的 SMTP Client,若是送信之間沒有什麼大問題,而又有信要送,postfix 會自動增加這個量
•  default_destination_concurrency_limit 最大連線到遠端的 Server 的數量,這個參數和 master.cf 內 SMTP maxprocess 是相關的,設超過時,會被 max process 限制
•  default_destination_reipient_limit 一次最多可以發給幾個收信人,預設值是 50
Unreachable Hosts
•  queue_run_delay 告訴 postfix 多久掃描一次 deferred mail (延遲送出的信),預設值是 1000(秒)
•  maximal_queue_lifetime deferred mail,最多會保存多久,預設值是 5 (天),請注意,如果設太短,某些 mail server 會當機很久,這不是一件好事.
•  minimal_backoff_time 留在 deferred 內的信及遠端 mail server 被標記為無法連線的最小處理間隔,預設值是 1000(seconds)
•  maximal_backoff_time 無法送信出去的最大處理間隔,如果你希望處理 mail server deferred 快一點,就減少這個數值,如果你不在意處理速度,就加大這個數值,預設值是 4000
•  qmgr_message_recipient_limit places an upper limit on the size of many in-memory queue manageer data structures. Default value is 10000
Tuning Unix System
•  Mount 時
在 mount 時,一般現在都會設上 noatime ,因為 atime 實在是用不到. 也可以增加些許讀寫速度

Testing Postfix Performance
•  smtp-sink 測試 postfix 送信速度.
/usr/bin/smtp-sink -c :25 100
•  smtp-source
smtp-source -c -l 1000 -m 100 -s 20 -t richliu@server.com
-c           display a running count of SMTP DATA commands send.
-l length    Sends test messages that are length bytes long.
-m count     Sends count number of messages; the default is 1
-s count     Runs count number of SMTP sessions concurrently. The Default is 1
-t to        Uses the adddress to as the message recipient. The default is the address foo@myhostname
Common Postifx Problems
相關觀念
postfix 支援的 Mailbox 種類
•  sendmail-style /var/spool/mail
•  Individual $HOME/Mailbox
•  Qmail-sytle $HOME/Maildir
相关文章 热门文章
  • postfix+dovecot+postfixadmin+mysql架设邮件服务器
  • FreeBSD上建立一个功能完整的邮件服务器(POSTFIX)
  • CentOS5.1上安装基于postfix的全功能邮件服务器(二)
  • CentOS5.1上安装基于postfix的全功能邮件服务器
  • CentOS安装配置Postfix邮件服务器
  • 在CentOS下用Postfix配置邮件服务器
  • 3分钟安装配置Postfix邮件服务器
  • 基于Postfix的大型邮件系统
  • 19.4.3 让Postfix可监听Internet来收发信件
  • 19.4.1 Postfix的产生
  • 关于postfix的loops back to myself错误
  • 成功将qmail用户迁移到postfix(extmail+extman)下
  • Sendmail8.12.9+RedHat 8.0建构邮件服务器
  • sendmail大全
  • Sendmail邮件服务器快速指南
  • SendMail上手指南
  • 用Sendmail配置你的第一台e-mail服务器
  • RedHatLinux AS3中SendMail的配置
  • 企业Sendmail邮件服务器的创建
  • Sendmail环境下对抗垃圾邮件的处理方法
  • Sendmail的邮件用户与系统用户分离
  • 我的qmail安装历程
  • 带SMTP认证功能的sendmail配置
  • Sendmail的relay用法汇总
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号