目錄
-
郵件服務簡介
-
配置郵件服務前提要求
-
Sendmail安裝配置
-
Dovecot服務配置
-
測試郵件收發
-
Sendmail別名配置
-
配置openwebmail網頁郵箱
簡介:
郵件系統包括:服務端(SMTP)和客戶端(POP3,IMAP)
- SMTP簡單郵件傳輸協議(port:25):應用層協議,由TCP提供可靠數據傳輸服務把郵件消息從發信人郵件服務器傳送到收件人郵件服務器
- POP3郵局協議(port:110):具有存儲轉發功能。允許客戶端下載服務器上的郵件,但在客戶端的操作(如移動郵件,標記已讀等),不會反饋到服務器上
- IMAP(port:143):Internet消息訪問協議。為用戶提供了有選擇地從郵件服務器接收郵件的功能、基於服務器的信息處理功能和共享信箱功能。客戶端的操作會反饋到服務器上
例如:當發送一封電子郵件信息時,信息會一台一台的服務器被傳遞,直到發送到收件人的電子郵件服務器。即信息被發送到負責傳輸郵件的服務器(郵件傳輸代理MTA),用於轉發,收取用戶郵件。經過若干個MTA后,最終到達收件人的MTA。MTA也稱之為SMTP服務器。
收件人MTA會將電子郵件投遞給郵件接收服務器(郵件投遞代理MDA),可以過濾垃圾郵件。MDA會保存郵件並等待用戶收取。MDA主要有兩種協議:POP,IMAP。
MUA:郵件用戶代理(用於收取郵件),如果MUA是用戶電腦或其他設備上的一個程序。則稱它為郵件客戶端(outlook,網易郵箱大師等),及用戶使用的寫信,收信的客戶端軟件
前提:
為使用戶的系統域名能被正確解析為相應的服務器地址,需要能夠在互聯網上被識別和查找到。這樣郵件系統才能實現郵件的投遞和接收。所以需要配置好DNS域名服務,包括MX記錄和A記錄的設置。
Sendmail安裝配置
免費的郵件服務器軟件,是一款經典的Linux系統下的郵件服務器。
(1)Sendmail環境版本
# 系統版本:Centos 7.6 64位
[root@tanbaobao ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) # Sendmail版本:sendmail-8.14.7-6.el7.x86_64
Openwebmail版本:
(2)Sendmail安裝
[root@tanbaobao ~]# yum -y install sendmail*
(3)Sendmail服務配置
配置sendmail.cf服務,通過local-host-names設置郵件服務器提供郵件服務的域名為:XXX.XXX.cn/com等。
[root@tanbaobao mail]# cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.bak
[root@tanbaobao mail]# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.bak
# 將域名輸入到文件中
[root@tanbaobao mail]# echo "tourby.cn" >> /etc/mail/local-host-names
配置Sendmail監聽服務器網卡地址為0.0.0.0:
# 將118行中的地址
118 DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl # 修改為如下
[root@tanbaobao mail]# vi /etc/mail/sendmail.mc
118 DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl 或 sed -i 's/Addr=127.0.0.1/Addr=0.0.0.0/g' /etc/mail/sendmail.mc # 修改sendmail.mc,如下兩行,開啟STMP所有用戶必須認證,去掉前面的dnl
52 TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 53 define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
使用md4生成sendmail.cf主配置文件:
[root@tanbaobao mail]# pwd
/etc/mail [root@tanbaobao mail]# m4 sendmail.mc > sendmail.cf
重啟服務
[root@tanbaobao mail]# /etc/init.d/sendmail restart
Restarting sendmail (via systemctl): [ OK ] # 查看端口25
[root@tanbaobao mail]# ps -ef | grep sendmail
root 19989 1 0 16:09 ? 00:00:00 sendmail: accepting connections smmsp 20000 1 0 16:09 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue root 20103 15043 0 16:10 pts/0 00:00:00 grep --color=auto sendmail [root@tanbaobao mail]# netstat -tnl | grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
(4)配置SMTP認證
Saslauthd服務作用,提供SMTP用戶驗證,檢查用戶名會讓密碼是否正確,基於系統shadow文件來實現驗證配置。默認系統安裝,如果沒有手動安裝cyrus-sasl*
[root@tanbaobao mail]# systemctl restart saslauthd
[root@tanbaobao mail]# systemctl status saslauthd
Dovecot服務配置
Dovecot是一個開源的IMAP和POP3郵件服務器,支持Linux/Unix系統。作為IMAP和POOP3服務器,Dovecot為郵件用戶代理(MUA)提供一種訪問服務器上存儲郵件的方法。但Dovecot並不負責從其他郵件服務器接收郵件。
Dovecot只是將已存儲在郵件服務器上的郵件通過MUA顯示出來,IMAP和POP3是用於連接MUA與郵件存儲服務器的兩種常見的協議。
# 版本:dovecot.x86_64 1:2.2.36-6.el7
[root@tanbaobao mail]# yum -y install dovecot*
去掉/etc/dovecot/dovecot.conf如下行前面的#號即可:
# 將24行前的注釋去掉
[root@tanbaobao mail]# vi /etc/dovecot/dovecot.conf
24 protocols = imap pop3 lmtp
修改監聽端口為本地所有地址:
# 將30 #listen = *, ::修改為如下
[root@tanbaobao mail]# vi /etc/dovecot/dovecot.conf
30 listen = *
(5)Sendmail配置完畢
Sendmail郵箱用戶建立,可以用客戶端收發郵件即正常。
[root@tanbaobao mail]# groupadd mailgroup
[root@tanbaobao mail]# useradd -g mailgroup -s /sbin/nologin tourby
[root@tanbaobao mail]# echo "tourby"|passwd --stdin tourby
[root@tanbaobao mail]# systemctl restart sendmail
[root@tanbaobao mail]# systemctl restart dovecot
[root@tanbaobao mail]# systemctl restart saslauthd
(6)將域名映射到郵件服務器
域名需要提前注冊。我這里用的是騰訊雲的服務器。步驟:登錄騰訊雲服務器地址>控制台>DNS解析>點擊域名進入如下界面
點擊添加記錄>保存
還需要添加MX解析,記錄值寫域名,主機記錄mail,記錄類型MX
還需添加一個記錄
測試mail.tourby.cn是否能ping通:[root@rhel8 shell]# ping mail.tourby.cn
郵件收發
在本機下載foxmail客戶端軟件,安裝。啟動>輸入郵箱和密碼,接收服務器類型選POP3
點擊創建報錯
修改dovecot配置文件:
# 將第8行注釋,並添加第9行內容,即將ssl = no
[root@tanbaobao ~]# vi /etc/dovecot/conf.d/10-ssl.conf
8 # ssl = required
9 ssl = no [root@tanbaobao ~]# systemctl restart dovecot
# 在10行下面將yes改為no
[root@tanbaobao ~]# vi /etc/dovecot/conf.d/10-auth.conf
10 #disable_plaintext_auth = yes
11 # 開啟密碼訪問
12 disable_plaintext_auth = no [root@tanbaobao ~]# systemctl restart dovecot
上面問題解決后又報錯:
# 查看日志如果有報這樣錯誤,是沒有這個INBOX目錄以及對應的權限
[root@tanbaobao ~]# tail -fn 100 /var/log/maillog
Jul 1 11:42:40 VM_0_10_centos dovecot: pop3(thy): Error: fchown(/home/thy/mail/.imap, group=12(mail)) failed : Operation not permitted (egid=1001(thy), group based on /var/mail/thy - see http://wiki2.dovecot.org/Errors/ChgrpNoPerm)Jul 1 11:42:40 VM_0_10_centos dovecot: pop3(thy): Error: Couldn't open INBOX: Permission denied Jul 1 11:42:40 VM_0_10_centos dovecot: pop3(thy): Couldn't open INBOX: Permission denied top=0/0, retr=0/0, del=0/0, size=0
# 解決
[root@tanbaobao mail]# mkdir -p /home/thy/mail/.imap/INBOX
[root@tanbaobao mail]# chown -R thy.thy /home/thy/
# 查看日志發現有報錯
[root@tanbaobao ~]# tail -f 100 /var/log/maillog
Jun 29 21:07:31 www dovecot: pop3(tourby): Error: Namespace '': Mail storage autodetection failed with home=/ home/tourby ... # 將25行注釋解開
[root@tanbaobao ~]# vi /etc/dovecot/conf.d/10-mail.conf
25 mail_location = mbox:~/mail:INBOX=/var/mail/%u # 重啟服務
[root@tanbaobao ~]# systemctl restart dovecot
[root@tanbaobao ~]# ll /var/mail/
報錯:
[root@tanbaobao ~]# chmod 0600 /var/spool/mail/*
問題解決,nice
給我自己郵箱發送郵件:
也可以給自己發,用剛剛創建的郵件,然后點擊收取才會在收件箱看到郵件 。發送給某個郵箱,該郵箱也需要點擊收信,如果沒有收到,那表示有問題,可以查看日志
[root@tanbaobao ~]# tail -fn 100 /var/log/maillog Jun 30 15:04:38 www dovecot: pop3-login: Aborted login (auth failed, 1 attempts in 4 secs): user=<tourby@tour by.cn>, method=PLAIN, rip=119.141.84.73, lip=172.16.0.10, session=<MKKfyUepHKh3jVRJ>Jun 30 15:04:42 www dovecot: pop3-login: Login: user=<tourby>, method=PLAIN, rip=119.141.84.73, lip=172.16.0. 10, mpid=6778, session=<5qzeyUepH6h3jVRJ>
[root@tanbaobao ~]# groupadd tourby
[root@tanbaobao ~]# chown -R tourby.tourby /home/tourby/
[root@tanbaobao ~]# systemctl restart dovecot
測試只能foxmail用戶相互發送接收,發送給qq,163郵箱,接收不到,但是qq,163發送郵箱個誒foxmail可以收取到
Sendmail別名配置
用於實現郵件別名和群發功能,也可以創建用戶組,將用戶加入某個組中,實現群發。
/etc/下存在aliases和aliases.db兩個文件,前者是文本文件,內容可見可編輯。后者是數據庫文件,由aliases文件生成。
# 給users@tourby.cn發送郵件,則群發給user1@tourby.cn,user2@tourby.cn。設置完成后,通過newaliases指令生成新的aliases.db文件
users: user1,user2
配置Openwebmail
配置完Sendmail郵件服務器后可以通過outlook,foxmail收發郵件,如果需要WEB頁面收發郵件,需要基於openwebmail來實現。訪問:http://mail.域名,以用戶名和密碼登錄,進行郵件收發。
(1)Openwebmail服務安裝
# 需要先下載openwebmail源
[root@tanbaobao src]# cd /etc/yum.repos.d/
[root@tanbaobao yum.repos.d]# wget http://openwebmail.org/openwebmail/download/redhat/rpm/release/openwebmail.repo
[root@tanbaobao ~]# yum clean all [root@tanbaobao yum.repos.d]# yum -y install openwebmail
需要安裝perl相關包
# 下載perl-suidperl依賴所需要的包(發現依賴問題難以解決,后邊沒有使用該方法) # wget http://www.rpmfind.net/linux/centos/6.10/os/x86_64/Packages/perl-5.10.1-144.el6.x86_64.rpm # wget http://mirror.centos.org/centos/6/os/x86_64/Packages/perl-libs-5.10.1-144.el6.x86_64.rpm # wget http://mirror.centos.org/centos/6/os/x86_64/Packages/perl-suidperl-5.10.1-144.el6.x86_64.rpm
參考:http://blog.itpub.net/29270124/viewspace-2286297/
# 安裝環境,發現好像perl-suidperl沒有這個包,網上找的和系統版本,然后各種依賴問題,這里我沒有繼續了,看后邊會不會報錯在說
# yum install – y perl-Text-Iconv perl-CGI perl-CPAN perl-suidper * perl-YAML
[root@tanbaobao src]# wget http://openwebmail.org/openwebmail/download/release/openwebmail-2.53.tar.gz
# 解壓
[root@tanbaobao src]# tar -xvf openwebmail-2.53.tar.gz
[root@tanbaobao src]# pwd
/usr/local/src # 解壓后得到兩個目錄。cgi-bin是要執行的程序,而data是數據部分。
[root@tanbaobao src]# ls
cgi-bin data # 這個步驟在安裝完httpd之后再操作 # 復制到/var/www下面
[root@tanbaobao src]# mv cgi-bin/openwebmail/ /var/www/cgi-bin/
[root@tanbaobao src]# cp -r data/ /var/www/
[root@tanbaobao src]# mv data/openwebmail/ /var/www/html/
# 設置權限
chmod – R 777 /var/www/cgi-bin/openwebmail/
# 修改suidperl的權限
chmod 4555 /usr/bin/suidperl
#未完
(2)配置Openwebmail
# 需要安裝apache服務器 [root@tanbaobao yum.repos.d]# yum -y install httpd httpd-devel