歡迎您光臨本站 註冊首頁

linux17-郵件伺服器

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

郵件伺服器

網易 coremail

開源
sendmail postfix qmail


MUA mail user agent 郵件用戶代理 用於客戶端發送郵件和閱讀郵件

MTA mail tranfer agent 郵件傳輸代理 服務端軟體,相當於是一個郵局,接收MUA發送過來的郵件,如果不是本地郵件,則發送給下一個MTA.

MDA mail delivery agent 郵件投遞代理 將MTA所接收到的郵件,依照郵件的目的地將此郵件放到本機賬號


SMTP 允許中繼
MTA 網易---------- MTA 新浪
| |
| |
|SMTP | MDA
| |
xxx@126.com xxx@sina.com

郵件協議:
發信:

SMTP simple mail transfer protocol 簡單郵件傳輸協議 埠號 TCP 25

sendmail

收信:
POP3 post office protocol 郵局協議 ,連接到MTA,讀取或者下載郵件. 埠號 110

IMAP internet message access protocal 網路報文訪問協議 能在下載郵件前先下載郵件頭信息,以供用戶選擇性的下載 埠號 143


dovecot 鴿舍


軟體包

sendmail.i386 --郵件server端
sendmail-cf.i386 --配置文件包
sendmail-devel.i386 --開發包
sendmail-doc.i386 --文檔包
m4.i386 --處理配置文件

yum install sendmail*
yum install m4

配置文件

/etc/mail/sendmail.cf --sendmail郵件服務啟動時讀取的主配置文件
/etc/mail/sendmail.mc --修改配置一般修改這個配置文件,如果有安裝M4包的話,會自動把修改處理到sendmail.cf;如果沒有安裝m4包,就要手動處理


/etc/mail/local-host-names --支持短域名
/etc/mail/virtusertable --虛擬用戶列表
/etc/mail/access --郵件中繼
/etc/aliases --用戶別名

[root@36 ~]# /etc/init.d/sendmail restart

[root@36 ~]# netstat -ntlup |grep 25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6301/sendmail: acce
--上面看到只監聽本地,所以現在只能自己發信給自己


--發送郵件方法一
[root@36 ~]# mail -s 'hello' root@36.web.com --s參數是定義主題
1111111111111111 --郵件正文
. --點號表示結束
Cc: --抄送,這裡我直接回車表示結束


查看郵件
cat /var/spool/mail/root
cat /var/mail/root


[root@36 ~]# mail -s 'hello2' root@36.web.com < /etc/fstab
--把/etc/fstab的內容做為郵件的正文來發


發郵件方法二:
[root@li ~]# telnet 127.0.0.1 25 --對25埠也就是smtp協議進行驗證
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Fri, 3 Sep 2010 10:31:00 0800
helo li.cluster.com --介紹自己,用help命令查看支持的命令集,help helo查看helo的用法
250 li.cluster.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
mail from:abc@qq.com --定義發送者,在這裡隨便定義
250 2.1.0 abc@qq.com... Sender ok
rcpt to:root@li.cluster.com --定義接收者,在這裡是本機的root用戶
250 2.1.5 root@li.cluster.com... Recipient ok
data --表示後面寫的是郵件內容
354 Enter mail, end with "." on a line by itself
test mail from qq.com --郵件正文
. --點號表示內容結束


250 2.0.0 o832V0tl004576 Message accepted for delivery
quit --quit退出
221 2.0.0 li.cluster.com closing connection

發郵件方法三:

mutt 一個linux下的文本的MUA工具

[root@36 ~]# mutt user1@36.web.com --使用root用戶給user1用戶發送郵件,並且有發送附件等功能


su - user1
mutt去查看


發送郵件方法四:
[root@36 ~]# cat /etc/rc.local | sendmail -v user1@36.web.com


發送郵件方法五:
[root@li ~]# mail a --也是調用mail命令
Subject: hello a
i am root
.
Cc: b

發送郵件方法六:
安裝別的軟體,進行軟體收發

====================================================================
郵件發送也需要DNS的支持,並且,DNS要配置郵件交換記錄

linux客戶端 DNS伺服器 sendmail伺服器 dovecot伺服器
2.2.2.35----------2.2.2.35--------2.2.2.244
|
|
|
客戶端 windows xp
2.2.2.187


先在244上把主機名和域定義好

#hostname mail.cluster.com
#vim /etc/hosts
2.2.2.244 mail.cluster.com
#vim /etc/sysconfig/network
HOSTNAME=mail.cluster.com


下面在2.2.2.35上做DNS

[root@li ~]# vim /var/named/chroot/etc/named.conf

options {
directory "/var/named";
};

zone "cluster.com" IN {
type master;
file "data/master.cluster.com.zone";
};


[root@li ~]# vim /var/named/chroot/var/named/data/master.web.com.zone

$TTL 86400
@ IN SOA li.cluster.com. root. (
2011072601


60
30
3600
86400 )
IN NS li.cluster.com.
IN MX 0 li.cluster.com. --加上這一句,MX是郵件交換記錄,0代表優先順序別,0-20,0代表優先順序最高
mail IN A 2.2.2.244 --這裡指向的244為sendmail伺服器的IP


