首页 >邮件操作 > 内容

十六、Postfix邮件系统

2023年1月9日 21:22

Postfix邮件系统(一)

实验环境:

Linux:postfix服务器

(topsec.com:192.168.120.120 topedu.com:192.168.120.110)

2003或2008:验证postfix邮件系统安装完成

具体步骤:

1、基本配置

(1)配置IP

(2)关闭防火墙

(3)开启ftp

(4)挂载,配置yum源

(5)查看是否安装sendmail,如没有则下载

(6)查看是否安装postfix(此处必须卸载postfix)

2、准备工作

为了避免发生端口冲突、程序冲突等现象,应将系统自带的sendmail服务停用,并将默认启动状态设为关闭。由于Postfix系统兼容并沿用了Sendmail的部分设置,因此建议保留Sendmail软件包(必须安装sendmail软件包),而不是直接卸载。

除此以外,因在下一章中需要Postfix支持SASL认证(通过软件包cyrus-sasl),所以应确认已安装好相关软件包。(安装黑框部分就可以)

rpm -qa | grep cyrus

3、源码编译及安装

2)创建运行组、用户

为了加强邮件服务的权限控制,需要创建专门的运行组账号postfixpostdrop,以及用户账号postfix。运行用户不需要直接登录到系统,也无需创建宿主文件夹。

查看是否建立postfix(用户)和post(组) (已建立则不用进行黑色框运行部分)

Gpasswd -a postfix postfix

Gpasswd -a postfix postdrop

注:本部分按情况运行

2)解包本部分安装包在root下

将下载的postfix源码包解压,并切换到展开后的源码目录。

tar xzvf postfix-2.11.3.tar.gz

3)配置

Postfix软件包的配置步骤使用“make makefiles”进行,具体配置选项可以参考源码目录中README_FILES/文件下的说明文件。例如,若要使Postfix支持发信认证,可参考文件SASL_README中的相关信息。

Make makefiles ‘CCARGS=-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl

AUXLIBS=-I/usr/lib/sasl2 -lsasl2

其中,编译参数CCARGS和AUXLIBS的作用如下:

  • CCARGS参数:为编译器提供额外的扩展参数。例如,启用SASL认证,并指出cyrus-sasl认证程序的头文件位于/usr/include/sasl/。
  • AUXLIBS参数:为编译器指出位于标准位置之外的额外函数库。例如,cyrus-sasl认证程序的库文件位于/usr/lib/sasl2/。

注:1、 如果配置写错误,需要重新配置,首先输入“make makefiles clean”命令清除。

2、如果配置失败,可能是缺少db*-devel包。

4)编译并安装

注:如果编译失败,除了缺少ncurses-devel包之外,可能还缺少cyrus-sasl*包。

执行make install命令以后,最后阶段会需要设置一些安装参数,一般直接按回车键接受默认或自动识别的配置即可。完成安装以后,应执行postconf –a命令检查所支持的认证方式,若输出结果中未包含“cyrus”,则应检查配置步骤,纠正错误后重新进行配置、编译并安装。

注:没有cyrus则为make makefiles有问题

postconf -a

注:cyrus:支持cyrus认证 dovecot支持dovecot认证

4、Postfix服务控制

Postfix邮件系统的控制主要通过/usr/sbin/postfix命令进行,结合start、stop、check、reload选项分别实现启动、停止、检查、重载服务的操作。

需要注意的是,实际监听服务的进程名并不是postfix,而是master

当重新调整邮件服务配置以后,可以通过check选项进行基本的语法检查,检查无误后再通过reload选项来重载服务。

注:check出现错误没有问题,仅因前面卸载了原有的postfix

注:postfix check无输出,则配置无误

  • 主要目录和配置文件

