部署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 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; 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 = 20485760

mailbox_size_limit = 5097152000

show_user_unknown_table_name = no

#邮件大小限制为20M,邮箱大小限制为5G。

bounce_queue_lifetime = 1d

maximal_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”表示邮件在等待队列。

Linux中Postfix邮件发送配置(三)的更多相关文章

  1. Linux中Postfix邮件认证配置(五)

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

  2. Linux中Postfix邮件安装配置(二)

    本套邮件系统的搭建,从如何发邮件到收邮件到认证到虚拟用户虚拟域以及反病毒和反垃圾邮件等都有详细的介绍.在搭建过程中必须的参数解释以及原理都有告诉,这样才能更好地理解邮件系统. 卸载自带postfix ...

  3. Linux中Postfix邮件WebMail配置(七)

    Extmail Extmail 是一个以perl语言编写,面向大容量/ISP级应用,免费的高性能Webmail软件,主要包括ExtMail.Extman两个部分的程序套件.ExtMail套件用于提供从 ...

  4. Linux中Postfix邮件接收配置(四)

    Dovecot介绍 MRA邮件取回代理也有很多如courier-imap,cyrus-imap和dovecot这三个个工具,下面重点介绍Dovecot: 1.高安全性.据 Dovecot 的作者声称, ...

  5. Linux中Postfix邮件原理介绍(一)

    邮件相关协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议, 工作在TCP的25端口.它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 ...

  6. Linux中postfix邮件服务器的搭建

    postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在 ...

  7. Linux中的邮件发送

    这里写出两种常用的邮件发送方式: mail: 需要安装sendmail和postfix两个服务 编辑/etc/mail.rc,在最后添加 set from=scottcho@126.com smtp= ...

  8. Linux中Postfix邮件安装Maildrop(八)

    Postfix使用maildrop投递邮件 Maildrop是本地邮件投递代理(MDA), 支持过滤(/etc/maildroprc).投递和磁盘限额(Quota)功能. Maildrop是一个使用C ...

  9. Linux中Nginx安装与配置详解

    转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...

随机推荐

  1. vue---指令怎么写

    我们在考虑做一些功能性的封装的时候,我们会考虑使用vue的指令来做,那么指令应该怎么写: 具体参考: https://cn.vuejs.org/v2/guide/custom-directive.ht ...

  2. 记一次centos7内核可能意外丢失(测试直接干掉)恢复方法

    本次是虚拟机装的centos7的内核不知原因以外丢失造成无法开机,开机显示找不到内核! 恢复方法: 挂载新的ISO文件,然后进入bios选择dvd启动. 启动后进入Troublesshooting,然 ...

  3. 安装和卸载windows服务程序

    安装window服务 安装命令:InstallUtil.exe MyServiceLog.exe InstallUtil存在路径为:C:\WINDOWS\Microsoft.NET\Framework ...

  4. Freemarker 基本数据类型

    一 数据类型简介 freemarker 模板中的数据类型由如下几种: 1. 布尔型:等价于java中的boolean类型, 不同的是不能直接输出,可以转换成字符串再输出 2. 日期型:等价于java中 ...

  5. wampserver 权限配置

    当你按照网上以前介绍的wamp配制方法,安装好wamp后.本地的locallhost和127.0.0.1一切都正常,他们都能对你本地的网页文件进行访问.这里说一说,手机借助wamp访问本地文件的方法. ...

  6. shuffle

    <?php function genArr($len) { $arr = array(); $len = $len; for ($w=1; $w < $len ; $w++) { $arr ...

  7. php之setcookie

    注意在任何发送请求头之前不能有输出,不然会获取不到header头 setcookie(key,value, expires, 'path', domain); 在发送cookie时,会自动把cooki ...

  8. kafka配置文件注解

    若advertised.host.name的值是aa,则kafka发布的服务名也要是aa kafka log.cleanup.policy=delete 日志清理策略 log.retention.ho ...

  9. php 实现 二维码 扫描登录

    本人简单实现的示例,使用任意二维码工具打开二维码对应链接 http://www.54php.cn/demo1/scan 原理介绍: 第一步:访问登录页面,生成唯一key,例如MkhjDFL=,并且将此 ...

  10. mysql数据库的相关练习题及答案

    表结构示意图: 表结构创建语句: class表创建语句 create table ) not null)engine=innodb default charset=utf8; student表创建语句 ...