/etc/init.d/named restart

再在xp2.2.2.187上把DNS指向35,然後進行驗證
--下面的驗證是linux上做的,但是在XP的cmd命令行模式也是一樣的命令來驗證

[root@li ~]# nslookup mail.cluster.com --驗證域名OK
Server: 2.2.2.35
Address: 2.2.2.35#53

Name: mail.cluster.com
Address: 2.2.2.244


[root@li ~]# nslookup --驗證郵件交換記錄
> set type=mx
> web.com --這裡寫域,不是域名
Server: 2.2.2.35
Address: 2.2.2.35#53

web.com mail exchanger = 0 mail.cluster.com
>

安裝圖形郵件客戶端,這裡使用claws-mail
[root@li ~]# ls /share/soft/soft/mail_client/
claws-mail-3.5.0.tar.gz libetpan-0.57.tar.gz


tar xvf libetpan-0.57.tar.gz -C /usr/src/ --IMAP4和NNTP支持,要先裝這個包才能編譯claws-mail
tar xvf claws-mail-3.5.0.tar.gz -C /usr/src/


cd /usr/src/libetpan-0.57/
./configure ;make ;make install

cd /usr/src/claws-mail-3.5.0/
./configure && make && make install

--安裝完成後,使用claws-mail &命令來打開,如果報找不到libetpan.so.13這個庫文件,則使用下面的命令做一個軟鏈接

# ln -s /usr/local/lib/libetpan.so.13 /lib/libetpan.so.13


=============================================================

# vim /etc/mail/sendmail.mc


DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

# /etc/init.d/sendmail restart


# netstat -ntlup |grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 4274/sendmail: acce


# netstat -ntl |grep 25 --發現監聽所有埠了
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN


然後使用linux客戶端對伺服器的用戶進行發郵件測試
# telnet 2.2.2.244 25 --去發一封郵件,測試,是可以收到的

# mail -s "2222" a@mail.cluster.com --可以收到

=====================================================

例二:
使用outlook或claws-mail收發郵件


發送一份郵件給本機用戶,點收信時會報連接到mail.cluster.com:110失敗

還沒有配置pop3,imap伺服器

--現在的情況上sendmail 配置OK了,兩邊可以互發,郵件可以在sendmail伺服器上查看到,但是兩邊客戶端不能下載下來


--在244郵件伺服器上安裝
# yum install dovecot -y --安裝此軟體包


vim /etc/dovecot.conf --主配置文件

protocols = imap imaps pop3 pop3s --打開這一行

/etc/init.d/dovecot restart


# /etc/init.d/dovecot restart


# netstat -ntlup |grep 110
tcp 0 0 :::110 :::* LISTEN 4363/dovecot
# netstat -ntlup |grep 143
tcp 0 0 :::143 :::* LISTEN 4363/dovecot


--再來進行測試,發現使用郵件客戶端收郵件也OK


我這裡用了二個賬號,注意這兩個用戶都是在sendmail伺服器上的,與客戶端有沒有此用戶無關


zhangsan@mail.cluster.com --用來登錄35這個客戶端的claws-mail軟體
lisi@mail.cluster.com --用來登錄187這個客戶端的outlook軟體


在claws-mail這個軟體上的賬號編輯要注意不要寫錯


主要注意的不要亂寫的地方

mail address : zhangsan@mail.cluster.com

server for receiving : mail.cluster.com
smtp server (send) : mail.cluster.com

User ID : zhangsan Password: *** --密碼為zhangsan用戶的系統密碼


outlook的配置省略


實現zhangsan和lisi用戶的互發

==========================================================

實現短域名互發

# vim /etc/mail/local-host-names
mail.cluster.com
cluster.com


# vim /etc/mail/sendmail.mc --如果是rhel5.5版本,做了上面那步還不行的話,嘗試還把下面一句改為自己的域