(一)主要目录

  • /etc/postfix:包括postfix服务的主配文件、各类脚本、查询表等。
  • /usr/libexec/postfix/:包括postfix服务的各个服务器程序文件。
  • /var/spool/postfix/:包括postfix服务的邮件队列相关的子目录,每个队列子目录用于保存不同的邮件。常见的几个子目录及用途如下所述:
  1. incoming(传入):存放刚接收到的邮件。
  2. active(活动):存放正在投递的邮件。
  3. deferred(推迟):存放以前投递失败的邮件。
  4. hold(约束):存放被阻止发送的邮件。
  5. corrupt(错误):存放不可读或不可分析的邮件。
  • /usr/sbin/:包括postfix服务的各种管理工具程序,这些程序文件名以post开头。主要的几个程序文件及其用途如下所述:
  1. postalias:构造、修改和查询别名表。
  2. postconf:显示和编辑main.cf配置文件。
  3. postfix:启动、停止postfix邮件服务,要求有root用户权限。
  4. postmap:构造、修改或者查询查询表文件(记录如别名等映射关系的文件)。
  5. postqueue:查看邮件队列,一般用户也可以使用。
  6. postsuper:管理邮件队列,要求有root用户权限。

(二)主要配置文件

Postfix邮件系统的主要配置文件包括main.cf、master.cf,都位于/etc/postfix/文件夹下。其中,main.cf是postfix服务的配置文件,设置邮件服务器时以修改此文件的内容为主;而master.cf是主程序master的配置文件,一般不需要修改。

在主配置文件main.cf中,可以调整的各种配置参数有近千个。大部分的配置参数都被自动设置了默认值,如果在main.cf文件中没有对应的设置,那么postfix服务器将使用默认值来启动及运行。因此,只需要修改很少的几个配置参数,就可以满足基本邮件服务器的要求了。

使用postconf工具可以辅助配置过程,不带任何选项时将列出当前postfix服务器启用的所有配置参数,若添加“-n”选项则只列出使用非默认值的配置参数。

注:postconf 查看当前启用的所有配置

postconf -n 只列出使用非默认值的配置

为了避免配置参数过多带来的干扰,提高易读性,建议对main.cf配置文件进行适当的简化,只保留与默认配置不同的参数。

3、Postfix的日志文件

Postfix邮件服务的日志文件位于/var/log/maillog,该文件中记录了本机中的邮件进出相关的信息,包括邮件服务的启动、出错、与其他SMTP服务器的会话信息等。在维护邮件服务器的过程中,经常会使用带“-f”选项的tail命令来跟踪日志变化。

当日志内容较多时,还可以使用egrep命令进行过滤,只查看包含reject、error、fatal等较重要的记录。

  • 配置SMTP发信服务

在整个电子邮件系统中,postfix基于SMTP协议提供邮件传递服务,并负责将邮件分发到用户的邮箱空间。对postfix服务的配置主要通过修改主配置文件/etc/postfix/main.cf来进行。

在main.cf文件中,以“#”号开头的行表示注释信息,其他行表示有效设置。设置行的格式与为shell变量赋值的形式非常类似,采用“配置参数=值”的形式,其中等号两边的空格可有可无。当某个配置参数包含多个值时,使用逗号或空格进行分隔,也允许换行进行分隔,但行首至少应有一个空格。

  1. 设置main.cf,并启动服务

重载配置内容

在上述配置中,将mydestination的值设置为“$mydomain,$myhostname”,表示将@benet.com和@mail.benet.com域作为本地目标域,允许投递到本地邮箱空间。各用户的邮件将被保存到宿主目录下的Maildir/文件夹中。

邮箱空间用来存放每个用户的电子邮件内容。在postfix服务器中,支持两种最常见的邮箱存储方式:Mailbox、Maildir(当指定的存储位置最后一个字符为“/”时,自动使用Maildir存储方式)。

  • Mailbox:同一个用户的所有邮件内容存储为单个文件,通常保存在/var/spool/mail/目录下,文件名与用户名相同。Mailbox存储方式比较古老,当邮件数量较多时会降低查询和管理的效率。
  • Maildir:使用目录结构来存储用户的邮件内容,每一个用户使用一个文件夹,每封邮件都作为一个独立的文件存放。Maildir方式的存取速度和效率要好一些,对于管理邮件内容也更加方便,大多数较新的邮件服务器都采用这种方式。

2、添加邮箱账号

Postfix服务器默认使用本机中的系统用户作为邮件账号,因此使用时只需要添加Linux用户账号即可。测试时,可以添加两个邮件账号xiaoqi和lisi,并为其设置密码。

