菜鸟学Linux 第062篇笔记 再次postfix+dovecot+sasl(成功)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

菜鸟学Linux 第062篇笔记 再次postfix+dovecot+sasl(成功)


postfix


myhostname

mydomain

mynetworks

mydestination

myorigin

inet_interfaces


smtpd_client_restrictions

smtpd_helo_restrictions

smtpd_sender_restrictions

smtpd_recipient_restrictions

smtpd_data_restrictions


check_{client|helo|sender..}_access hash:



RHEL 6.3

Development Tools

Server Platform Development

Desktop Platform Development


MySQL:

rpm: 

mysql-server

mysql-devel

使用rpm安装软件如果该软件会被其它要编译的软件所依赖,建议安装其name-devel包


RHEL 自身提供的rpm包:

头文件:/usr/include/

库文件:/lib, /usr/lib


第三方的rpm包

安装路径:/usr/local, /opt

头文件: /usr/include, /usr/local/include

库文件:/usr/local/lib (不会被操作系统自向去查找)

/etc/ld.so.conf/software-name.conf

ldconfig -v 




再一次安装postfix 

0、安装dns

并且使DNS可以反射解析mail服务器

验证方式

# dig -x 192.168.11.122

# dig -t MX mysky.com

1、这次采用rpm包安装mysql 

# yum install mysql-server mysql-devel





2、编译安装postfix 上次安装的是3.1  这次源码是2.9.15

关闭sendmail程序

# service sendmail stop

# chkconfig sendmail off

为postfix创建用户

# groupadd -g 2525 postfix

# useradd -g 2525 -u 2525 -M -s /sbin/nologin postfix

# groupadd -g 2526 postdrop

# useradd -g 2526 -u 2526 -M -s /sbin/nologin postdrop


编译安装postfix

# tar -xf postfix-2.9.15.tar.gz

# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH 

-DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS' 'AUXLIBS=-L/usr/lib/mysql 

-lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'

(注意上边是一行命令,而且和源码安装的mysql所指的头文件和库文件路径不中)

# make

# make install

配置postfix

# vim /etc/postfix/main.cf 

myhostname = mail.mysky.com

mydomain = mysky.com

myorigin = $mydomain

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks = 192.168.11.0/24, 127.0.0.0/8

为postfix添加脚本,这里不写脚本内容了,上一章节里有

# vim /etc/rc.d/init.d/postfix

将上一章节的脚本内容粘贴进该脚本中

# chmod +x /etc/rc.d/init.d/postfix

# newaliases

# service postfix start

# chkconfig --add postfix

# chkconfig postfix on





3、安装dovecot

# yum install dovecot

# vim /etc/dovecot.conf

将如下一行

#protocols = imap imaps pop3 pop3s

改为

protocols = pop3

# service dovecot start

# chkconfig dovecot on



收邮件软件mutt

mutt -f Protocol{imap,pop}://username@{mail.mysky.com|192.168.11.122}



4、启用认证 SASL(cyrus-sasl) 服务脚本:saslauthd

# vim /etc/sysconfig/saslauthd

MECH=pam

改为

HECH=shadow


# vim /usr/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd

mech_list: PLAIN LOGIN

# service saslauthd start

# chkconfig saslauthd on

# chkconfig --list saslauthd

# testsaslauthd -u username -p password 

(此为测试sasl是否可正常运行,用户名和密码为/etc/shadow中的用户和密码)

如# testsaslauthd -u mysky -p mysky (此为我的linux用户和密码)

如提示为0: OK "Success." 则证明sasl服务器启动成功


配置postfix使其具有认证功能

# vim /etc/postfix/main.cf

将该行只保留本地回环地址

mynetworks = 127.0.0.0/8

在配置文件末尾添加如下信息

############################CYRUS-SASL############################

broken_sasl_auth_clients = yes

smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,

reject_invalid_hostname,reject_non_fqdn_hostname,

reject_unknown_sender_domain,reject_non_fqdn_sender,

reject_non_fqdn_recipient,reject_unknown_recipient_domain,

reject_unauth_pipelining,reject_unauth_destination

(注意此为一行记录,不可回车,让它自动输入时换行可以,或者换行时加空格)

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname

smtpd_sasl_security_options = noanonymous

smtpd_sasl_path = smtpd

smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!

# service postfix restart

5、测试邮件服务器是否可以支持认证

(注意测试时不要在同域内的用户发送邮件,要给其它区域发送邮件)


用本域内的openstack用户给wind@winthcloud.com发送邮件

[root@mail ~]# telnet mail.mysky.com 25

Trying 192.168.11.122...

Connected to mail.mysky.com (192.168.11.122).

Escape character is '^]'.

220 Welcome to our mail.mysky.com ESMTP,Warning: Version not Available!

ehlo mail.mysky.com

250-mail.mysky.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

mail from:openstack@mysky.com

250 2.1.0 Ok

rcpt to:wind@winthcloud.com

450 4.1.2 <wind@winthcloud.com>: Recipient address rejected: Domain not found

quit

221 2.0.0 Bye

Connection closed by foreign host.

[root@mail ~]# 

(可以看出收件人的地址被拒绝,就是说服务器不给中继)


再次用上边的用户给wind@withcloud.com邮箱发送邮件

注意在telenet认证用户时用户名是以base64编码输入的所以需要将用户的登录名和密码

转译成base64编码 我这里使用的是用户openstack 密码mypostuser

[root@mail ~]# echo -n "openstack" | openssl base64

b3BlbnN0YWNr

[root@mail ~]# echo -n "mypostuser" | openssl base64

bXlwb3N0dXNlcg==

[root@mail ~]#


登录用户进行测试从openstack用户给wind@withcloud.com发送邮件

[root@mail ~]# telnet mail.mysky.com 25

Trying 192.168.11.122...

Connected to mail.mysky.com (192.168.11.122).

Escape character is '^]'.

220 Welcome to our mail.mysky.com ESMTP,Warning: Version not Available!

ehlo mail.mysky.com

250-mail.mysky.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

auth login

334 VXNlcm5hbWU6 

b3BlbnN0YWNr (这里所输入的便是base64编码的openstack)

334 UGFzc3dvcmQ6

bXlwb3N0dXNlcg== (这里所输入的便是base64编码的openstack的密码)

235 2.7.0 Authentication successful

mail from:openstack@mysky.com

250 2.1.0 Ok

rcpt to:wind@winthcloud.com

250 2.1.5 Ok

data

354 End data with <CR><LF>.<CR><LF>

Subject:Hello

test

.

250 2.0.0 Ok: queued as 15519B0004B

quit

221 2.0.0 Bye

Connection closed by foreign host.

[root@mail ~]#

至此可以看出postfix可以进行用户认证后才可以发送邮件

(但是目前邮件服务器虽然可以工作,但是无法限制域内用户冒名其它用户发送邮件)

(这里只是为了理解邮件服务器是如何进行认证的)


总结: 上一次未编译安装成功的原因是因为版本问题,这次重新编译旧版本后可正常使用

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1886682如需转载请自行联系原作者


Winthcloud

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
165 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
114 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
4月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
115 2
linux笔记 diff及patch的制作与使用
|
4月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
4月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
4月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
4月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
4月前
|
Linux
Linux源码阅读笔记17-资源分配及总线系统
Linux源码阅读笔记17-资源分配及总线系统
|
4月前
|
存储 Linux 数据库
Linux源码阅读笔记16-文件系统关联及字符设备操作
Linux源码阅读笔记16-文件系统关联及字符设备操作
|
4月前
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
305 0