155 LOCAL_DOMAIN(`cluster.com')dnl


# /etc/init.d/sendmail restart

還要把244(也就是sendmail伺服器)的DNS指向為35這台DNS伺服器

# vim /etc/resolv.conf
search cluster.com
nameserver 2.2.2.35


===========================================================


例四;郵件別名,郵件轉發,郵件群發

vim /etc/aliases

a: b --發給a用戶的郵件,轉發給b用戶了,a用戶自己不收的
c: d,e --發給c用戶的郵件,轉發給d和e用戶了,c用戶自己不收的
it: :include:/etc/mail/it --發給it用戶(這個it用戶在系統上可以不存在)的郵件會群發給/etc/mail/it這個文件里的所有用戶


vim /etc/mail/it --定義的文件不存在,要手動建立,並寫上群發的用戶名,一行寫一個
a --這個比較特殊,發給it的會群發給a用戶,但a用戶上面配置了轉發給b用戶,所以a用戶還是收不到的,還是由b用戶收到了

====================================

例五:郵件的虛擬賬號,虛擬用戶表格 --後面的postfix課程里會使用一台郵件伺服器配置多個虛擬域


一般來說賬號分為本地用戶賬號(系統用戶)和虛擬用戶賬號(一般放在資料庫里)


為什麼需要虛擬賬號?
以前一台郵件伺服器只能用來配置一個域;那麼如果企業有多個域,或者是服務商要管理多個域,那麼這樣就需要多台伺服器,成本高.所以就產生了虛擬賬號和虛擬域等概念

配置前先把例四的改動給去掉

vim /etc/mail/virtusertable
ccc@cluster.com c@cluster.com --把ccc@cluster.com 虛擬成c@cluster.com,ccc這個用戶是系統不存在的,只是虛擬出來的


vim /etc/mail/virtusertable
@cluster.com a --把所有*@cluster.com虛擬成a用戶,也就是發送到a用戶的郵箱

mail -s 'dsfajfas' sdgjasgajfwjeq@cluster.com --這樣隨便使用一個不存在的用戶名,發現也是把郵件發到a用戶去了

=========================================================


郵件中繼
中繼就是讓你的MTA能夠把郵件發送到外面的網路
默認情況下,只允許本機把郵件發送到外面的網路,拒絕別的機器登錄過來的用戶發送外部郵件(防止被利用做為垃圾郵件中轉站)


--在sendmail郵件伺服器本機上telnet發外部郵件
[root@mail ~]# telnet 2.2.2.244 25
Trying 2.2.2.244...
Connected to mail.cluster.com (2.2.2.244).
Escape character is '^]'.
220 mail.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Tue, 26 Jul 2011 16:02:29 0800
mail from:aaa@gmail.com
250 2.1.0 aaa@gmail.com... Sender ok


rcpt to:bbb@qq.com --指定一個外部郵箱
250 2.1.5 bbb@qq.com... Recipient ok (will queue) --這裡為OK,表示允許本機發外部郵件

--在linux客戶端35上通過sendmail伺服器發送外部郵件
[root@li ~]# telnet 2.2.2.244 25
Trying 2.2.2.244...
Connected to mail.cluster.com (2.2.2.244).
Escape character is '^]'.
220 mail.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Tue, 26 Jul 2011 16:04:04 0800
mail from:aaa@gmail.com
250 2.1.0 aaa@gmail.com... Sender ok
rcpt to:bbb@qq.com ... Relaying denied. IP name possibly forged [2.2.2.35] --報中繼拒絕

--解決方法:
# vim /etc/mail/access
Connect:2.2.2 RELAY --表示允許2.2.2網段的發送外部郵件


/etc/mail/access的一些寫法
FROM:sina.com REJECT --拒絕從@sina.com來的郵件
TO:gmail.com discard --發往@gmail.com的丟棄
Connect:10.1.1.160 OK --非常信任的主機可以用OK


--reject拒絕並返回錯誤信息,discard直接丟棄


=============================================================


實現 兩個不同域的短域名互發

1,兩個域要能互相解析,並且要有MX記錄,互相做轉發,能夠解析對方
2,兩個伺服器都/etc/mail/local-host-names 寫上自己的主機名和域名
3, 允許中繼

=======================================================

squirrelmail --基於php的webmail程序

一個簡單的webmail安裝測試

--在郵件伺服器上做下面操作
# yum install httpd* php php-devel squirrelmail -y

# vim /etc/squirrelmail/config.php
$provider_uri = 'http://mail.cluster.com/';

# /etc/init.d/httpd restart


然後通過firefox 使用http://mail.cluster.com/webmail進行登錄界面


使用用戶名:lisi
密碼 :******
登錄后和zhangsan進行郵件互發

==================================================================


smtp 驗證
假設一個用戶要公司是可以自由收發郵件,但如果在家裡,或者筆記本用戶,IP經常會變動,那這種情況,/etc/mail/access的規則就顯得死板


使用smtp驗證,只要提供正確的賬號和密碼,就不受/etc/mail/access的規則限制

# yum install cyrus-sasl* --安裝驗證有關的軟體包

simple authention and security layer


vim /etc/mail/sendmail.mc

把下面三行的註釋打開,並且注意要頂格

搜索MD5關鍵字

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

搜索submission關鍵字

DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl


把下面這句
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
改為
DAEMON_OPTIONS(`Port=25, Name=MSA, M=Ea')dnl


然後還要
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl --把這名註釋掉,注意註釋時用dnl,不用#


--表示強制使用smtp驗證

[root@li ~]# /etc/init.d/sendmail restart
[root@li ~]# /etc/init.d/dovecot restart
[root@li ~]# /etc/init.d/saslauthd restart


======================================

用claws-mail驗證


點設置-目前賬號的偏好設置-發送-把SMPT授權打勾-授權方式選plain-用戶ID寫本機的一個普通用戶名和密碼就OK


outlook驗證設置

點工具-賬號-對應用戶的屬性-伺服器-我的伺服器要求身份驗證

====================================

本文出自 「linuxart」 博客,請務必保留此出處http://linuxart.blog.51cto.com/686203/843966


[火星人 ] linux17-郵件伺服器已經有573次圍觀

http://coctec.com/docs/linux/show-post-45754.html