邮箱服务器搭建

news/2024/11/17 5:20:40/

电子邮件系统的组成:
1)邮件用户代理(Mail User Agent , MUA),MUA是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口。 最常用的 MUA 有: linux 中的 mail , elm , pine 等。 Windows 的 outlook , foxmail 等 
2)邮件代理器( Mail Transfer Agent , MTA ) MTA 负责邮件的存储和转发( store and forward )。 MTA 监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接受到的邮件进行缓冲。 在 linux 下的 MTA 程序有: sendmail , qmail 等, 
3)邮件提交代理( Mail Submmission Agent , MSA ) MSA 负责消息有 MTA 发送之前必须完成的所有准备工作和错误检测, MSA 就像在 MUA 和 MTA 之间插入了一个头脑清醒的检测员对所有的主机名,从 MUA 得到的信息头等信息进行检测。 
4)邮件投递代理( Mail Ddlivery Agent , MDA ) MDA 从 MTA 接收邮件并进行适当的本地投递,可以投递个一个本地用户,一个邮件列表,一个文件或是一个程序。 Linux 下常用的 MDA 是 mail.local , smrsh 和 procmail ( www.procmail.org ) 
5)邮件访问代理( Mail Access Agent , MAA ) MAA 用于将用户连接到系统邮件库,使用 POP 或 IMAP 协议收取邮件。 Linux 下常用的 MAA 有 UW-IMAP , Cyrus-IMAP , COURIER-IMAP 等 邮件中继: 就是当邮件向目的地址传输时,一旦源地址和目的地址都不是本地系统,那么本地系统就是邮件的中继(中转站)。

MUA 使用者透过这个程序与邮件服务器沟通,包括收信(以 POP3 连接收信服务器程序 imapd)或寄信(以SMTP 连接 MTA),例如: Outlook Express……等。
MTA 使用 SMTP 通讯协议将信件传递到不同邮件主机上面,例如: sendmail, postfix, Qmail……等。
MSA 是新版 sendmail 发展给 SSMTP 进行 TLS/SSL 联机的 client 端代理器。
MDA 收到信后将信件分配到不同使用者信箱内,算是 MTA 的一个子系统,譬如 BBS 从定义上来说也算是 MDA( BBS 功能复杂,当然不仅仅是 MDA),有些 MDA 被设计来进行滤信动作,它们必须在 local 端运作,因此又被称为 LDA,例如: procmail……等。
MailBox 尚未被使用者下载的邮件,会暂存在服务器的硬盘空间里,称之为信箱。所有使用者信箱的总合必须约等于该分割区总容量的一半,以避免造成信箱尚有空间但邮件系统却无法运作的现象。
Mail Gateway 是一种特殊的邮件服务器,通常扮演代理器的角色,负责统筹某机构内所有信件的收发,并分配邮件给下属的邮件服务器们,透过这个机制能够加速邮件的交换,并且能够进行一致的滤信控制。

sendmail是linux系统中一个邮箱系统,如果我们在系统中配置好sendmail就可以直接使用它来发送邮箱。
sendmail的配置文件
/etc/mail/sendmail.cf :Sendmail的主配置文件;
/etc/mail/access :中继访问控制;
/etc/mail/domaintable ;域名映射;
/etc/mail/local-host-names ;本地主机别名;
/etc/mail/mailertable :为特定的域指定特殊的路由规则;
/etc/mail/virtusertable :虚拟域配置。

中继的配置
是指一台服务器接受并传递源地址和目的地址都不是本服务器的邮件。
在两个文件中进行设置:
/etc/mail/relay-domains
/etc/mail/access。

废话不多说了,下面分享下sendmail在linux系统下的安装部署记录:

一、安装软件
[root@slave-node ~]# yum install -y sendmail
[root@slave-node ~]# yum install -y sendmail-cf

启动saslauthd服务进行SMTP验证(默认是安装的,如果没有,就手动安装)
[root@slave-node ~]# service saslauthd start
Starting saslauthd: [ OK ]

二、邮件服务配置(iptables防火墙关闭)
1)配置Senmail的SMTP认证
将下面两行内容前面的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。
[root@slave-node ~]# vim /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

2) 设置Sendmail服务的网络访问权限(如果是直接本机调用,可以不用操作,采用默认的127.0.0.1。不过最后还是改成0.0.0.0)
将127.0.0.1改为0.0.0.0,意思是任何主机都可以访问Sendmail服务。
如果仅让某一个网段能够访问到Sendmail服务,将127.0.0.1改为形如192.168.1.0/24的一个特定网段地址。
[root@slave-node ~]# vim /etc/mail/sendmail.mc
......
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

3)生成配置文件
Sendmail的配置文件由m4来生成,m4工具在sendmail-cf包中。如果系统无法识别m4命令,说明sendmail-cf软件包没有安装
[root@slave-node ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

4)启动服务(如果发现sendmail dead but subsys locked,那就执行"service postfix status"查看postfix是否默认开启了,如果开启的话,就关闭postfix,然后再启动或重启sendmail服务即可。)
[root@slave-node ~]# service sendmail start
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
[root@slave-node ~]# service saslauthd restart
Stopping saslauthd: [ OK ]
Starting saslauthd: [ OK ]

