首页 > 代码库 > SMTP
SMTP
SMTP基本电子邮件发送
1.电子邮件发送
客户端发送给服务器端,postfix软件提供MTA,MDA.
MTA 提供SMTP服务,接受邮件(读取DNS的MX记录)--》保存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-1Postfix由postfix 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.空壳邮件客户端(给服务端新建空壳,保护数据安全。)
实际上,大多数组织不再只用一个邮件服务器来处理所有入站和出战电子邮件。相反,出于安全方面的考虑邮件服务器专门针对特定角色进行了设置,以便可以面向其具体针对的应用程序更好标准角色包括:
1)null客户端:运行本地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/aliases(mailinux主机)
最后添加 root: admin
2.postalias /etc/aliases
3.systemctl restart postfix
4.mail admin #可直接用别名给root发邮件
测试
mailwestos发送主机
发送
mailinux主机接收
###############################群发
1.vim /etc/moreusers(mailinux主机)
root
student
2.vim /etc/aliases
最后添加 more: :include:/etc/moreusers
3.postalias /etc/aliases
4.systemctl restart postfix
5.mail more
6.分别查看
mail -u student
测试
mailwestos发送主机
mailinux接收主机 (root和student用户都接收到了邮件)
############################出站地址伪装
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