详解Linux中Postfix邮件发送配置

在使用qq等邮件服务器厂商提供的邮件服务后,发现他们的邮件发送数量是有限制的,随着公司的业务的需求下,我们需要搭建一个邮件服务器,邮件服务器可以帮助我们在一些提醒方面和消息推送方面起到帮助,下面为大家详细讲解一下Linux中Postfix邮件发送配置。

部署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协议发送邮件命令

Linux中Postfix邮件发送配置(三)Linux中Postfix邮件发送配置(三)

SMTP状态码:

1xx:纯信息

2xx:正确

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

4xx:暂时性错误

5xx:永久性错误

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

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

Linux中Postfix邮件发送配置(三)Linux中Postfix邮件发送配置(三)

注意: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://shuyeidc.com/wp/218020.html<

(0)
管理的头像管理
上一篇2025-04-13 11:09
下一篇 2025-04-13 11:10

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注