摘要 有一天,你的老板對你說,今天上午給我裝出一個郵件服務器來,必須在Linux平台上,帶認證的!你趕快翻出這篇文章來看一看,也許能夠保住工作。 前言 有朋友找到我,讓我幫忙配置一台郵件服務器。我的這位朋友也是適用Linux有一段時間的了,並且他還在Linux上開發了幾個軟件。他愁眉苦臉的跟我說,以前沒配過sendmail,在網上查找了一些資料,每每看到文章開頭寫道:“配置sendmail是一項龐大而復雜的系統工程....”還沒讀完就暈倒過去。蘇醒後,就來找我了,問我能不能有什麼速成之類的辦法,因為他根本不想研究sendmail是怎麼工作的,就想搭建起來能完成工作就可以了。 我決定幫助他解決他所遇到的問題,於是在下班後翻出以前配置郵件服務器的筆記,花了10分鐘左右就在他的新安裝一台服務器上運行起來了一個郵件服務器(甚至比配置IIS的郵件服務器還快)。在回家的路上,我邊開車邊想:要是配置所有服務器都能按照一個簡單的步驟完成(就想開車一樣),那使用Linux的人不就更多了嗎?這裡的核心就是一個比較通用的配置文件,並且他還時帶SMTP認證的,既然我已經有了這個成果,為什麼不和更多的初學者分享呢?也許這就是開放源碼社區的精神吧。讓我們開始: 按照這個步驟,只要十分鐘就可以配置出一個帶有SMTP認證的郵件服務器。當然了,郵件服務器需要配置DNS的MX記錄和指向等這裡就不討論了。另外主機名和網絡配置也要制定好。還有,基本的Linux命令你要知道一些。 [准備工作] 下面這兩項工作是必須要准備好的: 1、安裝RedHat7.3,缺省安裝即可,但是要保證選裝了sendmail 2、下載qpopper4.0.3.tar.gz,這個是pop3服務器的源碼。(在網上搜索一下,很多的) [開始計時] 1、復制qpopper4.0.3.tar.gz到/usr/local/src 2、tar zxvf qpopper4.0.3.tar.gz 釋放壓縮文件 3、cd qpopper4.0.3 進入子目錄 4、./configure --prefix=/usr --exec-prefix=/usr --enable-standalone 5、make 6、make install 這一步可能會出錯,主要是man文件的目錄沒有事先建立。執行:mkdir /usr/man;mkdir /usr/man/man8即可(或根據提示進行,希望你能夠看得懂出錯的地方)。 7、編輯:/etc/mail/sendmail.mc把下面的內容完全覆蓋進去:注意下面的第13行中XXX.com改成你的域名: divert(-1) dnl This is the sendmail macro config file. If you make changes to this file, dnl you need the sendmail-cf rpm installed and then have to generate a dnl new /etc/sendmail.cf by running the following command: dnl dnl m4 /etc/mail/sendmail.mc > /etc/sendmail.cf dnl include(`/usr/share/sendmail-cf/m4/cf.m4') VERSIONID(`linux setup for Red Hat Linux')dnl OSTYPE(`linux') dnl Uncomment and edit the following line if your mail needs to be sent out dnl through an external mail server: dnl define(`SMART_HOST',`XXX.com') define(`confDEF_USER_ID',``8:12'')dnl undefine(`UUCP_RELAY')dnl undefine(`BITNET_RELAY')dnl define(`confAUTO_REBUILD')dnl define(`confTO_CONNECT', `1m')dnl define(`confTRY_NULL_MX_LIST',true)dnl define(`confDONT_PROBE_INTERFACES',true)dnl define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl define(`ALIAS_FILE', `/etc/aliases')dnl dnl define(`STATUS_FILE', `/etc/mail/statistics')dnl define(`UUCP_MAILER_MAX', `2000000')dnl define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noeXPn,restrictqrun')dnl define(`confAUTH_OPTIONS', `A')dnl TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl DAEMON_OPTIONS(`Port=25,Name=MTA')dnl DAEMON_OPTIONS(`Port=587,Name=MSA,M=Ea')dnl dnl define(`confTO_QUEUEWARN', `4h')dnl dnl define(`confTO_QUEUERETURN', `5d')dnl dnl define(`confQUEUE_LA', `12')dnl dnl define(`confREFUSE_LA', `18')dnl dnl FEATURE(delay_checks)dnl FEATURE(`no_default_msa',`dnl')dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl FEATURE(redirect)dnl FEATURE(always_add_domain)dnl FEATURE(use_cw_file)dnl FEATURE(use_ct_file)dnl dnl The '-t' option will retry delivery if e.g. the user runs over his quota. FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl FEATURE(`Access_db',`hash -o /etc/mail/access.db')dnl FEATURE(`blacklist_recipients')dnl EXPOSED_USER(`root')dnl dnl This changes sendmail to only listen on the loopback device 127.0.0.1 dnl and not on any other network devices. Comment this out if you want dnl to accept email over the network. dnl DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA') dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires dnl a kernel patch dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6') dnl We strongly recommend to comment this one out if you want to protect dnl yourself from spam. However, the laptop and users on computers that do dnl not have 24x7 DNS do need this. dnl FEATURE(`accept_unresolvable_domains')dnl dnl FEATURE(`relay_based_on_MX')dnl dnl FEATURE(`relay_local_from')dnl MAILER(smtp)dnl MAILER(procmail)dnl Cwlocalhost.localdomain 8、在/etc/mail中執行m4 sendmail.mc > /etc/sendmail.cf 9、編輯/etc/mail/local-host-names增加你的域名XXX.com進去。 10、啟動:/etc/init.d/sendmail restart 11、啟動:/usr/sbin/popper xxx.xxx.xxx.xxx:110 (其中xxx.xxx.xxx.xxx是你的IP地址) 12、useradd -g mail ABC (增加一個用戶名) 13、配置你的客戶端,別忘了配置SMTP認證,試驗一下用戶ABC能不能使用了? 恭喜你!你已經有了一個帶由SMTP認證的郵件服務器了。不過要完成更復雜的配置,就要仔細研究一下sendmail的mc命令了。你還可以考慮一下,如何讓用戶自行修改密碼呢?答案就是用/usr/sbin/passwd命令作為用戶的shell,這樣,就可以讓用戶登陸上來修改自己的密碼了。當然,現在有現成的圖形界面工具:chpasswd軟件是專門修改系統用戶密碼用的,以後我們再介紹了。