Linux中用postfix搭建邮件服务器实战详解
Linux中用postfix搭建邮件服务器实战详解
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。
Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性,因此它是免费的。
postfix的产生是为了替代传统的sendmail。相较于sendmail,postfix在速度,性能和稳定性上都更胜一筹。
现在主流邮件服务都在采用postfix. 当需要一个轻量级的的邮件服务器时,postfix也是一种选择。
常见的邮件服务器软件:
sendmail:性能好,设置复杂,适合老手
qmail:体积小260+k ,模块化。需要做二次开发,适合对邮件性能有要求的
postfix:前身是sendmail,postfix原本是sendmail里面的一个模块,红帽6默认安装好postfix
zmailer:近几年才出来的邮件
coremail:国内做的最好的商业平台,运行在linux上
---------------------
Linux搭建SMTP发送邮件服务器
1.关掉sendmail相关的所有服务,最好是直接卸载sendmail.
# service sendmail stop
# chkconfig sendmail off
# rpm -qa | grep sendmail | xargs rpm -e
2.安装postfix.
查看是否安装
# rpm -qa | grep postifx
没有安装的话,可以手动安装。
# yum -y install postfix
检查mail
# rpm -qa | grep mail
如果没安装就运行该命令
# yum -y install mailx
3.安装完成后,修改配置文件:/etc/postfix/main.cfg
修改postfix配置文件
文件位置:/etc/postfix/main.cf
修改以下参数,将xxx.com换成你的域名,如果参数前面有#注释,记得去掉
myhostname = mail.xxx.com
mydomain = xxx.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
4.修改完成后重启postifx:
# service postfix restart
---------------------
myhostname = sample.test.com ← 设置系统的主机名
mydomain = test.com ← 设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)
myorigin = $mydomain ← 将发信地址“@”后面的部分设置为域名(非系统主机名)
inet_interfaces = all ← 接受来自所有网络的请求
inet_protocols = ipv4 ← ipv4要用小写的,注释里大写的是错的
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ← 指定发给本地邮件的域名
home_mailbox = Maildir/ ← 指定用户邮箱目录
邮箱投递方式有两种:一种是Mailbox方式,即同一个用户的所有邮件内容存储为单个文件,通常保存在/var/spool/mail/目录下文件名与用户名相同(Postfix默认使用);
第二种是Maildir方式,即使用目录结构来存储用户的邮件内容每一个用户使用一个文件夹,每封邮件都作为一个独立的文件存放。Maildir方式的存取速度和效率要好一些对于管理邮件内容页更加方便。
5.设置域名DNS
在邮件发送过程中,需要把邮件地址的domain地址转化成IP地址,再去发送给对应的收件人。(DNS中的A记录和MX记录)
如何添加DNS server?
vim /etc/resolv.conf
添加如下行:
nameserver 8.8.8.8
nameserver 8.8.4.4
上面用的8.8.8.8/8.8.4.4是Google Free DNS server,当然还有很多免费的DNS server)
有些安装后自动就添加了上面的DNS配置了,不需要再添加了
6.测试一下邮件是否能够发送成功:
发送邮件到QQ或163邮箱测试效果
echo "content" | mail -s "title" xxx@163.com
163邮箱发送人显示的"root@xxx.com 注意:前面有个双引号不是单纯root

echo "content" | mail -s "title" xxx@foxmail.com
在foxmail邮箱里面收到的是:发件人:root <root@xxx.com>