将服务加入自启行列
[root@slave-node ~]# chkconfig sendmail on
[root@slave-node ~]# chkconfig saslauthd on
[root@slave-node ~]# chkconfig --list |grep sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@slave-node ~]# chkconfig --list |grep saslauthd
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

三、测试发送邮箱
(1)第一种方式:安装sendmail即可使用。
[root@slave-node ~]# yum -y install mailx

创建一个邮件内容文件,然后发邮件(注意-s参数后的邮件标题要用单引号,不能使用双引号,否则发邮件会失败!)
[root@slave-node ~]# echo 'This is test mail'>/root/content.txt 
[root@slave-node ~]# cat /root/content.txt
This is test mail
[root@slave-node ~]# mail -s 'Test mail' wang_shibo***@163.com < /root/content.txt

查看已收到邮件:

 

如果不想通过文件发送邮件内容也可以这么发送,也可以使用管道符直接发送邮件内容,效果同文件发送邮件内容一样
[root@slave-node ~]# echo "This is test mail" | mail -s '666666' wang_shibo***@163.com
查看已收到邮件:

如果是发送给多个邮件,就使用-c参数,如下:
[root@slave-node ~]# echo "This is test mail" | mail -s 'test' -c wang_shibo***@sina.com wang_shibo***@163.com

如遇下面报错,解决办法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
发送邮件:
[root@mail-server ~] # echo "This is test mail" | mail -s '666666' wangshibo@kevin.com
发现收不到邮件,查看sendmail日志,报错信息如下:
[root@mail-server ~] # tail -f /var/log/maillog
.......
Feb 12 03:35:13 mail-server sendmail[21905]: My unqualified host name (mail-server) unknown; sleeping  for  retry
Feb 12 03:37:12 mail-server sendmail[22061]: w1BJb8KM022059: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server> (0 /0 ), delay=00:00:03, xdelay=00:00:03,
mailer=esmtp, pri=120476, relay=mx1.kevin.com. [128.1.41.15], dsn=4.0.0, stat=Deferred: 450 Requested mail action not taken: Invalid sender
分析原因:
这是由于主机名没有正确解析导致的。
[root@mail-server ~] # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.202 mail-server
[root@mail-server ~] # cat /etc/sysconfig/network
NETWORKING= yes
HOSTNAME=mail-server
解决办法:
[root@mail-server ~] # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.202 mail-server.localdomain mail-server
[root@mail-server ~] # cat /etc/sysconfig/network
NETWORKING= yes
HOSTNAME=mail-server
[root@mail-server ~] # rm -rf /var/spool/mqueue/*
[root@mail-server ~] # /etc/init.d/sendmail restart
Shutting down sm-client:                                   [  OK  ]
Shutting down sendmail:                                    [  OK  ]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]
再次使用mail发送邮件就正确了!
[root@mail-server ~] # echo "This is test mail" | mail -s '666666' wangshibo@kevin.com
[root@mail-server ~] # tail -f /var/log/maillog
.......
Feb 12 03:42:31 mail-server sendmail[22293]: STARTTLS=client, relay=mx1.kevin.com., version=TLSv1 /SSLv3 , verify=FAIL, cipher=AES256-GCM-SHA384, bits=256 /256
Feb 12 03:42:31 mail-server sendmail[22299]: STARTTLS=client, relay=mx1.kevin.com., version=TLSv1 /SSLv3 , verify=FAIL, cipher=AES256-GCM-SHA384, bits=256 /256
Feb 12 03:42:31 mail-server sendmail[22302]: STARTTLS=client, relay=mx1.kevin.com., version=TLSv1 /SSLv3 , verify=FAIL, cipher=AES256-GCM-SHA384, bits=256 /256
Feb 12 03:42:33 mail-server sendmail[22284]: STARTTLS=client, relay=mx1.kevin.com., version=TLSv1 /SSLv3 , verify=FAIL, cipher=AES256-GCM-SHA384, bits=256 /256
Feb 12 03:42:34 mail-server sendmail[22293]: w1BJgTcF022288: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server.localdomain> (0 /0 ), delay=00:00:05, xdelay=00:00:05, mailer=esmtp, pri=120510, relay=mx1.kevin.com. [116.115.114.9], dsn=2.0.0, stat=Sent (Mail OK queued as AQAAfwB3EaEnDYFaHrpiAA--.12694S3)
Feb 12 03:42:35 mail-server sendmail[22302]: w1BJgUPI022300: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server.localdomain> (0 /0 ), delay=00:00:05, xdelay=00:00:05, mailer=esmtp, pri=120510, relay=mx1.kevin.com. [115.123.124.105], dsn=2.0.0, stat=Sent (Mail OK queued as AQAAfwDXQD0oDYFaoMJxAA--.21712S3)
Feb 12 03:42:36 mail-server sendmail[22299]: w1BJgToO022294: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server.localdomain> (0 /0 ), delay=00:00:06, xdelay=00:00:06, mailer=esmtp, pri=120510, relay=mx1.kevin.com. [115.123.124.105], dsn=2.0.0, stat=Sent (Mail OK queued as AQAAfwB3HTonDYFancJxAA--.21596S3)
Feb 12 03:42:40 mail-server sendmail[22284]: w1BJgSAl022282: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server.localdomain> (0 /0 ), delay=00:00:12, xdelay=00:00:12, mailer=esmtp, pri=120510, relay=mx1.kevin.com. [139.162.158.182], dsn=2.0.0, stat=Sent (Mail OK queued as AQAAfwDHp2QmDYFayl55AA--.6056S3)

