RH358配置电子邮件传输–配置仅发送电子邮件服务

第六章介绍如何配置电子邮件传输,但并不是整个邮件服务器的搭建,所以在金鱼哥看来,此章节实用性也一般。

RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html

文章目录

  • RH358配置电子邮件传输--配置仅发送电子邮件服务
    • 1. 描述电子邮件架构和空客户端
    • 2. 使用Postfix发送电子邮件
      • 修改主Postfix配置
      • 将Postfix配置为空客户机
      • 向已验证的中继提交邮件
    • 3. 电子邮件传输故障排除
    • 4. 课本练习
      • 1. 安装postfix包。
      • 2. 使用relayhost指令配置Postfix将所有消息传递到公司邮件中继。
      • 3. 将服务器Postfix空客户端配置为只中继来自本地系统的邮件。
      • 4. 配置空客户端将所有外发消息的发件人地址重写发送到公司域lab.example.com。
      • 5. 禁止Postfix空客户端将任何邮件发送到本地帐户。
      • 6. 在服务器上启用并启动Postfix。
      • 7. 编写测试邮件。
      • 8. 使用mutt命令行邮件客户端来验证邮件是否已发送到指定的收件人。
      • 完成实验
    • 总结

1. 描述电子邮件架构和空客户端

在当今的企业环境中,电子邮件是一种必不可少的沟通方式。用户通过使用web浏览器访问远程服务器上运行的基于web的电子邮件应用程序来阅读和发送电子邮件,或者通过使用专用的电子邮件客户端,如Evolution和mutt,这些客户端使用IMAP或POP3协议从本地系统连接到远程服务器。运行在Linux系统上的服务也可能发送电子邮件消息,向管理员报告状态更新和错误。

基于web的电子邮件应用程序、其他服务器进程和许多电子邮件客户机通过运行一个名为sendmail的标准助手程序或使用SMTP协议在端口25/TCP上与本地邮件服务器通信来为用户发送电子邮件消息。在Red Hat Enterprise Linux 8中,Postfix软件包提供了这个功能。

在大多数包含发送电子邮件消息的服务的系统上,管理员将Postfix配置为空客户机。空客户端运行一个本地邮件服务,该服务配置为使用SMTP协议将它发送到出站邮件中继的所有电子邮件转发。中继根据收件人域的MX DNS记录将消息发送到收件人域的邮件服务器。然后,收件人的邮件服务器将其发送到用户的邮箱。

(有时候,我们需要在自己的服务器上配置一个邮件服务器,这个邮件服务器不接受外部发过来的邮件,但是本地发送的邮件会自动路由到其他的服务器上去,因此,如果你给你自己发邮件,你将收不到)

2. 使用Postfix发送电子邮件

Postfix是一个功能强大且易于配置的邮件服务器,由postfix RPM包提供。Postfix作为一组协作程序运行,这些程序由一个称为master的守护进程协调。最重要的Postfix配置文件是/etc/postfix/main.cf。

注意:/etc/postfix目录中还包含其他Postfix配置文件。例如,另一个重要的配置文件/etc/postfix/master.cf控制由主进程启动的子服务。

修改主Postfix配置

管理/etc/postfix/main.cf配置文件可以以两种方式之一进行设置:直接使用文本编辑器编辑文件,或使用postconf实用程序。

postconf命令可以显示所有Postfix配置设置或单个设置的当前值。它可以修改设置,显示未显式设置的内置默认值,或仅显示与内置默认值不同的当前配置设置。

不带参数的postconf将显示所有/etc/postfix/main.cf的设置。

[root@host ~]# postconf
2bounce_notice_recipient = postmaster
access_map_defer_code = 450
access_map_reject_code = 554
address_verify_cache_cleanup_interval = 12h
address_verify_default_transport = $default_transport
...output omitted...

指定一组用空格分隔的特定选项,以便只显示它们的值。

[root@host ~]# postconf inet_interfaces myorigin
inet_interfaces = loopback-only
myorigin = $myhostname

重要:/etc/postfix/main.cf以美元符号($)开头的值不是文字值,而是引用另一个设置的值。在前面的示例中,myorigin设置与myhostname设置具有相同的值。这种语法简化了维护,因为值只需要在一个地方更新。

改变/etc/postfix/main.cf使用postconf -e ‘setting = value’ 命令进行设置。此命令使用指定的值编辑现有设置,否则它将在配置文件的底部使用新设置添加一行

