部署DNS服务器

postfix根据域名和地址做一个MX记录,A记录,PTR记录(一般在互联网上邮件服务器都要反解,没有PTR记录会认为是垃圾邮件)

$ service iptables stop
$ chkconfig iptables on
$ setenforce 0
$ hostname mail.ywnds.com
$ echo "127.0.0.1  mail.ywnds.com" >> /etc/hosts
$ yum install bind bind-utils bind-libs

配置DNS

$ cat /etc/named.conf
options {listen-on port 53 { any; };directory       "/var/named";allow-query     { any; };recursion yes;
{
zone "ywnds.com" IN {type master;file "ywnds.com";
};
#include "/etc/named.root.key";

PS:添加和修改以上内容即可。

$ cat /var/named/ywnds.com
$TTL 1D
@       IN    SOA    ns.ywnds.com.    root.ywnds.com. (0      ; serial1D     ; refresh1H     ; retry1W     ; expire3H )   ; minimum
@       IN    NS      ns
ns      IN    A       192.168.60.10
@       IN    MX 10   smtp
smtp    IN    A       192.168.60.10
pop3    IN    A       192.168.60.10
mail    IN    A       192.168.60.10
$ service named restart
$ chkeconfig named on
postfix主配置文件添加以下内容

postfix主配置文件进行模块化了,其中:

/etc/postfix/main.cf:这个文件保存全局配置信息,所有进程都会用到,除非这些配置在 master.cf 文件中被重新设置了。/etc/postfix/master.cf:这个文件保存了额外的进程运行时环境参数,在 main.cf 文件中定义的配置可能会被本文件的配置覆盖掉。

在配置文件中所有的参数都必须顶格写不然就会当做是上一行参数的续写。另外postfix大部分配置文件都进行默认化处理了,可以使用postconf -d进行查看。

$cat /etc/postfix/main.cf
inet_protocols = all
inet_interfaces = 192.168.60.10,127.0.0.1
myhostname = mail.ywnds.com
mydomain = ywnds.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8
message_size_limit = 20485760
mailbox_size_limit = 5097152000
show_user_unknown_table_name = no
bounce_queue_lifetime = 1d
maximal_queue_lifetime = 1d
home_mailbox = Maildir/
#home_mailbox = Mailbox
#mailbox_command = /some/where/procmail

参数解释:

inet_protocols = all#指定协议。inet_interfaces = 192.168.60.10,127.0.0.1#指定postfix系统监听的网络接口。myhostname = mail.ywnds.com#指定主机名。mydomain = ywnds.com#指定域名,默认情况下postfix将myhostname的第一部分删除而作为mydomain的值。myorigin = $mydomain#用来自动补全本域用户,用来指明发件人所在的域名,即做发件地址伪装。mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain#这里定义了Postfix接收邮件时的收件人域名,即Postfix要接收哪些域名的邮件,不在此区域内的都算是中继邮件,如果不加$mydomain的话那么就不允许收本域内邮件。mynetworks = 127.0.0.0/8#根据网络地址中继,默认给你所在的整个网络中继,postfix系统根据其值来区别用户是远程的还是本地的,这里设置只给本机中继。message_size_limit = 20485760mailbox_size_limit = 5097152000show_user_unknown_table_name = no#邮件大小限制为20M,邮箱大小限制为5G。bounce_queue_lifetime = 1dmaximal_queue_lifetime = 1d#队列超时限制为1天。home_mailbox = Maildir/home_mailbox = Mailbox

# 邮箱投递方式有两种:一种是Mailbox方式,即同一个用户的所有邮件内容存储为单个文件,通常保存在/var/spool/mail/目录下文件名与用户名相同(Postfix默认使用);第二种是Maildir方式,即使用目录结构来存储用户的邮件内容每一个用户使用一个文件夹,每封邮件都作为一个独立的文件存放。Maildir方式的存取速度和效率要好一些对于管理邮件内容页更加方便。

mailbox_command = /some/where/procmail

#这里可以配置MDA使用procmail方式(postfix默认的投递代理)。

注意问题

1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;

2、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;

3、每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;

4、如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;

SMTP协议发送邮件命令

SMTP状态码:1xx:纯信息2xx:正确3xx:上一步操作尚未完成,需要继续补充4xx:暂时性错误5xx:永久性错误

SMTP协议非常简单,简单到允许任何用户发送邮件同时也允许发送到任何用户。在发件人(MAIL FROM)哪里可以随意指定地址。但是收件人(RCPT TO)可以发给本域内用户也可以通过中继发送给其他域用户。如163或QQ邮箱。但是一般公网邮箱都是需要进行发件人域名反向解析,如果能解析就接收邮件,不能解析就丢失邮件。如果全部解析就有点太苛刻了,也可以针对部分域名进行解析。不信你可以把发件人改为xxx@taobao.com试试你的收件人还能不能收到邮件。(如果输入错误信息可以按Ctrl加退格键即可)

Postfix默认允许本机和本机所在网络的所有主机都允许中继,所以可以发给其他域邮件。但是由于我们上面是用来了指令“mynetworks = 127.0.0.0/8”表示只给本机中继。所以其他主机是无法发送邮件给其他域的,如下图:

注意:127.0.0.1跟192.168.60.10虽然都能访问本机,但它们两的意义不同,127.0.0.1是在本机内部,而192.168.60.10是通过网卡的。另外查看邮件服务器的日志信息在/var/log/maillog

创建两个邮箱测试用户并给密码(密码也同用户名)
$ useradd -s /sbin/nologin openstack
$ useradd -s /sbin/nologin hadoop
邮件别名

邮件别名可以把发送给一个用户的邮件转给另外一个用户,可以在/etc/aliases文件中可以定义用户别名格式如下:

Openstack:  root

表示所有发给Openstack用户的邮件,都发送给root用户。但是Postfix不会使用这个文件因为在文本文件中检索太慢了,所以需要通过hash编码转换为另外一种格式/etc/aliases.db(postfix支持hash格式),而newaliases命令就可以进行它们之间的相互转码的,直接执行命令newaliases即可。

邮件队列

Postfix 维护两个队列:未决邮件队列(pending mails queue)和等待邮件队列(deferred mail queue)。等待队列包含了暂时发送失败、需要重新发送的邮件,Postfix 会定期重发(默认5分钟,可自定义设置)。

其实 Postfix 维护5个队列:

输入队列,邮件进入Postfix系统的第一站;活动队列,qmgr 将输入队列的邮件移到活动队列;等待队列,保存暂时不能发送出去的邮件;故障队列,保存受损或无法解读的邮件;保留队列,将邮件无限期留在 Postfix 队列系统中;列出邮件队列$ postqueue -p
删除所有队列邮件$ postsuper -d ALL deferred
删除所有邮件stsuper -d ALL

PS:发送一份邮件一般也可使用tail /var/log/maillog查看邮件队列日志信息,如“status=sent”表示邮件发送成功,而“status=deferred”表示邮件在等待队列。

转载于:https://www.cnblogs.com/linuxprobe-sarah/p/10244751.html

Linux中Postfix邮件发送配置(三)相关推荐

  1. postfix mysql_Linux中Postfix邮件安装配置(二)

    原标题:Linux中Postfix邮件安装配置(二) 本套邮件系统的搭建,从如何发邮件到收邮件到认证到虚拟用户虚拟域以及反病毒和反垃圾邮件等都有详细的介绍.在搭建过程中必须的参数解释以及原理都有告诉, ...

  2. sybase的sysprocesses中的hostname显示不全_Linux中Postfix邮件认证配置(五)

    Postfix+Dovecot+Sasl工作原理 1.A用户使用MUA客户端借助smtp协议登陆smtpd服务器,需要先进行用户和密码认证,而SMTPD服务器端支持sasl认证,例如有一个sasl客户 ...

  3. CentOS7.4中Postfix邮件服务器的搭建(一)-----环境配置及简单搭建

    CentOS7.4中Postfix邮件服务器的搭建(一)-----环境配置及简单搭建 实验内容: 1. 初始环境的优化 2. DNS服务器的搭建和postfix域名解析 3. Postfix服务器安装 ...

  4. Linux中DHCP原理与配置

    Linux中DHCP原理与配置 DHCP服务 DHCP服务 使用DHCP的好处 DHCP分配方式 DHCP的IP地址自动获取工作原理 DHCP的租约过程 1.客户端在网络中搜索服务器 2.服务器向客户 ...

  5. linux中python编译器的配置_linux下配置python3详解

    一:安装依赖环境 1.1:首先安装gcc编译器,gcc有些系统版本已经默认安装,通过  gcc --version  查看,没安装的先安装gcc,yum -y install gcc 1.2:输入命令 ...

  6. exchange无法收发邮件_SpringBoot2.x系列教程69--SpringBoot中整合邮件发送

    SpringBoot2.x系列教程69--SpringBoot中整合邮件发送 作者:一一哥 注: 本文案例以QQ邮箱发送的实现为例! 一. 邮件发送概述 1. 概述 在Spring框架中提供了一个Ja ...

  7. linux 使用了哪个存储阵列卡,Linux中RAID概述及配置实验

    Linux中RAID概述及配置实验 一.RAID磁盘阵列概述 RAID 0 (条带化存储) RAID 1(镜像存储) RAID 5 RAID 6 RAID 1+0(先做镜象,再做条带) RAID 0+ ...

  8. centos6.5 php5.2,Linux中PHP安装与配置(CentOS-6.5:php-5.2.13)

    1 PHP简介     PHP(PHP: Hypertext Preprocessor的缩写,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Per ...

  9. Linux中创建Daemon进程的三种方法

    Linux中创建Daemon进程的三种方法 什么是daemon进程? Unix/Linux中的daemon进程类似于Windows中的后台服务进程,一直在后台运行运行,例如http服务进程nginx, ...

最新文章

  1. 修改exe图标,加入版本号
  2. java后端 返回json_Java后端返回Json数据
  3. linux下删除带特殊符号文件的方法
  4. logstash解析系统的messages日志
  5. red hat linux FTP配置
  6. MVC --.Routing
  7. 响应式网页设计代码_消除响应式网站建设设计中的缺陷
  8. 集训04-06 (c++实现)
  9. 智商145!比利时神童9岁读完大学,成史上最年轻大学毕业生
  10. 【逻辑与计算理论】Lambda 演算——开篇
  11. 手把手教你逼走员工的23种套路,大写的服!
  12. 自定义Gradle Plugin
  13. java 创建restful_使用Java创建RESTful Web Service
  14. leetcode 93.复原IP地址 dfs解法
  15. LoadRunner 12 试用
  16. ailed to send crash report due to a network error: SocketException: OS Error: 信号灯超时时间已到 , errno = 12
  17. 期刊如何不分栏添加项目来源
  18. Jenkins测试报告邮件通知模板(转载)
  19. 计算机硬件系统的五大基本组成部分分别是,计算机的硬件系统由几大部分构成,分别包括哪些硬件,基本功能是什么?...
  20. 面试题27-二叉树的镜像

热门文章

  1. HTML5事件——contextmenu 隐藏鼠标右键菜单
  2. canvas.translate(x,y)
  3. 好用的ToolStripManager类
  4. 自己收藏的symantec 需要的拿走
  5. 浮小麦升浮之气的本质
  6. linux新建普通用户
  7. 特征名类似情况下的列表的快速书写
  8. sklearn中knn的各种用法总结
  9. 网易云出现undefined symbol: fribidi_get_par_embedding_levels_ex
  10. C++自定义函数实现灰度图转化