`

MTA(Mail Transfer Agent) Postfix

    博客分类:
  • mail
阅读更多

 

64位 CentOS 6.4 Linux系统 搭建 Postfix 邮件服务

需求说明

这次想要做的功能,只是为了给客户发送订阅邮件,也就是只有发送邮件,没有接收邮件的功能。如果不需要接收邮件的功能,尽量关闭接收外来邮件功能,危害多多。比如,大量垃圾邮件的涌入会爆满你的磁盘,安全方面也会存在隐患。

以前发送邮件一直都在用 Sendmail 服务,最近看到 Postfix,研究了下,发现比较 Sendmail 安装配置简单,而且效率非常高。公司最近也在开发邮件营销的功能,所以细心研究了下 Postfix 的安装和配置。

Postfix 介绍

postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真实一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。

Postfix 邮件服务相对于 Sendmail 邮件服务而言,效率更高。Postfix 邮件系统完全兼容 Sendmail,下面来具体说说它的优点:

1. Postfix 是免费的。因为它试图让更多的网络用户使用它,所以它是免费的。

2. Postfix 比 Sendmail 更快,官方说大约可以快上3倍,本人没有测试过,一台运行 Postfix 的台式 PC 机,每天可以收发上百万封邮件。(这也是本人选择它的目的)

3. 兼容性好,Postfix 与 Sendmail 完全兼容,这样 Sendmail 用户就可以很容易的把服务迁移到 Postfix 上。

4. Postfix 的健壮性。Postfix 被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,Postfix 会自动减少运行进程的数目。当处理的邮件数目增长时,Postfix 运行的进程不会跟着增加。

5. Postfix 的灵活性。Postfix 是由超过一打的小程序组成的,每个程序完成特定的功能。你可以通过配置文件设置每个运行程序的参数。

6. Postfix 的安全性更高。Postfix 具有多层防御结构,可以有效地抵御恶意入侵者。如大多数的 Postfix 程序可以运行在较低的权限之下,不可以通过网络访问与安全性相关的本地投递程序等。(使用较低权限的用户执行程序会大大提高系统的安全性)

添加MX记录

由于MX记录添加后,可能生效要等待一段时间(通常为数分钟或数十分钟,也可能马上生效),所以在安装配置前,我们首先为域名添加MX记录。添加方法也会因域名ISP的不同而不同,但大致信息如下:

主机记录 记录类型 记录值 MX优先级 TTL
mail A 192.168.1.1 - 600
@ MX mail.example.com. 10 600

mail为别名,10为优先度。这个别名指向服务器的IP地址。(如有疑问或需要帮忙请直接留言求助)

DNSPOD设置示例:

忙碌的松鼠-64位 CentOS 6.4 Linux系统 搭建 Postfix 邮件服务

忙碌的松鼠-64位 CentOS 6.4 Linux系统 搭建 Postfix 邮件服务

确认MX记录的添加是否生效的方法:

命令如下:

1 [root@example.com ~]# host example.com
2 example.com has address 192.168.1.1
3 example.com mail is handled by 10 mail.example.com.
4 [root@example.com ~]#

Postfix 安装

1. CentOS 6.0 以上版本 默认已经安装 Postfix服务 并随着系统的启动而启动。(CentOS 6.0 以上版本请直接略过本节,直接查看如何配置)

2. CentOS 6.0 以下或RedHat的系统,它默认安装及启动的是 Sendmail 服务,这里我们要先关闭它,并配置为不随着系统的启动而启动,命令如下:

1 service sendmail stop
2 chkconfig sendmail off

3. yum 安装 Postfix 软件包,命令如下:

1 yum -y install postfix

安装完成后我们可以用命令查看其相关路径和文件,命令如下:

1 rpm -ql postfix

4. 配置 Postfix 的相关文件,它的主要配置文件为 /etc/postfix/mail.cf。
修改任何配置文件前,请先备份一下,以防修改失败后无法恢复。(这是个好习惯哦)

1 # 备份配置文件
2 cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
1 vi /etc/postfix/main.cf

设置运行 Postfix 服务的邮件主机的主机名、域名,如下所示:

1 # main.cf 第77行附近
2 myhostname = mail.example.com
1 # main.cf 第85行附近
2 mydomain = example.com

设置由本机寄出的邮件所使用的域名或主机名称,如下所示:

1 # main.cf 第102行附近,这里使用的是 mydomain 的值,也可以自己设置值,如:myrogin = example.com
2 myorigin = $mydomain

设置 Postfix 服务监听的网络接口,如下所示:

1 # main.cf 第119行附近,填写 localhost,只允许通过 localhost 或 127.0.0.1 发送
2 # 如果邮件服务器是专门为其它服务器服务的,请直接填写 all,如
3 # inet_interfaces = all
4 inet_interfaces = localhost

设置可接收邮件的主机名称或域名,如下所示:

1 # main.cf 第167行附近,我的需求是只发送邮件,不接收外来邮件,所以填写 localhost
2 mydestination = localhost

设置可转发哪些网络的邮件,如下所示:

1 # main.cf 第270行附近,主转发本机的
2 mynetworks = 127.0.0.0/8, hash:/etc/postfix/access

设置可转发哪些网域(当然这个也必须能由DNS正常解析才行)的邮件,此选项针对上下级MTA而言,区别于 Postfix 的 access,一般选择默认选项即可,如下所示:

1 # main.cf 第301行附近
2 relay_domains = $mydestination

5. 配置完成后,我们检查一下 Postfix 语法,然后启动它。
用以下命令检查 Postfix 服务的语法:

1 /usr/sbin/postconf -n

启动 Postfix 邮件,并配置为自启动服务:

1 service postfix start
2 chkconfig postfix on

测试发送邮件

简单的用命令行的方式,给自己发送一封邮件,命令如下:

1 # example@126.com 换成自己的邮箱地址
2 echo 'test' | mail -s 'test' example@126.com

效果图:

忙碌的松鼠-64位 CentOS 6.4 Linux系统 搭建 Postfix 邮件服务

忙碌的松鼠-64位 CentOS 6.4 Linux系统 搭建 Postfix 邮件服务

稍后,我会发布关于 配置 Postfix 启用 SMTP 的认证机制

 

64位 CentOS 6.4 Linux系统配置 Postfix 启用 SMTP 认证

Postfix 的安装

本博客已经有 Postfix 的安装教程,在此就不再重复。
Linux 下安装 Postfix 教程,请看:
www.gretheer.com/2013/06/64-centos-linux-postfix-email-smtp.html

配置 Postfix 启用 SMTP 认证

1. 安装 cyrus-sasl 软件包,它牵涉的依赖关系包比较多,命令如下:

1 yum -y install cyrus-sasl*

命令的结果显示,如下:

01 Loaded plugins: fastestmirror, security
02 Loading mirror speeds from cached hostfile
03  * epel: ftp.kddilabs.jp
04 Setting up Install Process
05 Package cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64 already installed and latest version
06 Package cyrus-sasl-ntlm-2.1.23-13.el6_3.1.x86_64 already installed and latest version
07 Package cyrus-sasl-plain-2.1.23-13.el6_3.1.x86_64 already installed and latest version
08 Package cyrus-sasl-md5-2.1.23-13.el6_3.1.x86_64 already installed and latest version
09 Package cyrus-sasl-2.1.23-13.el6_3.1.x86_64 already installed and latest version
10 Package cyrus-sasl-devel-2.1.23-13.el6_3.1.x86_64 already installed and latest version
11 Package cyrus-sasl-ldap-2.1.23-13.el6_3.1.x86_64 already installed and latest version
12 Package cyrus-sasl-sql-2.1.23-13.el6_3.1.x86_64 already installed and latest version
13 Package cyrus-sasl-gssapi-2.1.23-13.el6_3.1.x86_64 already installed and latest version
14 Nothing to do

因为我已经安装过了,所以显示的是 Nothing to do,你第一次安装,会有几个 Complete。

我们可以用以下命令启动 saslauthd 服务,并配置成自启动服务:

1 service saslauthd start
2 chkconfig saslauthd on

2. 添加下列内容到主配置文件,让 Postfix 启用 SMTP 认证,代码如下:

1 # 把此代码添加到 /etc/postfix/main.cf 最后
2 # smtp
3 smtpd_sasl_auth_enable = yes
4 smtpd_sasl_local_domain = ''
5 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
6 broken_sasl_auth_clients = yes
7 smtpd_client_restrictions = permit_sasl_authenticated
8 smtpd_sasl_security_options = noanonymous

完成以上步骤后,全新加载配置,命令如下:

1 postfix reload

测试

使用 phpmailer 测试 Postfix 的 SMTP 是否有效,代码如下:

phpmailer 请自行下载,下载地址: github.com/Synchro/PHPMailer

PHP 测试代码:

test.php

01 <?php
02 set_time_limit (0);
03  
04 require_once('./class.phpmailer.php');
05  
06 // 测试发送附件专用
07 $tmp_file '/tmp/test.jpg';
08  
09 $mail new PHPMailer(true);
10  
11 // 是否为 SMTP 认证
12 $mail->IsSMTP();
13  
14 try {
15     // 服务器 IP,程序在本地使用,所以填写 127.0.0.1,
16     $mail->Host       = "127.0.0.1";
17     // 调试模式关闭
18     $mail->SMTPDebug  = 0;
19     // 是否开户 SMTP 认证
20     $mail->SMTPAuth   = true;
21     // SMTP 认证用户名,此处填写系统用户名,可以专门创建一个普通用户用于发送邮件
22     $mail->Username   = "username";
23     // SMTP 认证用户密码,此处填写与系统用户名对应的系统用户密码
24     $mail->Password   = 'password';
25     // 设置邮件内容字符集,防止中文乱码
26     $mail->CharSet = 'UTF-8';
27     // 接收邮件地址
28     $mail->AddAddress('abcdef@126.com''忙碌的松鼠');
29     // 设置我的邮件地址
30     $mail->SetFrom('info@example.com''忙碌的松鼠');
31     // 邮件标题
32     $mail->Subject = '欢迎大家关注 忙碌的松鼠';
33     // 邮件内容,可以是HTML代码
34     $mail->MsgHTML('欢迎大家关注 忙碌的松鼠 博客,博客地址:http;//www.gretheer.com');
35     // 添加附件
36     $mail->AddAttachment($tmp_file);
37     // 发送
38     $mail->Send();
39 } catch (Exception $e) {
40     // 报错信息
41     echo $mail->ErrorInfo;
42 }
43 ?>

注意:
1. 可以在命令行下测试,最好使用普通用户测试。

1 php test.php

2. 用浏览器访问PHP文件测试时,如果没有接收到邮件,看是否是PHP文件权限问题,包括PHP文件内,include,require 等包含的文件的权限。

64位 CentOS 6.4 Linux系统 搭建 Postfix 邮件服务(虚拟用户版)

2013.06.24 写过一篇博文,介绍 Linux 下 Postfix 的安装和配置 SMTP 认证。

安装 postfix:www.gretheer.com/2013/06/64-centos-linux-postfix-email-smtp.html

使 postfix 支持 smtp 认证:www.gretheer.com/2013/06/64-centos-linux-postfix-smtp-auth.html

今天又查阅了相关资料,找到一个可以自己创建邮箱账号的方法,这样我们就不用再为每一个邮件账号创建系统账号了,管理更方便,安全性也提高了。

按照上面的链接,安装完成 postfix 和 smtp 认证后,直接看这里的配置就可以了。

配置 SMTP 认证(虚拟用户版,无需创建系统用户)

1. 修改 smtpd.conf 配置文件

1 vim /etc/sasl2/smtpd.conf

修改以下属性为:

1 pwcheck_method: auxprop

2. 修改 saslauthd 认证方式

1 vim /etc/sysconfig/saslauthd
1 #MECH=pam # 注释掉该行,默认是开启的
2  
3 FLAGS=sasldb # 修改该行的值,默认为空

3. 设置 sasldb2 认证库的权限

1 chgrp postfix /etc/sasldb2 # 设置 认证库的所在组,不设置,则程序无法调用
2  
3 chmod 640 /etc/sasldb2   # 更改sasl认证库读写权限

4. 添加 sasl 认证用户

将 wica 添加到 gretheer.com 域名下

1 saslpasswd2 -u gretheer.com -c wica
2 # 回车后,会提示输入密码,按照提示输入密码并重复密码。

5. 添加防火墙设置

1 iptables -A INPUT -p tcp --dport 25 -j ACCEPT
2  
3 service iptables save

6. 设置开机启动

1 service postfix start # 启动 postfix
2  
3 ervice saslauthd start # 启动 sasl认证
1 chkconfig postfix on # 设置 postfix 开机启动
2  
3 chkconfig saslauthd on # 设置 sasl 认证开机启动

PHP 发送邮件示例

使用 phpmailer 测试 Postfix 的 SMTP 是否有效,代码如下:

phpmailer 请自行下载,下载地址: github.com/Synchro/PHPMailer

01 <?php
02 set_time_limit (0);
03  
04 require_once('./class.phpmailer.php');
05  
06 // 测试发送附件专用
07 $tmp_file '/tmp/test.jpg';
08  
09 $mail new PHPMailer(true);
10  
11 // 是否为 SMTP 认证
12 $mail->IsSMTP();
13  
14 try {
15     // 服务器 IP 或 域名,最好可以解析一个二级域名,如 smtp.gretheer.com,
16     $mail->Host       = "smtp.gretheer.com";
17     // 调试模式关闭
18     $mail->SMTPDebug  = 0;
19     // 是否开户 SMTP 认证
20     $mail->SMTPAuth   = true;
21     // SMTP 认证用户名,此处填写第3步生成的账号名,不懂的请看下面注意项。
22     $mail->Username   = "wica@gretheer.com";
23     // SMTP 认证用户密码,此处填写密码
24     $mail->Password   = 'password';
25     // 设置邮件内容字符集,防止中文乱码
26     $mail->CharSet = 'UTF-8';
27     // 接收邮件地址
28     $mail->AddAddress('abcdef@126.com''忙碌的松鼠');
29     // 设置我的邮件地址
30     $mail->SetFrom('info@example.com''忙碌的松鼠');
31     // 邮件标题
32     $mail->Subject = '欢迎大家关注 忙碌的松鼠';
33     // 邮件内容,可以是HTML代码
34     $mail->MsgHTML('欢迎大家关注 忙碌的松鼠 博客,博客地址:http;//www.gretheer.com');
35     // 添加附件
36     $mail->AddAttachment($tmp_file);
37     // 发送
38     $mail->Send();
39 } catch (Exception $e) {
40     // 报错信息
41     echo $mail->ErrorInfo;
42 }
43 ?>

注意事项

1. 第3步如果找不到 /etc/sasldb2 文件,请先执行第4步,添加完用户后,会自动生成该文件,然后再回头执行第3步。

2. 生成的账号为 wica@gretheer.com 形式,不再是系统用户。同以上第3步的 账号名+@+域名

分享到:
评论

相关推荐

    mail_postfix

    Postfix是一款在Linux环境下广泛使用的MTA(Mail Transfer Agent)软件,由Wietse Venema开发。它主要的功能是负责发送、接收以及转发电子邮件。Postfix因其高度的安全性、稳定性和灵活性而备受青睐,在企业级环境中...

    WebMail邮件服务器搭建:postfix+dovecot+roundcube (原理加全操作-详细)

    邮件服务器可以分为三个部分:Mail User Agent(MUA)、Mail Transfer Agent(MTA)和Mail Delivery Agent(MDA)。MUA 是用户使用的客户端软件,例如Foxmail、Outlook等;MTA 是邮件服务器,负责将邮件从发送者传递...

    Python库 | postfix_mta_sts_resolver-0.7.5-py3-none-any.whl

    Python库`postfix_mta_sts_resolver`是一个用于处理MTA-STS(Mail Transfer Agent Strict Transport Security)协议的解析器,适用于Python 3环境。MTA-STS是互联网安全标准,旨在增强SMTP邮件传递过程中的安全性,...

    利用Postfix搭建企业邮件系统

    ##### MTA (Mail Transfer Agent) —— 邮件传输代理 MTA负责邮件的传输过程,即邮件从发送者到接收者的整个路径。MTA的主要功能包括: - **收受信件**:通过SMTP协议接收来自客户端或其他MTA的邮件。 - **转递信件*...

    postfix+dovecot

    首先,Postfix是MTA(Mail Transfer Agent),它负责接收、发送和转发电子邮件。在Linux发行版中,如CentOS,Postfix通常作为默认的MTA。安装Postfix的步骤如下: 1. 更新系统软件包: ``` sudo yum update ``` 2....

    postfix-2.9-20111113.tar.gz

    Postfix,由Wietse Venema在IBM的GPL(GNU General Public License)协议下精心打造的一款强大的邮件传输代理(MTA,Mail Transfer Agent),是互联网通信中不可或缺的组件。这款软件以其高效、稳定和安全的特性,在...

    Linux邮件服务器软件比较

    当前,运行在Linux环境下免费的 邮件服务器,或者称为MTA(Mail Transfer Agent)有若干种选择,比较常见的有Sendmail、Qmail、Postfix、 exim及Zmailer等等。本文希望通过对几种影响相对来说比较大的主流Linux环境下...

    3分钟安装配置Postfix邮件服务器

    2. **MTA (Mail Transfer Agent)**:邮件传输代理,负责在不同邮件服务器间传递邮件,Sendmail和Postfix都是常见的MTA。 3. **MDA (Mail Delivery Agent)**:邮件投递代理,负责将收到的邮件存储在用户的邮箱中。 #...

    Linux网络服务器配置与管理16.ppt.pptx

    电子邮件服务是基于C/S模式的,对一个完整的电子邮件系统而言,它主要由MUA(Mail User Agent)、MTA(Mail Transfer Agent)和MDA(Mail Delivery Agent)三部分组成。 * MUA:Mail User Agent,即邮件用户代理。...

    postfix-2.6.19.tar.gz

    MTA(Mail Transfer Agent)是负责在互联网上传递电子邮件的软件,Postfix就是这样的一个系统。它接收来自本地用户的邮件,并通过SMTP(Simple Mail Transfer Protocol)将这些邮件转发到目的地,或者根据配置的规则...

    树莓派安装postfix邮件服务1

    Postfix是一款开源的Mail Transfer Agent(MTA),它负责处理SMTP协议下的电子邮件发送和接收。MTA是邮件服务器的核心组件,负责在互联网上路由邮件。Postfix以其稳定性、安全性和效率而闻名,适合在各种规模的系统...

    postfix-2.8.0加补丁

    - **功能**:Postfix处理SMTP(Simple Mail Transfer Protocol)通信,负责接收来自互联网或其他服务器的邮件,并将邮件转发到本地用户或外部目的地。 - **设计原则**:Postfix遵循“安全性、可扩展性、易管理性和...

    postfix-2.6.0.tar.gz

    1. **MTA的基本概念**:MTA,全称为Mail Transfer Agent,是电子邮件系统中的核心组件,负责接收、处理和转发邮件。Postfix作为一款MTA,其主要任务是确保邮件能够正确地从发送方传递到接收方。 2. **Postfix的模块...

    Postfix反垃圾邮件技术

    Postfix是一种广泛使用的Mail Transfer Agent (MTA),以其高效、安全和反垃圾邮件能力而闻名。在Postfix中,反垃圾邮件技术主要体现在邮件数据发送前的过滤,也就是SMTP会话中的数据前过滤阶段。这一过程包括四个子...

    postfix main.cf配置文档 中文说明

    Postfix 是一个功能强大且灵活的邮件传输代理(Mail Transfer Agent,MTA),其配置文件 main.cf 是其核心配置文件。下面是一个详细的 postfix main.cf 配置文档中文说明,涵盖了邮件服务器的基本设置、安全设置、...

    postfix docs

    - **MTA(Mail Transfer Agent)**:邮件传输代理,负责邮件的发送和接收。常见的MTA包括Sendmail、Postfix、Qmail等。 - **MDA(Mail Delivery Agent)**:邮件投递代理,负责将接收到的邮件传递到用户的邮箱中。...

Global site tag (gtag.js) - Google Analytics