3、SMTP发送邮件测试

将postfix服务器交付使用之前,最好先在本机测试一下发信功能是否正常。命令行中的测试工作可以通过telnet命令进行。例如:可以连接到邮件服务器的25端口,并输入相关的SMTP命令,以邮件账户xiaoqi@benet.com作为发件人,给lisi@benet.com发送一封测试邮件。

Rpm -ivh /mnt/packages/telnet-0.17-47....

在/etc/hosts 文件后添加192.168.120.120 mail.topsec.coms

Telnet mail.topsec.com 25

注:具体内容参见下图

邮件发送并投递成功以后,可以到服务器中lisi用户的宿主目录下进行查看,新接收到的邮件保存在Maildir/new/目录中。

注:具体内容参见下图

通过以上测试结果,不难发现已经能够通过postfix服务器发送并投递邮件了,但是还只能在服务器本机查看收到的邮件。若要使收件人能够从其他主机查收邮件,还需要进一步安装POP3或IMAP服务器,以提供邮件的下载服务。

  • 配置POP/IMAP收信服务

Dovecot是一个安全性较好的POP3/IMAP服务器软件,响应速度快而且扩展性好。Dovecot默认也使用Linux的系统用户,并通过PAM(Pluggable Authentication Module,可插拔认证模块)机制进行身份认证,只有通过认证后才允许用户收取邮件。

1、编译安装Dovecot软件包

1)预先创建运行用户路径在root下

2)源码编译安装路径在root下

注:在编译安装之前,先确认pam-devel包是否安装

注:./configure --sysconfdir=/etc/ 指定配置文档的父目录

注:在编译安装之前,先确认pam-devel包是否安装。如果没有安装,必须先安装成功后,然后再配置。

查看:#rpm -qa | grep pam-devel

安装:yum -y install pam-devel

3)添加为系统服务dovecot

查看是否有执行权:ls -l /etc/init.d/dovecot

添加执行权:chomd +x /etc/init.d/dovecot

2、建立配置文件,并启动服务

1)建立配置文档

Dovecot的配置文件位于/etc/dovecot/目录下,主配置文件为dovecot.conf,默认并没有此文件,需要参考样例目录重新创建。为了方便以后的扩展配置,建议将各种样例配置文件都复制到/etc/dovecot/目录下。

查看:cd /etc/dovecot/

Ls

若要支持系统用户认证,还应建立相应的PAM认证文件/etc/pam.d/dovecot,具体内容请参考/etc/pam.d/目录下的其他文件。

cd /etc/pam.d/

ls

2)调整主配置文件

