失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Windows Server : 搭建SMTP服务器 配置Outlook 收发邮件

Windows Server : 搭建SMTP服务器 配置Outlook 收发邮件

时间:2023-04-18 05:30:30

相关推荐

Windows Server : 搭建SMTP服务器 配置Outlook 收发邮件

尽管是“二手知识”,可能还是“三手知识”,但也要亲自入一遍坑,才有体会。

背景:之前在某证券公司实习的时候,经常是定时执行完一些任务以后用SMTP自动发邮件。然而常常被QQ邮箱、网易邮箱制止,说我发的是垃圾邮件,或者说发送频率太高。

需求:需求无非如下几点,希望建立内部邮箱,不希望受到诸如网易、QQ邮箱等服务器的数量限制,或是单纯练手以了解计算机网络应用层SMTP及POP3协议(我感觉对于这种经典的协议,计算机网络的经典运用,还是有必要摸索一下的)。网上有很多关于这个主题的教程文章,但一步步照着做下来,总觉得好像少了点什么。

效果

注意,这是一个假的域名(互联网上并没有,或者说只是在内网中使用)。另外,我在内网中可以收发邮件(用第三方邮件客户端),发外网的邮箱可能会被认为是垃圾邮件,而且从外网无法给这个邮箱发邮件。

环境

邮件服务器的机器,一台买的联想笔记本 Z475,Windows Server ,64位,数据中心版,测试邮件账户 qcy@qcy-。Server 和在设置SMTP服务器时大同小异。

另一台测试机器,一台买的戴尔笔记本,Windows 10,64位,企业版,测试邮件账户 qcy2@qcy-。

步骤概述

1.安装SMTP服务(支持发邮件)

2. 配置SMTP服务(配允许的IP,邮件服务器的各项设置),设置SMTP服务自动启动。

3. 安装POP3服务(支持收邮件。有人说Windows Server 及以后的版本的操作系统中已删除了POP3服务了,逼着大家用Exchange Server。不过可以下载一个第三方的免费软件,以支持POP3服务,邮件刷新时间大概3分钟一次,免费版支持10个用户,Visendo SmtpExtender Community v1.1.2.637 x64)

4.配置POP3服务

5.设置防火墙,测试两台机器是否能相互PING通。

6.配置邮件客户端(如Outlook、FireFox等)

7.测试(邮件客户端,或者干脆就是记事本也行)

详细步骤

1 & 3.安装

装SMTP服务,自行百度。

装POP3服务,推荐第三方软件VisendoSMTPExtender。我用的是VisendoSMTPExtender_x64.msi社区版,约15MB。

2 & 4. 配置SMTP和POP3

SMTP在IIS 6.0管理器中配置,POP3用第三方软件配置。

SMTP默认端口25,POP3默认端口101?

配置SMTP

服务 -简单邮件传输协议(SMTP)-属性, 设置启动类型为“自动”。运行 - services.msc,即可快速打开服务。

配置域名。因为其实没有真正的域名,所以只能是一个假的域名,本机认识,及同一局域网下的计算机认识即可。

开始 -管理工具 - Internet信息服务 (IIS) 6.0管理器 - SMTP Virtual Server #1 - 域,改名,改成想要的域名的样子(如 , ,我设置的是qcy-),尽管目前来讲这是假的。但在一个局域网内,你去PING这个域名(不要有最后的点及后面的东西),是可以PING通的。当然,如果Virtual Server中的域是空的,要新建一个域名,选别名(另一个是远程,不要选)。

SMTP Virtual Server #1 -右键属性

常规:IP地址,选内网IP,SMTP的TCP端口默认是25

访问:访问控制-身份验证(暂时选匿名),连接控制和中继限制,暂时开放所有IP(即不做限制)

邮件:一些参数,自己去配

传递:出站安全(暂时选匿名),高级,完全限定的域名(输入刚刚改的qcy-z475),检查DNS,要保证域名有效

上面身份验证其实推荐集成Windows身份验证,这样邮箱的用户名和密码就是登录Windows时的用户名和密码。这里出现了第一个密码,等下POP3中还有一个密码

现在要添加用户(相当于是给用户开邮箱)。(不要用控制面板中的添加用户)

计算机管理 -系统工具 -本地用户和组 -用户,新建用户,用户的名称就是电子邮箱中的账户的一部分(需要用它),用户的全名是显示在Windows启动的时候登录界面时的名字。

