首页 > 代码库 > SMTP

SMTP

SMTP基本电子邮件发送

1.电子邮件发送

 

客户端发送给服务器端,postfix软件提供MTA,MDA.

MTA 提供SMTP服务,接受邮件(读取DNSMX记录)--》保存MDA 传送邮件

MUA 用户代理

 

1-1服务器使用SMTP协议将电子邮件提交至TCP端口25,或由本地客户端通过/usr/bin/sendmail程序进行提交。如果该MTA是最终目标位置,邮件将传递至MDA。否则,将使用MX记录在DNS中查找下一个MTA,并使用SMTP进行转发。

1-2.MDA:“邮件发送代理MDA将邮件发送至收件人的本地邮件存储位置(默认情况下是/var/spool/mail/user)Postfix提供自己的MDA,以发送至基于文件的本地默认邮件存储位置/usr/libexec/postfix/local.

1-3.转发:电子邮件服务器(MTA)将提交的邮件转发至另一个服务器,以进行发送

1-4.排队:失败的发送或转发尝试排队等待,并由MTA定义重试。(默认情况下,Postfix每小时执行此操作一次)

1-5.拒绝:在首次提交期间,电子邮件被电子邮件服务器拒绝

1-6.退回:远程服务器接受电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户

 

 

2-1Postfixpostfix RPM包提供,并通过postfix服务脚本控制。它是一个由多个协同操作程序构成的模块化程序,它的组件由master进程控制。

2-2Postfix的主配置文件是/etc/postfix/main.cf,可以使用文本编辑器或postconf命令进行编辑。postconf命令还可用于确定Postfix的所有当前和默认配置设置或逐项确定这些设置。

2-3默认情况下,Postfix仅侦听来自本地主机的传入电子邮件。若要重新配置postfix以接收从远程主机发送的本地邮件,必须在/etc/postfix/main.cf中设置inet_interfaces = all

2-4对电子邮件进行故障排除时,将在/var/log/maillog中保留所有与邮件相关的操作日志,其中包括关于被事件和成功事件的信息。mailq命令(postqueue -p)显示已排队的所有传出邮件的列表。若要尝试再次立即发送所有已排队的邮件,可以运行postfix flush命令(postqueue -f);否则,postfix将大约每小时尝试重新发送一次,直至邮件被接受或过期

 

 

3.重要的Postfix配置指令

  可以在/etc/postfix/main.cf文件中找到以下所有指令。

3-1 myorigin

    重写本地发布的电子邮件,使其显示为来自该域。这样有助于确保响应返回入站邮件服务器

    默认:myorigin = $myhostname

3-2 inet_interfaces

    控制Postfix侦听传入电子邮件的网络接口。如果设置为loopback-only,仅侦听127.0.0.1::1,

    如果设置为all,则侦听所有网络接口。还可以指定特定地址。

    默认:inet_interfaces = localhost

3-3 mydestination

    收到地址为这些域的电子邮件将传递至MDA,以进行本地发送。

    默认:mydestination = $myhostname, localhost.$mydomain, localhost

3-4 mynetworks

    IP地址和网络的逗号分隔列表(采用CIDR表示法)。这些地址和网络可以通过此MTA转发至任何位置,无需进一步身份验证。

    默认:mynetworks = 127.0.0.0/8

3-5 relayhost

    relayhost转发所有通过的出站邮件。通常用方括号指定,以阻止MX记录查找。

    默认:relayhost =

3-6 local_transport

    收件地址为$mydestination的邮件的发送方式。默认情况下,设置为local:$myhostname(使用Local MDA将传入电子邮件发送到/var/spool/mail中的本地邮件存储位置)

    默认:local_transport = local:$myhostname

3-7

    postconf -d 显示默认值。

    postconf -n显示不同于默认值的更改。

 

 

