Postfix【3】发送配置

文章目录

一、基础配置


  • DNS 解析
    在互联网上邮件服务器都要反解,没有PTR记录会认为是垃圾邮件。
  • 主机名
    $ vim /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=mail.baofeng.com
    $ hostname mail.baofeng.com
    

二、主配置文件


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

  • /etc/postfix/main.cf
    保存全局配置信息,所有进程都会用到,除非这些配置在 master.cf 文件中被重新设置了。

  • /etc/postfix/master.cf
    保存了额外的进程运行时环境参数,在 main.cf 文件中定义的配置可能会被本文件的配置覆盖掉。

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

$ vim /etc/postfix/main.cf
//指定协议;
inet_protocols = all

//指定postfix系统监听的网络接口;
inet_interfaces = 192.168.60.10,127.0.0.1	

//指定主机名
myhostname = mail.baofeng.com	

//指定域名,postfix 默认会将myhostname 的第一部分删除而作为 mydomain 的值。
mydomain = baofeng.com	

//用来自动补全本域用户,用来指明发件人所在的域名,即做发件地址伪装。
myorigin = $mydomain	

//定义了Postfix接收邮件时的收件人域名,即Postfix要接收哪些域名的邮件,不在此区域内的都算是中继邮件,如果不加 $mydomain 的话那么就不允许收本域内邮件。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain	

//根据网络地址中继,默认给你所在的整个网络中继,postfix 系统根据其值来区别用户是远程的还是本地的,这里设置只给本机中继。
mynetworks = 127.0.0.0/8	

//邮件大小限制为20M,邮箱大小限制为5G。
message_size_limit = 20485760
mailbox_size_limit = 5097152000	

show_user_unknown_table_name = no	

//队列超时限制为1天。
bounce_queue_lifetime = 1d
maximal_queue_lifetime = 1d	

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

//配置MDA使用procmail方式(postfix默认的投递代理)
#mailbox_command = /some/where/procmail
  • 注意问题
  1. 在postfix的配置文件中,参数行和注释行是不能处在同一行中的;

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

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

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

三、SMTP协议发送邮件命令


  • 创建两个邮箱测试用户并设置密码(密码=用户名)

    $ useradd -s /sbin/nologin openstack
    $ useradd -s /sbin/nologin hadoop
    

    Postfix【3】发送配置

  • SMTP状态码

    1xx:纯信息

    2xx:正确

    3xx:上一步操作尚未完成,需要继续补充

    4xx:暂时性错误

    5xx:永久性错误

    Postfix 默认允许本机和本机所在网络的所有主机都允许中继,所以可以发给其他域邮件。但是由于我们上面是用来了指令“mynetworks = 127.0.0.0/8”表示只给本机中继。所以其他主机是无法发送邮件给其他域的,如下图:
    Postfix【3】发送配置
    注意:127.0.0.1跟192.168.60.10虽然都能访问本机,但它们两的意义不同,127.0.0.1是在本机内部,而192.168.60.10是通过网卡的。另外查看邮件服务器的日志信息在 /var/log/maillog。

四、邮件别名


邮件别名可以把发送给一个用户的邮件转给另外一个用户,可以在/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”表示邮件在等待队列。

上一篇:How to change default root@ email address linux / postfix / centos?


下一篇:AEC传统算法学习