例如,下面的命令更改了myorigin设置,以便从服务器发送的消息使用example.com作为发件人电子邮件地址的域部分,而不是服务器的主机名。

[root@host ~]# postconf -e 'myorigin = example.com'

重要:当你在/etc/postfix/main.cf中更改任何设置时,你必须重新加载(或重启)postfix服务使更改生效。当更改inet接口设置时,必须重新启动服务,重新加载是不够的。

postconf(5)手册页包括所有/etc/postfix/main.cf的概述的设置。

将Postfix配置为空客户机

要作为空客户端,主机上的Postfix必须配置为如下行为:

  • 所有由使用Postfix的sendmail助手程序发送的电子邮件都必须传递到另一个服务器上的现有邮件中继。邮件中继处理每封电子邮件,以便将其传输到每个邮件收件人的目标服务器。

  • 本地Postfix服务不得接受任何用于本地投递的电子邮件。必须拒绝这些消息,或者必须将来自本地的消息发送到邮件中继,以便在组织现有的中央邮件服务器上传递

下图说明了空客户端设置的工作方式。要发送邮件, serverX上的空客户端将所有邮件发送到公司SMTP邮件服务器smtpX.example.com

Postfix空客户端配置设置

设置 价和目的
inet_interfaces loopback-only 它将Postfix配置为仅在地址127.0.0.1或::1上侦听端口25/ TCP上的新电子邮件消息。(因此,仅适用于由空客户机本身发送的消息。)
mynetworks 127.0.0.0/8 [::1]/128 这将使Postfix将消息提交给mynetworks设置值列表中任何网络上的主机的邮件中继。此列表中的项目可以用逗号或空格分隔。
myorigin 设置为本系统用户发送的电子邮件的DNS域。 这将把发件人的电子邮件地址重写到@符号右侧,并有助于确保这些电子邮件的回复发送到正确的邮件服务器。例如,myorigin = example.com将使系统上用户alerts发送的电子邮件看起来像是由alerts@example.com发送的。
relayhost 设置为用方括号括起来的邮件中继的主机名。 这将把所有发送消息提交给该中继以进行传递。例如,relayhost = [smtp.example.com] 提交所有消息到smtp.example.com上的中继。缺省情况下,消息以纯文本形式提交到邮件中继的端口25/TCP,不进行身份验证。如果中继通过其客户机的IP地址验证其客户机,并且不需要进一步的验证,则此方法有效。
mydestination 将其设置为空字符串值。 Postfix接受发送给目标域中域列表中的用户的邮件,以便将其发送到本地邮箱。因为空客户端不接受本地发送的电子邮件,所以这应该是空的。 如果您在配置文件中完全没有设置mydestination(或使用postconf -x mydestination删除它),它将被设置为一个默认值,该值接受发送到本地主机名或Localhost的邮件,这是不希望的。

STANDARD_CONFIGURATION_README文件包含更多关于Postfix 空客户端配置的文档。安装Postfix后,额外的文档会安装在/usr/share/doc/postfix/README_FILES/目录中。

向已验证的中继提交邮件

前面的示例假设出站邮件中继不需要身份验证或根据空客户机的IP地址对其进行身份验证。然而,通常将邮件中继实现为消息提交代理message submission agent (MSA),该代理在端口587/TCP 代替 (25/TCP)上侦听其空客户端,需要TLS加密,并需要对空客户端进行身份验证。

假设您的MSA接受用户名和密码验证,您需要对空客户端上的Postfix配置做以下更改:

relayhost = [smtp.example.com]:587 (add :587 to your relayhost value)

smtp_use_tls = yes to use TLS

smtp_sasl_auth_enable = yes to use authentication

smtp_sasl_security_options = noanonymous to require authentication and allow username/password as a method

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd to use /etc/postfix/sasl_passwd to store the user name and password for authentication

编辑/etc/postfix/sasl_passwd文件,以包含relayhost的定义以及以冒号分隔的用户名和密码,这些是向MSA进行身份验证所需的。在本例中,relayuser@example.com是用户名,mysecretpassword是重新发送邮件的密码:

[smtp.example.com]:587 relayuser@example.com:mysecretpassword

运行postmap /etc/postfix/sasl_passwd,用您的密码更新Postfix配置。确保postmap创建的/etc/postfix/sasl_passwd和/etc/postfix/sasl_passwd.db文件由root用户和root组拥有,并且只能由root读取。

3. 电子邮件传输故障排除