(2)第二种方式:利用外部的smpt服务器
上面第一种方式中,/bin/mail命令会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用。
而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的。

修改/etc/mail.rc文件(有的版本叫/etc/nail.rc,添加下面内容:
set from=fromUser@domain.com smtp=smtp.domain.comset smtp-auth-user=username smtp-auth-password=passwordset smtp-auth=login

参数说明:
from是发送的邮件地址
smtp是发生的外部smtp服务器的地址
smtp-auth-user是外部smtp服务器认证的用户名。注意一定要填写邮件全称!!
smtp-auth-password是外部smtp服务器认证的用户密码
smtp-auth是邮件认证的方式

配置完成后,就可以正常发送邮件了,如下
[root@slave-node ~]# vim /etc/mail.rc                     //在文件底部添加
set from=ops@huanqiu.cn smtp=smtp.huanqiu.cn smtp-auth-user=ops@huanqiu.cn smtp-auth-password=zh@123bj smtp-auth=login

现在开始发邮件:
[root@slave-node ~]# echo "hello world" |mail -s 'test666' wangshibo@huanqiu.cn

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************

http://www.ppmy.cn/news/704131.html

相关文章

搭建私人邮件服务器

怎样使用本地服务器搭建一个邮箱&#xff0c;这样就可以脱离qq或者其他企业邮箱的限制&#xff0c;即可以做到节省成本&#xff0c;又可以得到收发邮件的一个保密性。 这里我们先展示一下本地搭建邮箱服务器后的成功例子&#xff1a; 可以看到&#xff0c;这里qq邮箱收到我这边…

搭建邮件服务器,过程非常简单

搭建邮件服务器&#xff0c;过程非常简单&#xff0c;只需几个步骤即可。 通常在Linux搭建邮件服务器是需要安装很多软件和配置文件的&#xff0c;所以我们可以使用一个开源邮件服务器软件来搭建的。 准备一台服务器与系统 云服务器或本地虚拟的服务器都可以。服务器需要能链…

如何搭建属于自己的邮件服务器

申请了属于自己的域名&#xff0c;并且建立了网站&#xff0c;如果您还在您的网站上留下的联系email地址是QQ邮箱或者163以及其它的邮箱地址&#xff0c;这对你网站品牌是多么不好的影响啊&#xff0c;因此您需要搭建一个属于自己的邮件服务器&#xff0c;有了属于自己的邮件服…

邮件服务器如何搭建?企业自己搭建邮件服务器的方法

随着企业信息化进程的加快&#xff0c;企业邮件的使用也越来越多&#xff0c;不管是外网还是在企业内部网络&#xff0c;员工都经常使用企业邮件来处理日常的工作。而越来越多的企业和单位&#xff0c;也开始考虑自己搭建邮件服务器&#xff0c;以加强员工间的信息交流&#xf…

hMailServer 使用教程 —— 手把手教你搭建自己的邮箱服务器

前言 假设你已经拥有了一台具有公网ip的服务器&#xff0c;以及域名 hMailServer 介绍 hMailServer 适用于 Windows 操作系统&#xff0c;它除了提供邮箱系统需要的所有基础功能之外&#xff0c;还内置了一些常用功能&#xff0c;比如&#xff1a;反垃圾邮件、反病毒邮件&am…

从0搭建一个邮件服务器(用于邮件推送以及邮件群发业务)

从0搭建一个邮件服务器&#xff08;用于邮件推送以及邮件群发业务&#xff09; 本文讲述如何方便快捷搭建一个邮件服务器&#xff0c;由于本人论文以及实习公司需要&#xff0c;将会言简意赅的搭建一个邮件服务器来实现所需功能&#xff0c;以下是实现效果图&#xff0c;本文略…

怎么搭建自己邮箱服务器,详细教程

1.准备一台Windows服务器 此文用的腾讯云的&#xff0c;北京地区 2.准备一个域名 &#xff08;使用国内服务器需要备案&#xff09;此文举例用的&#xff1a;daeny.cn 3.准备好邮局软件 下载地址&#xff1a;Download - hMailServer - Free open source email server for …

邮件服务器的搭建

今天这个教程给大家带来邮件服务器的搭建&#xff0c;可以创建自己的域名邮件帐号&#xff0c;来发送和接受邮件&#xff0c;希望大家喜欢。 一、前期准备&#xff1a; 1、域名&#xff1a;我的是yunmenggongzuoshi.cn; 2、腾讯云服务器一台&#xff1a;IP地址是211.159.149.…