sendmail

电子邮件的发送及接收流程:

一、同一区域发送接收邮件

例:user1@163.com 向 user2@163.com 发送邮件

1. user1@163.com 用户使用自己的MUA(邮件用户代理,也就是邮件客户端软件)编辑信件,编辑后使用简单邮件传输协议(smtp)将信件发送给自己客户端中定义的发送邮件服务器地址,DNS 服务器通过解析MX记录,将邮件发送服务器的ip 地址返回给客户端用户user1@163.com,客户端子再根据ip地址加上端口号25 将邮件发送给服务器mail.163.com的MTA

2.服务器mail.163.com 接收到邮件后,交给MDA(邮件分拣代理),邮件的目的地为user2@163.com,属于163.com区域,属于本地信件。

3.服务器mail.163.com 查看本地是否有user2账户,如果有该账户,则将该信件投递到该账户的邮箱。如果没有该账户,信件原路退回

4.user2@163.com 通过pop3 或imap协议连接上邮件服务器,将信件取回。

一、不同区域发送接收邮件

例:user1@163.com 用户向user3@sina.com 用户发送邮件

1. user1@163.com 用户使用自己的MUA(邮件用户代理,也就是邮件客户端软件)编辑信件,编辑后使用简单邮件传输协议(smtp)将信件发送给自己客户端中定义的发送邮件服务器地址,DNS 服务器通过解析MX记录,将邮件发送服务器的ip 地址返回给客户端用户user1@163.com,客户端子再根据ip地址加上端口号25 将邮件发送给服务器mail.163.com的MTA

2. 服务器mail.163.com 接收到邮件后,交给MDA(邮件分拣代理),邮件的目的地为user3@sina.com,属于sina.com区域,而自己属于163.com,这时该邮件服务器使用smtp协议将该邮件转发到sina.com区域的邮件服务器

3.mail.sina.com 服务器使用MDA分拣代理查看邮件域名,发现是属于该区域的邮件,系统查看是否有该帐号,如果有就将该邮件放到该用户的邮箱,如果没有该用户,则将邮件原路退回。

4. user3@sina.com用户 通过pop3 或imap协议连接上邮件服务器,将信件取回。

端口:

smtp 25 pop3:110 imap:143

smtps:465 pop3s:995 imaps:993

https:443 squid:3128

相关术语:

1.MTA:邮件传输代理。用来监控以及传授电子邮件。(mail transfer agent)

2.MUA:邮件用户代理,帮助用户发送接收邮件 (mail user agent)

3.MAA :邮件访问代理。(mail access agent)

4.MDA:邮件分拣服务。(Mail delivery agent)

5.smtp:简单邮件传输协议,为用户通过可靠地邮件传输,25号端口

6. pop3协议:邮局协议。用于邮件接收,tcp 110 端口。

7. imap4协议:通过互联网获取信息的协议,提供摘要浏览功能;143端口

电子邮件的发送流程

发送方通过邮件客户程序,将编辑好的电子邮件通过SMTP发送给服务器。服务器识别接收者的地址,若是本地的账户保存下来,消息存放在接收者的电子信箱内,并告知接收者有新邮件到来。接收 者通过POP3接受邮件。若不是本地的邮件,则将邮件转发到对应的电子邮件服务器,服务器将消息存放在接收者的电子信箱内,并告知接收者有新邮件到来。接收 者通过POP3接受邮件。

1.新建挂载点,挂载光盘

[root@mail ~]# mkdir /mnt/cdrom

[root@mail ~]# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

2.配置yum工具