systemd日志记录了所有与postfix.service相关的操作。此外,/var/log/maillog日志文件包含有关任何邮件服务器相关操作的信息。

当消息没有被传递到远程SMTP服务器时,使用postqueue命令。postqueue -p命令显示已排队的所有外发邮件的列表。postqueue -f命令立即尝试再次传递所有排队的消息。Postfix通常每小时重新发送一次排队的消息,直到它们被接受或过期

如果您的电子邮件被发送到一个为客户端提供POP3或IMAP访问的服务器上,您可以安装mutt包并使用mutt命令来检索您的邮件。下面的命令连接到IMAP上的imap.lab.example.com,。提示您进行身份验证,并在您的终端窗口中显示该服务器上的消息:

[user@host ~]$ mutt -f imaps://imap.lab.example.com

4. 课本练习

[student@workstation ~]$ lab smtp-sendonly start

该命令确保DNS、SMTP和IMAP服务对lab.example.com SMTP中继服务器提供支持。

在servera上安装并配置Postfix作为空客户端,以便通过smtp.lab.example.com中继邮件。在发送的电子邮件中使用lab.example.com作为组织的域名。

通过使用支持imap的邮件客户端从imap.lab.example.com检索测试电子邮件。 (作为用户和邮件收件人的student,IMAP密码为student)。

1. 安装postfix包。

[root@servera ~]# yum -y install postfix

2. 使用relayhost指令配置Postfix将所有消息传递到公司邮件中继。

将公司邮件中继的主机名用方括号括起来,以防止DNS服务器查找MX记录

[root@servera ~]# postconf -e 'relayhost=[smtp.lab.example.com]'

3. 将服务器Postfix空客户端配置为只中继来自本地系统的邮件。

[root@servera ~]# postconf -e 'inet_interfaces=loopback-only'
[root@servera ~]# postconf -e 'mynetworks=127.0.0.0/8 [::1]/128'

4. 配置空客户端将所有外发消息的发件人地址重写发送到公司域lab.example.com。

[root@servera ~]# postconf -e 'myorigin=lab.example.com'

5. 禁止Postfix空客户端将任何邮件发送到本地帐户。

配置空客户端以将所有邮件转发到中继服务器。将mydestination选项设置为空值以实现此目的。

[root@servera ~]# postconf -e 'mydestination='

6. 在服务器上启用并启动Postfix。

[root@servera ~]# systemctl enable --now postfix

7. 编写测试邮件。

在servera.上打开一个新的终端。通过向student@lab.example.com发送以servera null client为主题并以null client test为内容的消息来测试空客户端配置。mail命令使用Postfix提供的/usr/sbin/sendmail来传输电子邮件

mail -s 'servera null client' student@lab.example.com
null client test
.
EOT

8. 使用mutt命令行邮件客户端来验证邮件是否已发送到指定的收件人。

使用IMAPS协议访问在IMAP上运行的imap.lab.example.com。以student用户身份向IMAP服务器进行身份验证,密码为student。

#在imap.lab.example.com上为学生阅读邮件。使用mutt命令行邮件客户端,使用IMAPS协议
[student@servera ~]$ mutt -f imaps://imap.lab.example.com
#该命令提示您接受主机SSL证书,然后提示您输入用户名和密码。键入a以永久接受该证书。
Username at imap.lab.example.com: student
Password for student@imap.lab.example.com: student#验证测试消息是否student到达学生用户的电子邮件帐户。
#请阅读邮件并确认发件人的电子邮件地址为student@lab。example.com。
q:Quit d:Del u:Undel s:Save m:Mail r:Reply g:Group ?:Help
...
1 F May 20 (0.4K) servera null client
q

完成实验

[student@workstation ~]$ lab smtp-sendonly finish

总结

  • 介绍电子邮件架构和空客户端。
  • 如何使用Postfix发送电子邮件。
  • 电子邮件传输的Trouble Shooting。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