为了降低初学难度,这里只使用系统用户认证,而并不使用SSL等安全机制。因此需要修改主配置文件dovecot.conf,将“!include conf.d/*.conf”行改为“!include conf.d/10-auth.conf”,并禁用SSL机制,允许在验证时使用明文的用户名和密码。除此之外,还需要指定邮箱格式及存储位置。

多余的!include注释

4)启动dovecot服务,并确认监听状态

Dovecot默认已配置为监听POP3/IMAP邮件协议,因此启动dovecot服务后,可以查看对TCP端口143、110的监听。

  1. POP3接收邮件测试

使用telnet连接到Dovecot邮件服务器的110端口,输入POP3操作命令,以邮箱账户lisi@benet.com的身份查收邮件内容。测试过程如下所述:

Telnet mail.topsec.com 110

通过以上测试结果,不难发现用户已经能够通过Dovecot服务器收取邮件。该服务器具备了SMTP发信功能、POP3/IMAP收信功能,一台简单的邮件服务器的设置就基本上大功告成了。

  • 利用2003测试发信、收信功能

2003 邮件服务器,邮件客户端 2008 192.168.120.100 dns192.168.120.100

  1. 配置ip

(1)控制面板-->网络连接-->本地连接-->属性

2、设置DNS

控制面板-->添加或删除程序-->添加或删除组件-->网络服务-->DNS

管理工具-->DNS-->正向查找-->新建区域(topedu.com)-->新建主机(mail,ftp,www,mail(MX))

配置DNS文件

配置hosts文件

3、设置邮箱账号

4、发送邮件

5、接收邮件

  • 邮件系统的角色
  • MTA(Mail Transfer Agent,邮件传输代理):一般被称为邮件服务器软件。MTA软件负责接收客户端软件发送的邮件,并将邮件传输给其他的MTA程序,是电子邮件系统中的核心部分。
  • MUA(Mail User Agent,邮件用户代理):一般被称为邮件客户端软件。MUA软件的功能是为用户提供发送、接收和管理电子邮件的界面。
  • MDA(Mail Delivery Agent,邮件分发代理):MDA软件负责在服务器中将邮件分发到用户的邮箱目录。MDA软件相对比较特殊,它并不直接面向邮件用户,而是在后台默默的工作。有时候MDA的功能可以直接集成在MTA软件中,因此经常被忽略。
  • 邮件通信协议
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):主要用于发送和传输邮件。MUA使用SMTP协议将邮件发送到MTA服务器中,而MTA将邮件传输给其他MTA服务器时同样也使用SMTP协议。SMTP协议使用的TCP端口为25。对于支持发信认证的邮件服务器,将会采用扩展的SMTP协议(Extended SMTP)。
  • POP(Post Office Protocol,邮局协议):主要用于从邮件服务器中收取邮件。目前POP协议的最新版本是POP3。大多数MUA软件都支持使用POP3协议,因此该协议应用最为广泛。POP3协议使用的TCP端口号为110。
  • IMAP(Internet Message Access Protocol,互联网消息访问协议):同样用于收取邮件。目前IMAP协议的最新版本是IMAP4。与POP3相比较,IMAP4协议提供了更为灵活和强大的邮件收取、邮件管理功能。IMAP4协议使用的TCP端口号为143。

Postfix邮件系统(二)

具体步骤:

  1. 设置Cyrus SASL函数库,并启动saslauthd服务

建立SMTP认证配置文件/etc/sasl2/smtpd.conf(注意不要将文件名smtpd.conf误写为smtp.conf)。在该配置文件中设置了使用saslauthd服务作为认证方式,配置内容可参考/etc/sasl2/Sendmail.conf文件。

先检查:cd /etc/sasl2

Vim smtpd.conf

2、修改main.cf配置文件,添加SMTP认证配置,并重载服务

添加内容:

在上述配置参数中,SMTP认证相关的几行设置含义如下:

  • mynetworks:用来控制可以通过本服务器外发邮件的网络地址或IP地址,设置为127.0.0.1是为了确保后面的Web邮箱系统可以正常发送邮件。
  • smtp_recipient_restrictions:设置收件人地址过滤规则,其匹配策略是“从上至下逐条检测,有匹配即停止”。其中,常用的几个值如下所述:
  1. permit_mynetworks:允许IP为mynetworks的客户使用本邮件系统发送邮件。
  2. permit_sasl_authenticated:允许通过SMTP认证的用户向外发送邮件。
  3. reject_unauth_destination:当收件人地址不包括在Postfix的授权网络时,将拒绝发送该邮件。授权网络包括由inet_interfaces、mydestination、relay_domain等配置参数指定的域及其子域。

启用上述SMTP认证配置以后,只有通过认证的用户才允许向外域发送邮件,否则只能够给本域内的其他用户发送邮件。

  • 验证SMTP发信认证
  1. 测试SMTP发信认证——telnet方式

1)验证不使用SMTP认证的情况

第10章使用telnet命令做发信测试时,并未提供用户名、密码等认证信息,这种方式表示不使用SMTP认证。若服务器要求进行SMTP认证,但客户端未使用认证,则发信时将会受到限制。例如,尝试xiaoqi@benet.com给外部邮箱zhaoliu@accp.com发送邮件时,将会受到“Relay access denied”的拒绝发送反馈。

注:如蓝字未发生则为认证错误

2)验证使用SMTP认证的情况

若要使用SMTP发信认证,在telnet命令中应改用“EHLO”(而不是HELO)来宣告本机地址,并通过“AUTH LOGIN”进行登录认证,然后才能够正常发送邮件。用户名、密码字串默认使用BASE64编码的加密格式,使用openssl工具可以生成。

[root@Linux 桌面]# printf "xiaoqi" | openssl base64

eGlhb3Fp

[root@Linux 桌面]# printf "123456" | openssl base64

MTIzNDU2

测试过程中,建议直接复制上述加密字串进行使用,避免出现输入错误的情况。当通过SMTP认证以后,用户再次从xiaoqi@benet.com给外部邮箱zhaoliu@accp.com发送邮件时,将会成功提交给Postfix服务器。

域内通信不用加密,域外通信需要加密

winmail允许转发域*

注:可用wireshark抓包查看是否能抓到用户名和密码?

2、测试SMTP发信认证——Outlook

1)验证不使用SMTP认证的情况

在win10上使用OfficeOutlook用lisi@benet.com给zhaoliu@accp.com发送一封外网邮件。如图所示:

点击发送后,会立马收到一封邮件服务器反馈的无法到达收件人的“未传递:……”的退信邮件。

  • 部署并配置Squirrelmail

Squirrelmail是使用PHP开发的一套网页程序,可以与Postfix、Dovecot很好的协作,通过Web界面提供邮件发送、接收和管理操作。

  1. 安装Apache,php

(为保证实验成功Apache和PHP必须同为编译安装或rpm安装)

查看是否安装Apache:Rpm -qa | grep httpd

此处为与PHP一致,卸载httpd重新安装

查看PHP:Rpm -qa | grep php

安装PHP:Yum -y install php

2003 添加别名www

启动Apache:Service httpd start

启不起来:

Vim /etc/httpd/conf/httpd.conf

ServerName www.topsec.com(注意大小写)

Ping www.topsec.com

错误日志:Cat /var/log/httpd/error_...

写PHP文件

Cd /var/www/html

Touch test.php

Vim test.php (书写内容)

<?php

phpinfo();

?>

echo “www.topsec.com”> www.topsec.com

浏览器:www.topsec.com/test.php(出现页面支持PHP)

网站平台语言环境:LAMP,LNMP(PHP,Perl(Linux,Windows))

ASP(Windows)

TomCat(Java)

2、将SquirrelMail部署到网站目录

将程序源码包、语言包释放后复制到网站目录中,其部署位置取决以访问路径,应根据实际情况确定。这里以httpd服务器为例,网站根目录对应为/var/www/html/,访问SquirrelMail系统的URL为http://mail.bebent.com/webmail/

Unzip sq......

浏览器:www.topsec.com/webmail

3、创建数据目录、附件目录

通过浏览器访问Web邮箱时需要提交邮件内容、上传附件等相关操作,因此需要创建相应的数据目录、附件目录,并确保网站运行用户(如daemon)对上述目录有写入权限

Vim /etc/httpd/conf/httpd.conf

查看/Group --- Group apache

Cat /etc/passwd |grep httpd

Mkdir -p data/ attach/

Ls

Chown -R apache:apache data/ attach/

Ls -l data

Ls -ld attach

4、创建主配置文件config.php

SquirrelMail的主配置文件为config.php,位于子目录config/中。主配置文件通常并不存在,需要参考默认配置手动创建。适当修改配置文件,设置界面语言、收发信服务器地址、数据目录和附件目录等相关信息。

注:第二行可为Localhost,也可为192.168.120.120

上述配置内容中,收发信服务器的地址、端口号一般为默认,不需要修改。但数据目录、附件目录、界面语言等应根据需要进行调整。

5、访问Web邮箱系统(此处为英文,未加载汉化软件包)

确认Web服务应经运行,通过浏览器访问http://mail.topsec.com/webmail/,可以看到SquirrelMail提供的Web邮箱登录界面,如图所示。使用正确的用户名、密码进行登录,即可使用Web邮件系统。

6、使用Squirrelmail收发邮件

成功登录Squirrelmail以后,可以看到一个典型的Web邮件系统操作界面,如图所示。通过此Web邮件系统,用户可以完成收信、发信等各种操作。

注意:SquirrelMail的中文界面使用的是汉化语言包,个别细节处的汉化并不十分完善。另外,在Web界面操作过程中偶尔会出现一些PHP警告信息,一般直接刷新页面后,警告信息即会自动消失。


参考文章:https://blog.csdn.net/weixin_43567824/article/details/85297913

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论