配置POP3

启动VisendoSMTPExtender。

Settings - Accounts - New Accounts,输入用户名和密码,用户名是邮箱地址(刚刚新建的用户如果是qcy,那么加上前面改名的域qcy-,邮箱地址就是 qcy@qcy-),密码则希望和该用户的Windows登录密码一致。

Settings - Advanced -配置好POP3服务器的地址(内网IP,它是下拉以后让你选的,这里还没有测试过若内网IP改变了,会怎样…所以说,要做服务器的机器,最好还是能有一个固定IP,固定的内网IP也好)

Email drop folder,是说,这个软件会一直监控这个文件夹中的*.eml文件。

我测试过,如果用Outlook发送一封邮件,会在服务器的这个路径的内生成一个eml文件,过几分钟,这个eml文件会被Visendo SmtpExtender扫描到,并移动到收信人的文件夹内。一旦移动到收信人所属的文件夹后,在Outlook中接收所有邮件,就可以收到新邮件了(估计是Outlook客户端是去读取服务器上的用户文件夹,然后把新邮件下载到本地)。Outlook默认是30分钟自动扫描一次。

至此,SMTP和POP3的基本配置已完成。

5.设置防火墙,并测试是否能PING通。

简单起见,把所有防火墙关了。第一步是要把邮件服务器搭起来,所以先排除掉一切可能阻碍成功的原因。所以现在希望是,搭建成功,测试完成 以后,再加出入站规则 。

两台机器互发邮件,一定要求PING得通啊(客户端和邮件服务器之间PING)。

如果PING不通,第一检查网络是否断开,第二检查防火墙-入站规则-文件与打印机共享(回显请求 - ICMPv4-In)否被禁用(请自行百度)。

6.配置邮件客户端

我用的是Outlook,和其他客户端大同小异。

添加账户 -手动设置 - POP或IMAP

建议,因为是内网IP,说不定IP地址会变,所以建议把发送和接收服务器的地址都填成前面设置过的域名domainA。

我设置的是qcy-。当然,这里是不是应该确认,“整个内网中,叫qcy-z475的只有一台机器”?

注意,如果SMTP服务器选了集成Windows身份验证,而没有选匿名访问,则此时此刻测试账户设置,会报530错误。

其他设置 -发送服务器 - ……身份验证 ……

7.测试

7.1向126邮箱(外网)发一封邮件(可能会被网易认为是垃圾邮件给退信了)

7.2向自己发送一封邮件,成功。

7.3向内网的另一个账户发一封邮件,成功。

7.4用记事本写一个txt,内容如下。

From: qcy2@qcy-To: qcy@qcy-Subject: Email test这也是可以发送的。

保存到服务器的 inetpub/mailroot/Pickup/路径下,也会被SMTP服务器检测到,随即根据该txt生成一个eml文件,扔到收件人的邮箱里,对应收件人的outlook客户端去查收新的邮件,就可以收到了。这里就不截图演示了。

7.5 用Python调用函数发送邮件

注意1: 如果前面设置身份验证方式为:匿名登录,则Python代码里面可以不用login,但其实不安全。

那么,前面还需要设置为:基本验证。

否则,会出现报错:No suitable authentication method found.

# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 第三方 SMTP 服务mail_host='qcy-z475' # 设置服务器mail_user='qcy@qcy-' # 邮件上“显示”的发件人login_user='qcy' # Windows用户的用户名mail_pass='xxxx' # 口令content = '用Python发送的邮件'message = MIMEText(content, 'plain', 'utf-8')message['From'] = mail_usermessage['To'] = ','.join(['qcy2@qcy-']) # 用逗号或句号分隔subject = 'Python SMTP 邮件测试'message['Subject'] = Header(subject, 'utf-8')try:smtp_obj = smtplib.SMTP()smtp_obj.connect(mail_host) # 连接服务器smtp_obj.login(login_user, mail_pass) # 登录操作smtp_obj.sendmail(mail_user, ['qcy2@qcy-'], message.as_string())print("success")except Exception as e:print(e)# print("Error: failed")finally:smtp_obj.close()

注意2:邮箱名,登录用户名在此处是不一样的。

邮箱名是qcy@qcy-,登录名是windows的用户名,即qcy。务必输入正确,否则会验证失败。

如果觉得《Windows Server : 搭建SMTP服务器 配置Outlook 收发邮件》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。