4.空壳邮件客户端(给服务端新建空壳,保护数据安全。)

    实际上,大多数组织不再只用一个邮件服务器来处理所有入站和出战电子邮件。相反,出于安全方面的考虑邮件服务器专门针对特定角色进行了设置,以便可以面向其具体针对的应用程序更好标准角色包括:

   1null客户端:运行本地MTA的客户端计算机,使所有电子邮件都可以转发至中央邮件服务器以进行发送,null客户端不接受任何电子邮件的本地发送。

   2)仅入站邮件服务器:在站点处理用户的所有传入电子邮件,并将之传递给MDA以发送至用户邮件存储位置的邮件服务器。在实际情况中,通常会在仅入站邮件服务器前端安装反垃圾邮件服务器或备,以过滤垃圾邮件并且仅将 正常邮件转发至入站邮件服务器。

   3)出站邮件转发:出站邮件转发(“smarthost”)接收所有出站邮件,并使用MX

录和SMTP协议将邮件转发至目标位置 。

 

 

#################环境配置

一台主机:(IP:172.25.254.1450

hostnamectl set-hostname mailinux.linux.com

 

yum install bind

systemctl  start  named

systemctl stop firewalld.service

vim /etc/resolv.conf

技术分享 

 

vim /etc/named.conf

技术分享 

 

技术分享 

 vim /etc/named.rfc1912.zones

技术分享 

 

cd  /var/named

cp -p named.localhost westos.com.zone

vim westos.com.zone

技术分享 

 

cp -p named.localhost linux.com.zone

vim linux.com.zone

技术分享 

 

另外一台主机

hostnamectl set-hostname mailwestos.westos.com

systemctl  stop  firewalld   关掉火墙

vim /etc/resolv.conf

技术分享 

 

测试

两台主机都可以作为测试端

dig -t mx linux.com

 

技术分享 

 

dig -t mx westos.com

技术分享 

 

 

####################远程发送

一台主机

 vim /etc/postfix/main.cf

 

 mydomain = linux.com          #收件方看到的发送方邮件主机名

 myorigin = $mydomain

  inet_interfaces = all             #开启接口

  #inet_interfaces = localhost   #关闭只允许本地访问

  mydestination = $myhostname, $mydomain, localhost  #

技术分享 

 

 

技术分享 

 

技术分享 

 

技术分享 

 

重启服务 systemctl restart postfix.service

 

另外一台主机

vim /etc/postfix/main.cf

配置相同,只是把所有的linux改为westos

 

重启服务 systemctl restart postfix.service

 netstat antlpe |grep master  #查看端口

测试(两台主机都可以)

lmailinux主机上测

技术分享 

 

在另外一台主机上看发送结果

技术分享 

 

 

##############################别名   

    1.vim /etc/aliasesmailinux主机)

      最后添加  root:  admin

技术分享 

    2.postalias /etc/aliases

    3.systemctl restart  postfix

4.mail admin     #可直接用别名给root发邮件

测试

mailwestos发送主机

发送

技术分享 

mailinux主机接收

技术分享 

 

 

###############################群发

 

1.vim /etc/moreusersmailinux主机)

     root

     student

2.vim /etc/aliases

     最后添加 more:  :include:/etc/moreusers

技术分享 

 3.postalias /etc/aliases

4.systemctl restart  postfix

 5.mail more

6.分别查看

   mail

   mail -u student

测试

mailwestos发送主机

技术分享 

 

 

mailinux接收主机 (rootstudent用户都接收到了邮件)

技术分享 

 

 

技术分享 

 

############################出站地址伪装

1.vim /etc/postfix/generic(mailinux主机)

技术分享 

2.postmap /etc/postfix/generic

3. postconf -e "smtp_generic_maps=hash:/etc/postfix/generic"

4.systemctl restart postfix.service

5.测试

mailinux发送端

技术分享 

 

mailwestos测试端

技术分享 

 

###########################远程发送

 

另外一台主机上操作,从mailinux主机发送一份邮件到mailwestos主机

 

 

技术分享 

 

mailwestos主机上查看

技术分享 

 

 

 

 

 

 


SMTP