[root@mail ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

[rhel-server] ##仓库名

name=Red Hat Enterprise Linux server ##仓库描述

baseurl=file:///mnt/cdrom/Server ##仓库位置

enabled=1 ##开启仓库

gpgcheck=1 ##进行gpg私钥检测

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release ## gpg私钥位置

3.查看邮件日志记录位置:“-”表示异步存储方式

[root@mail ~]# vim /etc/syslog.conf

mail.* -/var/log/maillog

4. 在邮件服务器内telnet 127.0.0.1 25 ,可以进入邮件服务器

5.通过其他主机telnet 192.168.101.250 会失败

6.这是由于sendmail的默认监听地址为127.0.0.1 ,外部主机无法获得服务,需要修改/etc/mail/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 ,

7.修改后,重启sendmail服务。继续通过其他主机telnet 192.168.101.250 访问,还会失败。这是因为系统读取sendmail.cf文件,虽然修改了sendmail.mc文件,但是却没有修改sendmail.cf文件。需要安装sendmail-cf-8.13.8-2.el5.i386.rpm软件,安装后将直接可以编辑sendmail.mc文件,m4-1.4.5-3.el5.1.i386.rpm软件系统默认安装,使sendmail.mc 自动转换为sendmail.cf文件

8.重启后,连接成功

9.修改access文件

Connect:localhost.localdomain RELAY

Connect:localhost RELAY

Connect:127.0.0.1 RELAY

Connect:192.168.101 RELAY

sina.com RELAY

163.com OK 到达163.com的邮件

10.修改local-host-names

11.更改主机名

编辑etc/sysconfig/network 文件

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=mail.163.com

修改/etc/hosts文件,将其他的名称去掉

12安装DNS服务器软件

13.进入 /var/named/chroot/etc下

[root@mail etc]# cp -p named.caching-nameserver.conf named.conf

[root@mail etc]# vim named.conf

14.编辑区域声明文件,并设置转发

[root@mail etc]# vim named.rfc1912.zones

15.切换到 /var/named/chroot/var/named/,编辑区域文件

[root@mail named]# cp -p localdomain.zone 163.com.db

16.编辑文件/etc/resolv.conf

[root@mail named]# vim /etc/resolv.conf

nameserver 192.168.101.250

17 重启DNS服务器,解析记录

[root@mail named]# service named restart

停止 named: [确定]

启动 named: [确定]

[root@mail named]# nslookup mail.163.com

Server: 192.168.101.250

Address: 192.168.101.250#53

Name: mail.163.com

Address: 192.168.101.250

[root@mail named]# nslookup

> set q=mx

> 163.com

Server: 192.168.101.250

Address: 192.168.101.250#53

163.com mail exchanger = 10 mail.163.com.

> set q=ns

> 163.com

Server: 192.168.101.250

Address: 192.168.101.250#53

163.com nameserver = ns.163.com.

> pop3.163.com

Server: 192.168.101.250

Address: 192.168.101.250#53

pop3.163.com canonical name = mail.163.com.

> smtp.163.com

Server: 192.168.101.250

Address: 192.168.101.250#53

smtp.163.com canonical name = mail.163.com.

18. 安装接收服务器 dovecot

19启动dovecot 服务

20.创建账户user1,user2,互相发送邮件,看是否能够发送接收成功

21.root向user1发送邮件

查看日志

22.切换到用户user1 ,接收邮件

23.user1 向user2 发送邮件

24. user2 接收收件

25 配置到达192.168.100.0网段的路由

[root@mail ~]# route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0

[root@mail ~]# route add default gw 192.168.100.250

163.com 配置完成

下面开始配置右半边sina.com区域

1.修改主机名

[root@mail ~]# vim /etc/sysconfig/network

2.新建挂载点,挂载光驱

[root@mail ~]# mkdir /mnt/cdrom

[root@mail ~]# mount /dev/cdrom /mnt/cdrom

3.配置yum工具

[root@mail ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

[rhel-server]

name=Red Hat Enterprise Linux serverbaseurl=file:///mnt/cdrom/Server

enabled=1

gpgcheck=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

4.安装DNS服务器软件

[root@mail ~]# yum install bind bind-chroot caching-nameserver -y

5.切换到/var/named/chroot/etc/ 修改DNS的配置文件

[root@mail ~]# cd /var/named/chroot/etc/

[root@mail etc]# cp -p named.caching-nameserver.conf named.conf

[root@mail etc]# vim named.conf

6.修改区域声明文件

[root@mail etc]# vim named.rfc1912.zones

7.切换到/var/named/chroot/var/named,创建区域文件

[root@mail named]# cp -p localdomain.zone sina.com.db

[root@mail named]# vim sina.com.db

1 $TTL 86400

2 @ IN SOA ns.sina.com. root (

3 42 ; serial (d. adams)

4 3H ; refresh

5 15M ; retry

6 1W ; expiry

7 1D ) ; minimum

8 @ IN NS ns.sina.com.

9 ns IN A 192.168.100.250

10 mail IN A 192.168.100.250

11 pop3 IN CNAME mail

12 smtp IN CNAME mail

13 @ IN MX 10 mail

8.重启DNS服务器,编辑/etc/resolv.conf,尝试解析

[root@mail mail]# vim /etc/resolv.conf

nameserver 192.168.100.250

[root@mail named]# nslookup mail.sina.com

Server: 192.168.100.250

Address: 192.168.100.250#53

Name: mail.sina.com

Address: 192.168.100.250

[root@mail named]# nslookup pop3.sina.com

Server: 192.168.100.250

Address: 192.168.100.250#53

pop3.sina.com canonical name = mail.sina.com.

Name: mail.sina.com

Address: 192.168.100.250

[root@mail named]# nslookup

> set q=mx

> sina.com

Server: 192.168.100.250

Address: 192.168.100.250#53

sina.com mail exchanger = 10 mail.sina.com.

9.安装sendmail-cf-8.13.8-2.el5.i386.rpm

[root@mail Server]# yum install sendmail-cf -y

10.切换到/etc/mail 下

[root@mail mail]# vim sendmail.mc

[root@mail mail]# vim access

[root@mail mail]# vim local-host-names

10.重启sendmail 服务器

[root@mail mail]# service sendmail restart

关闭 sm-client: [确定]

关闭 sendmail: [确定]

启动 sendmail: [确定]

启动 sm-client: [确定]

11.安装邮件接收软件dovecot,并启动

[root@mail mail]# yum install dovecot -y

[root@mail mail]# service dovecot start

启动 Dovecot Imap: [确定]

12.配置到达192.168.101.0网段的路由

[root@mail mail]# route add -net 192.168.101.0 netmask 255.255.255.0 dev eth0

[root@mail mail]# route add default gw 192.168.101.250

13.在sina.com端解析对方域名

13新建系统账户user3 user4

配置user1 @163.com 邮件客户端

配置user3@sina.com的客户端

user1@163.com 用户向 user3@sina.com发送邮件

sina.com 邮件服务器日志记录:

163.com邮件服务器日志记录:

user3 接收到邮件

虽然发送成功,但是发送速度较慢,这是由于邮件服务器默认不进行不同区域的中继,所以当收到163.com区域的邮件时,得知其ip 地址为192.168.101.250 ,服务器会根据该ip地址进行反向解析

所以要在两台DNS服务器上配置DNS反向解析记录

配置163.com 区域的DNS反向记录

切换到/var/named/chroot/etc

[root@mail etc]# vim named.rfc1912.zones

切换到/var/named/chroot/var/named

[root@mail named]# cp -p named.local 192.168.101.db

$TTL 86400

@ IN SOA localhost. root.localhost. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS localhost.

250 IN PTR mail.163.com.

~

配置sina.com 区域的DNS反向记录

[root@mail ~]# cd /var/named/chroot/etc/

[root@mail etc]# vim named.rfc1912.zones

编辑区域声明文件

[root@mail etc]# cd ../var/named/

[root@mail named]# cp -p named.local 192.168.100.db

[root@mail named]# vim 192.168.100.db

$TTL 86400

@ IN SOA localhost. root.localhost. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS localhost.

250 IN PTR mail.sina.com.

重启DNS服务器

[root@mail named]# service named restart

停止 named: [确定]

启动 named: [确定]

解析192.168.100.250

[root@mail named]# nslookup 192.168.100.250

Server: 192.168.100.250

Address: 192.168.100.250#53

250.100.168.192.in-addr.arpa name = mail.sina.com.

user1@163.com 向 user3@sina.com 发送邮件,很快就能发送到对方

在sina.com邮件服务器上安装wireshark 抓包

[root@mail ~]# yum install wireshark

启动wireshark

[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 110"

user1@163.com 向user3@sina.com 发送邮件,然后user3@sina.com 接收邮件

user3@sina.com 接收邮件

此时,sina.com上的转抓包工具可以抓到有价值信息

所以要想实现安全的通信,需要使用安全的加密邮件进行发送

下面就来实现smtps 和pop3s

##############################邮件安全###############################

由于配置163.com 区域 和 配置 sina.com区域 完全相同,所以实验中 仅在sina.com中设置邮件安全。

首先配置发送邮件协议的安全

邮件的发送协议为smtp ,要实现smtps ,需要使用starttls在25号端口上加密

1.查看编译sendmail时是否是否加入了starttls 功能

[root@mail ~]# sendmail -d0.1 -bv

2.查看sendmail 是否开启了starttls功能

需要搭建CA证书服务器

3. [root@mail ~]# vim /etc/pki/tls/openssl.cnf

4.切换到/etc/pki/CA/ 下,新建三个目录和两个文件,并给serial一个初始值01

[root@mail ~]# cd /etc/pki/CA/

drwx------ 2 root root 4096 2009-06-30 private

[root@mail CA]# mkdir certs newcerts crl

[root@mail CA]# touch index.txt serial

[root@mail CA]# echo "01">serial

5.ca产生自己的私钥

[root@mail CA]# openssl genrsa 1024 >private/cakey.pem

6.CA根据自己的私钥产生证书

[root@mail CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem

7.×××及私钥的权限为600

[root@mail CA]# chmod 600 cacert.pem

[root@mail CA]# chmod 600 private/cakey.pem

8.为sendmail创建存放证书及私钥文件的位置

[root@mail CA]# mkdir -pv /etc/mail/sendmail_certs

9.切换到/etc/mail/sendmail_certs/下,产生私钥文件。

[root@mail sendmail_certs]# openssl genrsa 1024 >sendmail.key

10.根据私钥文件产生请求文件

[root@mail sendmail_certs]# openssl req -new -key sendmail.key -out sendmail.csr

11.CA服务器颁发证书

[root@mail sendmail_certs]# openssl ca -in sendmail.csr -out sendmail.cert

12.修改sendmai服务器的证书、私钥的权限为600

[root@mail sendmail_certs]# chmod 600 *

13.编辑/etc/mail、sendmail.mc文件

define(`confCACERT_PATH', `/etc/pki/CA')dnl

define(`confCACERT', `/etc/pki/CA/cacert.pem')dnl

define(`confSERVER_CERT', `/etc/mail/sendmail_certs/sendmail.cert')dnl

define(`confSERVER_KEY', `/etc/mail/sendmail_certs/sendmail.key')dnl

DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl

14.重启sendmail服务,再次查看是否开启starttls 功能

下面来配置接收邮件的安全:pop3s

1.创建存放接收邮件服务器的证书、私钥的位置

[root@mail ~]# mkdir -pv /etc/dovecot/certs

2.产生私钥文件

[root@mail certs]# openssl genrsa 1024 >dovecot.key

3.产生请求文件

[root@mail certs]# openssl req -new -key dovecot.key -out dovecot.csr

4.ca颁发证书

[root@mail certs]# openssl ca -in dovecot.csr -out dovecot.cert

5.修改权限

[root@mail certs]# chmod 600 *

6.编辑/etc/dovecot.conf

ssl_cert_file = /etc/dovecot/certs/dovecot.cert

ssl_key_file = /etc/dovecot/certs/dovecot.key

7.重启dovecot 服务

[root@mail certs]# service dovecot restart

pop3s 配置完成

8.配置outlook 邮件客户端

配置user4@sina.com

配置user3@sina.com

9. user4@sina.com 向 user3@sina.com发送邮件

10.点击“是”,继续使用该服务器,邮件发送出去

11.user3@sina.com 连接上邮件服务器接收邮件

12.查看抓包内容,没有截获到有用信息。

身份验证设置:

在outlook上新建账户user5@sina.com ,而user5在Linux 邮件服务器上并不存在。

user5@sina.com 向 user3@sina.com发送邮件

user3@sina.com 能够收到邮件

由于user5用户在邮件服务器中根本不存在,但是却可以使用该邮件服务器发送邮件,那么该邮件服务器容易成为邮件垃圾中转站。

切换到/usr/lib/sasl2/ 打开文件Sendmail.conf

[root@mail sasl2]# cat Sendmail.conf

pwcheck_method:saslauthd

查看是否启用验证功能

[root@mail sasl2]# telnet 127.0.0.1 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 mail.sina.com ESMTP Sendmail 8.13.8/8.13.8; Tue, 11 Sep 2012 21:20:22 +0800

ehlo 127.0.0.1

250-mail.sina.com Hello localhost.localdomain [127.0.0.1], pleased to meet you

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-8BITMIME

250-SIZE

250-DSN

250-ETRN

250-STARTTLS

250-DELIVERBY

250 HELP

查看是否安装cyrus-sasl

编辑 /etc/mail/sendmail.mc

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

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

将define(`confAUTH_OPTIONS', `A')dnl 改为 define(`confAUTH_OPTIONS', `A y')dnl

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

改为

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

重启sendmail和saslauthd服务

[root@mail Server]# service sendmail restart

关闭 sm-client: [确定]

关闭 sendmail: [确定]

启动 sendmail: [确定]

启动 sm-client: [确定]

[root@mail Server]# service saslauthd restart

停止 saslauthd: [确定]

启动 saslauthd: [确定]

再次使用 user5@sina.com 发送邮件

发送失败

这样就可以杜绝垃圾邮件经过该服务器向外传递。

转载于:https://blog.51cto.com/jialiang10086/988325

sendmail 电子邮件服务器相关推荐

  1. 利用sendmail搭建电子邮件服务器

    一.电子邮件的简介 电子邮件是因特网上最为流行的应用之一.如同邮递员分发投递传统邮件一样,电子邮件也是异步的,也就是说人们是在方便的时候发送和阅读邮件的,无须预先与别人协同.与传统邮件不同的是,电子邮 ...

  2. php smtp服务器553,Qmail电子邮件服务器简单架设[一]

    Qmail电子邮件服务器简单架设: 2007-01-12bykenthy#qingdaonews.com ############################################### ...

  3. gitlab设置邮件服务器_如何设置您自己的一次性电子邮件服务器

    gitlab设置邮件服务器 by Oren Geva 由Oren Geva 如何设置您自己的一次性电子邮件服务器 (How To Setup Your Own Disposable Email Ser ...

  4. 在图3-30 中,某学院的以太网交换机有三个接口分别和学院三个系的以太网相连,另外三个接口分别和电子邮件服务器、万维网服务器以及一个连接互联网的路由器相连。图中的A,B和C都是100Mbit/s以太网

    3-30 在图3-30 中,某学院的以太网交换机有三个接口分别和学院三个系的以太网相连,另外三个接口分别和电子邮件服务器.万维网服务器以及一个连接互联网的路由器相连.图中的A,B和C都是100Mbit ...

  5. 电子邮件服务器是硬盘上的,电子邮件的地址、账号和邮件服务器分别是什么?...

    (1)E-mail地址 在把一封信投入邮箱之前,要在信封上写上收信人的姓名和地址,邮局才会知道把信发到哪里.电子邮件同样也需要发信人给出正确的地址,才能将邮件送到目的地.在Internet的电子邮件系 ...

  6. 物流服务器维护,物流企业网络维护与管理 Email邮件服务器的基本配置 任务3-3 创建电子邮件服务器.doc...

    PAGE PAGE 26 <物流网络维护与管理>实训与实践 任务3-3创建电子邮件服务器 [实验目的] 了解电子邮件系统的构成和工作流程: 掌握电子邮件服务器的架设方法: 了解电子邮件服务 ...

  7. 传入和传出电子邮件服务器,直接归档传入和传出的电子邮件【MDaemon篇】

    直接归档传入和传出的电子邮件[MDaemon篇] MDaemon电子邮件服务器提供了一种将所有电子邮件传递到MDaemon汇集邮箱的简便方法,这也使得MailStore可以通过归档汇集邮箱来直接归档M ...

  8. 电子邮件服务器限制匿名,匿名(垃圾)邮件的根源—网络上几乎所有服务器都不可避免的“漏洞-站长资讯中心...

    大家在看到这篇文章的小标题的时候,或许很多人都知道了这个"漏洞",而有的人在看文章的过程中,知道这个"漏洞",也有的人或许会惊诧,因为小标题好像说得太过严重,不 ...

  9. 7.cisco思科模拟器Web 和电子邮件服务器训练题

    题目链接: 链接:https://pan.baidu.com/s/1Wlbp7RRenLwEqgK6fbINvg?pwd=l7be  提取码:l7be 目录 题目链接: Web 和电子邮件服务器 一. ...

最新文章

  1. 22岁复旦大学生拿下深度学习挑战赛冠军:明明可以靠脸吃饭,却偏偏要靠才华
  2. 一个颠覆性答案,登上《科学》封面:是什么弄破了这些泡泡? | 科学GIF
  3. SqlParameter的作用与用法
  4. 简述解释型和编译型编程语言?
  5. 如何简单区分web前后端与MVC框架
  6. openpyxl 简单使用
  7. 【查找资料】冰点文档下载免费下载百度、豆丁、丁香、畅享、MBALib、道客巴巴、Book118等文库文档
  8. 程序员转行量化交易可行吗?
  9. kb3020369不适用计算机,适用于Windows 7的Service Pack 2 Microsoft发布KB3020369便利汇总更新 | MOS86...
  10. 数字视频压缩的可行性
  11. unity【KeyCode 键码】查询表
  12. 如何学习很重要,很枯燥,很不擅长的知识
  13. mysql的slow_log表_【转载】mysql 开启慢查询 清空slow_log日志或者slow_log表
  14. linux申请大块内存,linux 内存看一篇就够了(多图)
  15. Unity --- 混合动画
  16. 福布斯2010年富豪榜中国上榜富豪
  17. 一阶高低通滤波器设计及实现
  18. Google Earth Engine(GEE)——关于调色板的介绍(引入和应用)
  19. 32岁阿里数据工程师辞职后:做报表3年,我发现比996还累
  20. 领导不喜欢这几种下属

热门文章

  1. 10、类和对象:使用日期类计算相隔天数
  2. java el 表达式_Javaweb之EL表达式
  3. 轻松获得3D打印和2D定制产品及相关设备/展会/创业等最新资讯
  4. 连载26:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
  5. echarts关系图/力导向动态图(地图经纬度定位)
  6. 卡罗拉 (COROLLA) 2017 款 改款 1.6 L S-CVT GL - 空调控制方式
  7. ggplot2日期时间标度的设置
  8. Flutter基础-(3)Widget之文本Text
  9. android简单网页浏览器的开发
  10. 问句识别:基于Xgboost的中文疑问句判断模型