Sendmail 是一款簡(jiǎn)單易用的郵件服務(wù)軟件(郵件傳輸代理、MTA),許多 Linux 發(fā)行版都內(nèi)置 Sendmail 程序,只需簡(jiǎn)單設(shè)置即可將服務(wù)器配置為可收發(fā)郵件的服務(wù)器,下面以 CentOS 5作為例子。
1、域名的設(shè)置
首先需要設(shè)置域名 DNS 的 MX 記錄和 SPF 記錄,一個(gè)典型的域名設(shè)置如下:
記錄類型 主機(jī)名 目標(biāo) ------------------------------------ A @ 123.123.123.123 (這里設(shè)置為你服務(wù)器的IP) CNAME www your-domain.com CNAME SMTP your-domain.com MX @ smtp.your-domain.com TXT @ v=spf1 a mx ~all
MX記錄是郵件服務(wù)器必須依賴的,而TXT(SPF)是用來防止自己的郵件服務(wù)器發(fā)送的郵件不被當(dāng)成垃圾郵件(spam email),假如不增加SPF記錄的話對(duì)方郵箱服務(wù)器可能會(huì)把你發(fā)出的郵件直接丟棄、或者塞到垃圾郵件文件夾里,所以這條記錄現(xiàn)今是必不可少的。
2、設(shè)置 Sendmail
下面使用的 Sendmail 版本是 8.14,設(shè)置方法非常簡(jiǎn)單,首先確保你系統(tǒng)已經(jīng)有 sendmail 及其相關(guān)服務(wù)了:
# yum install sendmail # yum install sendmail-cf # yum install sendmail-devel # yum install sendmail-milter
然后切換到 /etc/mail 目錄,
a、編輯 local-host-names 文件,在里面添加你的域名,比如 linuxidc.com,一行一個(gè)域名。
b、編輯 sendmail.mc,把下面兩行的注釋(即 “dnl #”)刪除:
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
define(`confAUTH_MECHANISMS’, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
c、編輯 sendmail.mc,把下面這行:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA’)dnl
當(dāng)中的“127.0.0.1”替換成“0.0.0.0”,以允許外網(wǎng)可以訪問你的服務(wù)器,假如有多個(gè)IP地址,而且只想讓其中的某一個(gè)用作郵件服務(wù),那么就把具體的IP地址填上去。
d、添加一個(gè)本地賬號(hào),比如“webmaster1”,并設(shè)置密碼。
e、編輯 virtusertable 文件,增加這樣的一行:
webmaster1@linuxidc.com webmaster1
f、重新編譯一下 sendmail 的設(shè)置:
# m4 sendmail.mc > sendmail.cf # make
g、重啟 sendmail 服務(wù),這樣就設(shè)置好了,你已經(jīng)可以使用 mail 命令發(fā)送郵件了。
3、設(shè)置 IMAP 或 POP3 服務(wù)
雖然經(jīng)過上面的設(shè)置我們已經(jīng)可以對(duì)外發(fā)送郵件了(使用命令或編程方式),而且回復(fù)的郵件也能接收,不過如果我們提供IMAP或者POP3服務(wù),就能方便各種郵件客戶端收發(fā)郵件。dovecot 就是這樣的一個(gè)服務(wù)。
a、先安裝 dovecot 服務(wù):
# yum install dovecot
b、編輯dovecot的配置文件,即 /etc/dovecot.conf,有些 Linux 發(fā)行版有可能位于 /etc/dovecot/conf.d/,在 #protocols 一行下面增加:
protocols imap, pop3
假如你不需要 pop3,則直接去除。
c、繼續(xù)編輯dovecot的配置文件,在 #mail_location 下面增加:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
e、由于這樣簡(jiǎn)單配置的IMAP或者POP3的數(shù)據(jù)傳輸是沒有經(jīng)過加密的,有些 Linux 發(fā)行版會(huì)禁止明文密碼登錄(當(dāng)然位于服務(wù)器的web程序發(fā)送郵件不受此限制),所以還需要在 #disable_plaintext_auth 這行下面增加:
disable_plaintext_auth = no
f、重啟 dovecot 服務(wù),現(xiàn)在可以使用郵件客戶端軟件來測(cè)試收發(fā)郵件了。
4、在 Web App 里發(fā)送郵件
這里舉一個(gè)使用 Java 收發(fā)郵件例子。在 Java 里發(fā)送郵件一般用 JavaMail,而更簡(jiǎn)單的是使用 Apache Commons Email 組件:
Email email = new SimpleEmail(); email.setHostName("smtp.linuxidc.com"); email.setAuthenticator(new DefaultAuthenticator("webmaster1", "password")); email.setTLS(false); email.setFrom("webmaster1@linuxidc.com"); email.setSubject("Hello"); email.setMsg("This is a test mail"); email.addTo(foo@www.linuxidc.net); email.send();
聯(lián)系客服