注意:该配置只能是发送邮件,并不能接收邮件。
要用java调用shell命令发送邮件请看本人另外一篇博客:
Java执行shell脚本并返回结果两种方法的完整代码 - 流风,飘然的风 - 博客园
https://www.cnblogs.com/zdz8207/p/java-linux-shell.html
-------------
7.查看log,确认邮件发送状态:
Postfix邮件的log位置是:/var/log/maillog
发送成功的话,会返回250和OK,也可以去自己的邮件客户端查收。
mailq :会列出当前在postfix发送队列中的所有邮件
postsuper -d ALL:删除当前等待发送队列的所有邮件,包括发送失败的退信
查看进程:
# ps -ef | grep postfix
root 6104 1 0 01:45 ? 00:00:00 /usr/libexec/postfix/master -w
postfix 6106 6104 0 01:45 ? 00:00:00 qmgr -l -t unix -u
postfix 7946 6104 0 03:25 ? 00:00:00 pickup -l -t unix -u
root 8007 5166 0 03:27 pts/0 00:00:00 grep --color=auto postfix
============
CentOS中禁止掉邮件服务postfix:
查看状态
# service postfix status
systemctl status postfix
systemctl is-enabled postfix
禁止掉邮件服务postfix:
sudo systemctl stop postfix
sudo systemctl disable postfix
在操作之前和之后,可以查看状态:
systemctl status postfix
systemctl is-enabled postfix
================================
# systemctl is-enabled postfix
enabled
[root@alternative-unicorn-2 ~]# sudo systemctl stop postfix
[root@alternative-unicorn-2 ~]# sudo systemctl disable postfix
Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
[root@alternative-unicorn-2 ~]# systemctl is-enabled postfix
disabled
[root@alternative-unicorn-2 ~]# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Linux中用postfix搭建邮件服务器实战详解的更多相关文章
- CentOS利用postfix搭建邮件服务器
之前我用nodemailer通过163邮箱来发送邮件,不过没过几天就一直ETIMEDOUT,不知道什么原因,想着还是自己搭一个来发邮件可能靠谱点(flag?) 安装postfix CentOS 7 自 ...
- CentOS 使用PostFix搭建邮件服务器
搭建环境: 关于PostFix是什么以及邮件服务器接受发送邮件流程网上有很多文章,这里就不再写了,这里只记录如何搭建邮件服务器,使用PostFix接受发送邮件 CentOS6.8 32位,postfi ...
- Linux 网络分析必备技能:tcpdump 实战详解
大家好,我是肖邦,这是我的第 11 篇原创文章. 今天要分享的是 tcpdump,它是 Linux 系统中特别有用的网络工具,通常用于故障诊断.网络分析,功能非常的强大. 相对于其它 Linux 工具 ...
- 转-阿里云CentOS Linux服务器上用postfix搭建邮件服务器
http://www.cnblogs.com/dudu/archive/2012/12/12/linux-postfix-mailserver.html 注:本文的邮件服务器只用于发送邮件,也就是ST ...
- Python使用socketServer包搭建简易服务器过程详解
官方提供了socketserver包去方便我们快速的搭建一个服务器框架. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的 ...
- Linux命令学习笔记- vmstat命令实战详解
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
- 阿里云CentOS Linux服务器上搭建邮件服务器遇到的问题
参考文章: 阿里云CentOS Linux服务器上用postfix搭建邮件服务器 Linux系统下邮件服务器的搭建(Postfix+Dovecot) 本来想自己搭建邮件服务器,但是看到一篇资料表示阿里 ...
- Postfix+Dovecot+MySQL搭建邮件服务器
网上有很多使用Postfix搭建邮件服务器的文章,但目前貌似没有看到较为完整的一篇.本例将尝试在Ubuntu系统中使用Postfix+Dovecot+MySQL搭建邮件服务器. 说到邮件服务器,网上有 ...
- Linux 三剑客之 awk 实战详解教程
我们知道 Linux 三剑客,它们分别是:grep.sed.awk.在前边已经讲过 grep 和 sed,没看过的同学可以直接点击阅读,今天要分享的是更为强大的 awk. sed 可以实现非交互式的字 ...
随机推荐
- form分辨率
近期做项目时,遇到开发的winform在自己电脑上可以正常显示,共享到其他电脑就事儿不能显示了: [转载自:http://blog.csdn.net/lcawen88/article/details/ ...
- Element-ui中为上传组件添加表单校验
vue所依赖的Element的UI库在使用其中的upload组件时,可能很大几率会遇到这个题,需要给upload组件添加表单校验 大家这里直接看代码就可以 <el-form-item class ...
- Oracle大数据解决方案》学习笔记5——Oracle大数据机的配置、部署架构和监控-1(BDA Config, Deployment Arch, and Monitoring)
原创预见未来to50 发布于2018-12-05 16:18:48 阅读数 146 收藏 展开 这章的内容很多,有的学了. 1. Oracle大数据机——灵活和可扩展的架构 2. Hadoop集群的 ...
- go构建脚本ansible分发时出现的问题总结“non-zero return code”
背景介绍: 在Jenkins服务器配置go项目发布脚本,编译完成后,使用ansible分发到部署服务器上,然后将启动项目脚本start_coachcore.sh发布到目标服务器上,执行启动,目标服务器 ...
- 渗透测试学习 二十、 其他漏洞汇总之PHP相关漏洞
大纲: PHP相关漏洞 JSP相关漏洞 其他漏洞汇总 PHP相关漏洞 文件包含漏洞 php://input等伪协议利用 代码执行漏洞 变量覆盖漏洞 文件包含漏洞 程序开发人员一般会把重复使用的函数写到 ...
- Matplotlib基础 可视化绘图 学习笔记
简单的绘图 1.确定画布并画线 import matplotlib.pyplot as plt #静态绘图 fig = plt.figure() ax = fig.add_subplot(345) # ...
- Python股票历史数据的获取
获取股票数据的接口很多,免费的接口有新浪.网易.雅虎的API接口,收费的就是证券公司及相应的公司提供的接口.收费试用的接口一般提供的数据只是最近一年或三年的,限制比较多,除非money足够多.所以本文 ...
- linux下查看程序占用多少内存
执行 ps auxVSZ(或VSS)列 表示,程序占用了多少虚拟内存:RSS列 表示, 程序占用了多少物理内存:虚拟内存可以不用考虑,它并不占用实际物理内存. 或执行top 命令 VIRT(或VSS) ...
- easyui入门
什么是easyui! easyui=jquery+html4(用来做后台的管理界面) 1.通过layout布局 我们先把该导的包导下 然后就是JSP页面布局 2.通过tree加载菜单 先来一个实体类 ...
- 初学JavaScript正则表达式(三)
正则表达式由两种基本的字符类型组成 原义文本字符 //a abc 1 元字符 元字符是有特使含义的非字母字符 * 匹配前面的子表达式零次或多次 + 匹配前面的子表达式一次或多次 ? 匹配前面的子表达式 ...