RH358配置电子邮件传输--配置仅发送电子邮件服务相关推荐

  1. php向用户发送电子邮件确认注册,php – 发送电子邮件以确认注册FOSUserBundle

    我使用FOSUserBundle在我的应用程序上执行登录/注册. 我希望新用户通过向他发送确认电子邮件来确认他的电子邮件. 阅读官方文档和不同的教程后,我有同样的错误: The check email ...

  2. wordpress发邮件_如何修复WordPress不发送电子邮件的问题

    wordpress发邮件 One of the most commonly asked questions on WPBeginner is how to fix WordPress not send ...

  3. SpringBoot整合:Druid、MyBatis、MyBatis-Plus、多数据源、knife4j、日志、Redis,Redis的Java操作工具类、封装发送电子邮件等等

    SpringBoot笔记 一.SpringBoot 介绍 1.1.SpringBoot简介 SpringBoot 是一个快速开发的框架, 封装了Maven常用依赖.能够快速的整合第三方框架:简化XML ...

  4. 亚马逊ses如何发qq_亚马逊ses发送电子邮件

    亚马逊ses如何发qq SES (Simple Email Service) is, as the name suggests, a very simple service to enable pro ...

  5. (邮件/用户)代理协议简介Socket程序发送电子邮件

    目录 邮件收发 基本流程 具体过程 协议简介 SMTP POP3 IMAP MIME 在.NET中如何实现 常用的邮件服务器地址: 126邮箱 163邮箱 yahoo邮箱 Sohu邮箱 Gmail邮箱 ...

  6. Servlet 发送电子邮件

    Servlet 发送电子邮件 使用 Servlet 发送一封电子邮件是很简单的,但首先您必须在您的计算机上安装 JavaMail API 和 Java Activation Framework)JAF ...

  7. linux笔记 3-4 SMTP,.配置电子邮件传输

    ***************4.配置电子邮件传输*****************##1.基本电子邮件配置##配置dns服务,添加MX记录两台服务器分别配置 /etc/postfix/main.cf ...

  8. DPM2012学习(九),配置DPM发送电子邮件

    在本篇博文中我来学习下,配置DPM发送电子邮件,当我们给DPM的服务器配置了电子邮件,那么当DPM服务器出现一些警告的事件就会以电子邮件的方式进行通知我们IT管理员. 如下图,我们打开DPM管理员控制 ...

  9. WordPress配置SMTP发送电子邮件(QQ邮箱)

    Wordpress通过PHP自带的mail函数实现电子邮件的发送成功率极低,现有的各类邮箱,例如QQ邮箱.新浪邮箱.163邮箱等,基本不支持PHP语言的mail函数实现的邮件发送,因此,需要配置基于S ...

  10. jira配置邮件服务器,配置电子邮件通知 - JIRA Software 中文翻译 - Atlassian Documentation...

    电子邮件通知 启用电子邮件通知禁用电子邮件通知 要禁用项目的电子邮件通知,您可以通过编辑项目并选择"None"作为项目的通知模型,将通知模型从项目中删除. 或者,您也可以编辑通知模 ...

最新文章

  1. 2011百度之星初赛B圆环
  2. java 之 语言基础
  3. 普大喜奔:沁恒单片机免费样品申请开始啦!
  4. oracle 尖括号_Oracle常用函数整理
  5. 【Flask】路由和URL
  6. Python 中的numpy 库
  7. 前端学习(2165):vuecli3创建项目和目录结构
  8. Exchange笔记之Exchange Server 2003前端后端部署
  9. asp教室使用_为什么要在教室中使用开放式硬件?
  10. Theano模块的安装其实没你想的那么难
  11. SpringBoot学习(二)——Spring的Java配置方式
  12. python绘制柱状图和折线图_python绘制散点图,柱状图和折线图
  13. android卡在开机画面,请教:用迅为4412开发板开机时卡在Android静止画面
  14. c语言整型常量后加l或u,《软考程序员》整型常量
  15. Autovue集成全过程
  16. Unity碰撞检测/触发器触发问题
  17. linux 找u盘,linux系统怎样找到U盘?
  18. 宽带加速方法!网速提高30%-200%
  19. js清空浏览器cokie缓存_js-cookie删除缓存
  20. error C2065: “pair”: 未声明的标识符

热门文章

  1. linux网络重设,Linux ADSL拨号上网
  2. 天下谁人不识“金” — SONY NW-WM1ZM2 索尼金砖二代测评
  3. 体育用品商城小程序开发功能
  4. Android开发——数据库框架Suger遇到的大坑(Gson和Suger的复用Bean请见“大坑三”)
  5. 2017软件测试考试分值,2017年英语四级分值分配「最新」
  6. 对冲策略及Python实现
  7. 基因重组-冲刺日志(第五天)
  8. 网络安全技术第四章——身份认证技术(身份认证及方式、身份认证三要素、身份认证协议、KERBEROS协议、SSL协议)
  9. 可扩展机器学习——分类——点击率预测(Click-through Rate Prediction)
  10. 管理学定律二:鳄鱼法则与鲇鱼效应