郵件語言:M4程序員
SASL: v2web
cyrus-sasl 認證框架算法
courier-authlibsql
MTA: 郵件傳輸代理,SMTP服務器數據庫
sendmail, UUCPvim
qmail安全
數學家當程序員,他寫的算法絕對是一流的服務器
postfix網絡
安全、兼容、效率高框架
exim
Exchange (異步消息協做平臺) 重量級
MDA: 郵件投遞代理
procmail
maildrop
MRA: 郵件檢索代理(pop3, imap4)
cyrus-imap
dovecot
MUA: 郵件用戶代理
Outlook Express, Outlook
Foxmail
Thunderbird
Evolution
mutt (文本界面)
Webmail:
Openwebmail
squirrelmail
Extmail(Extman 管理界面)商業軟件,也有免費版
EMOS, CentOS
eg:
sendmail
部署前基本知識瞭解
必須瞭解localhost.localdomain 21:45:48 root@test[10.0.2.81/24]:~
本機hosts-------->resolv.conf-------->公網(萬網)
vim /etc/hosts
vim /etc/resolv.conf
hostname +主機名
/etc/sysconfig/network HOSTNAME=localhost.localdomain
user
group
###已有DNS服務器並在映射到郵件服務器的域名配置文件中進行A記錄和MX記錄的設置
列如:
@IN MX 5 mail.test.com.
mail IN A 192.168.1.2
若是有用DNS 那麼DNS 的MX 要把mail加上,若是內網主機調用就不要暴露在公網上了,這樣解決了安全同時在發送速度上也有所提高
sendmail是Linux下優秀的郵件系統。在不作任何設定的狀況下,sendmail發出郵件的郵箱源地址形如userid@localhost.localdomain,這種地址幾乎會被全部的郵箱認定爲SPAM(垃圾郵件)或直接拒收 ……
SMTP:Simple Mail Transfer Protocol/簡單郵件傳送協議
在互聯網絡時代幹什麼都是離不開協議的,郵件服務天然更不能例外;定義郵件傳送,基於TCP服務的應用層, 明文傳送,SMTP協議使用25端口;在發信的時候MUA會主動鏈接MTA的25端口,而後將信由MTA的SMTP協議發送出去,而郵件主機MTA在傳遞的時候,也是經由MTA的25端口來將信送出去。
sendmail命令網絡服務器 sendmail命令是一款著名的電子郵件傳送代理程序,也就是日常說的電子郵件服務器,它基於標準的簡單郵件傳輸協議(SMTP)。
語法 sendmail(選項)
選項
-bd: 以守護進程方式運行指令;
-bD: 之前臺運行方式運行;
-bi: 初始化別名數據庫;
-bm: 以常規發送電子郵件;
-bp: 顯示郵件的發送隊列;
-C: 指定配置文件;
-D: 將調試的輸出信息保存到日誌文件,而不顯示在標準輸出設備上;
-F: 指定郵件發送者全名;
-n: 禁止使用郵件別名功能;
-f: 指定發件人的名字;
-q: 設置處理郵件隊列中郵件的時間間隔。
Linux系統配置sendmail服務的步驟以下:
1.檢查Send Mail 的安裝包
[root@sql root]# rpm -qa | grep sendmail
sendmail-8.12.8-4
sendmail-cf-8.12.8-4
[root@sql root]# rpm -qa | grep m4
m4-1.4.1-13
[root@sql root]# rpm -q mailx
mailx-8.1.1-28
2. Sendmail安裝
# yum install -y sendmail
# yum install -y sendmail-cf
3. 配置相關參數
#cd /etc/mail
a)設置mail的服務地址
vi sendmail.mc
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
修改成
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
b)設置smtp用戶認證方式
# vi /etc/mail/sendmail.mc
dnl TRUST_AUTH_MECH(`EXTERNALDIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNALGSSAPIDIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
修改成
TRUST_AUTH_MECH(`EXTERNALDIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNALGSSAPIDIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
修改LOCAL_DOMAIN(`localhost.domain')dnl 爲sdlp.com域名
LOCAL_DOMAIN(`sdlp.com')dnl
c)設置提供郵件服務的域名
# vi /etc/mail/local-host-names
添加郵件服務器提供郵件服務的域名
sdlp.com
修改submit.cf文件
#vi /etc/mail/submit.cf,找到行 #Dj$w.Foo.COM,修改成Djsunchis.com
修改完主配置文件sendmail.mc後生產新的sendmail.cf文件
#m4 sendmail.mc> sendmail.cf
查看電子郵件隊列信息:
# sendmail -bp
----------------------------
/var/spool/mqueue(1 requests)
-----Q-ID-------Size-- -----Q-Time----- ------------Sender/Recipient-----------
p6C71EPC02035910 Tue Mar 19 14:02
(host map:lookup (gmail.com): deferred)
Total requests:1
----------------------------
出現了"host map: lookup (domain): deferred"錯誤,意思就是說郵件的發送被延遲了。
解決辦法很簡單:
# vim/etc/mail/sendmail.cf
找到 #O ResolverOptions=+AAONLY 這一行信息,並把它的註釋去掉。
#/etc/init.d/sendmail restart
重啓sendmail之後便可成功發送郵件。
d)設定郵件服務器的權限
#/etc/mail/access
# vi /etc/mail/access
#預設狀況下有啓用的 IP
localhost.localdomain RELAY
localhost. RELAY
127.0.0.1 RELAY
#想要開放權限的IP與網域
192.168.18.1 RELAY
140.116.44.125 RELAY
#擋掉的IP、主機名稱與E-mail
qq.com DISCARD
192.168.1.100 DISCARD
xxx@xxx.domain.name REJECT
#儲存後離開
# cd /etc/mail/
# makemap hashaccess.db < access
e)設定使用者別名/etc/aliases
mail: root
執行命令: newaliases
建立賬號能夠用useradd添加,而後加到mail 組裏面
Linux 中開設 E-Mail 賬號十分簡單,只要在 Linux 系統中新增一個用戶便可。該用戶賬號和密碼就是E-Mail 的賬號和密碼。
4. 配置相關參數
service sendmail start
5. 查看日誌
tail -f /var/log/maillog 確認系統正常啓動
檢測解析
使用nslookup檢測MX記錄是否能正確解析到郵件服務器
# nslookup
> set q=mx
> sunchis.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
sunchis.com mail exchanger = 10 mail.sunchis.com.
Authoritative answers can be found from:
>
測試發件方法
telnet mail.qizhongzc.com 25
ehlo www.baidu.com 或helo #通報來訪者地址
mail from :kf@ qizhongzc.com #發件人地址
rcpt to :lnredone@126.com #收件人地址
data #輸入正文內容
it's test! #正文內容
. #句號的圓點表示寫信結束的意思
quit #退出
郵件服務器解決方案:
Postfix + SASL (courier-authlib 實現虛擬用戶) + MySQL 【發郵件服務器】
Dovecot + MySQL 【收郵件服務器】
Extmail + Extman + httpd 【webmail】
postfix rpm包,不支持虛擬用戶!須要經過源碼編譯安裝