CentOS 搭建邮件服务与虚拟域详解

CentOS搭建邮件服务

cyrus-sasl    账户认证(本地)
postfix       发送邮件
dovecot     接受邮件

一、系统配置

    所有账户邮件存放在 系统 /data/%U 目录下

    修改用户模板,新添加用户自动创建 Mail 目录用于存放邮件文件

    域:mxt.selboo.com.cn MX记录 mail.mxt.selboo.com.cn

用户模板下建立用户邮箱目录

This is The Code
[root@selboo ~]# mkdir /etc/skel/Mail
[root@selboo ~]# chmod 700 /etc/skel/Mail
Parsed in 0.000 seconds at N/A

创建 "m1" 邮件账号

This is The Code
[root@selboo ~]# useradd -s /sbin/nologin -d /data/m1 m1
Parsed in 0.000 seconds at N/A

修改 "m1" 密码 为 '12345567'

This is The Code
[root@selboo ~]# echo '12345567' | passwd --stdin m1
Changing password for user m1.
passwd: all authentication tokens updated successfully.
Parsed in 0.000 seconds at N/A

安装软件

This is The Code
[root@selboo ~]# yum install postfix cyrus-sasl* dovecot
Parsed in 0.000 seconds at N/A

二、cyrus-sasl 配置

1、修改 /etc/sysconfig/saslauthd 文件 使用本地认证

This is The Code
cat /etc/sysconfig/saslauthd | grep -v '^#'
SOCKETDIR=/var/run/saslauthd
MECH=shadow
Parsed in 0.000 seconds at N/A

2、修改 smtpd.conf

This is The Code
[root@selboo ~]#  cat /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
Parsed in 0.000 seconds at N/A

3、验证 sasl 是否正常

This is The Code
[root@selboo ~]# testsaslauthd -u m1 -p 12345567
0: OK "Success."
Parsed in 0.000 seconds at N/A

三、Postfix配置

main.cf 配置文件

This is The Code
cat /etc/postfix/main.cf | grep -v '^#'
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = mail.mxt.selboo.com.cn
mydomain = mxt.selboo.com.cn
myorigin = $myhostname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain
unknown_local_recipient_reject_code = 550
mynetworks_style = subnet
mynetworks  = 127.0.0.1
relay_domains = $mydestination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

home_mailbox = Mail/
 
debug_peer_level = 2
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

# sasl 认证
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination,permit_mynetworks
smtpd_client_restrictions = permit_sasl_authenticated
Parsed in 0.000 seconds at N/A

四、dovecot 配置

1、修改 /etc/dovecot/dovecot.conf 文件

This is The Code
[root@selboo ~]# cat /etc/dovecot/dovecot.conf | grep -E "protocols|listen ="
protocols = pop3
listen = *
Parsed in 0.000 seconds at N/A
只启用 POP3 和 只监听 IPV4 地址

2、关闭 POP3S 协议

This is The Code
[root@selboo ~]# cat /etc/dovecot/conf.d/10-ssl.conf | grep "ssl ="
ssl = no
Parsed in 0.000 seconds at N/A

3、指定邮件目录

This is The Code
[root@selboo ~]# cat 10-mail.conf | grep "mail_location = maildir"
mail_location = maildir:~/Mail
Parsed in 0.000 seconds at N/A

4、修改auto文件

This is The Code
[root@selboo ~]# cat 10-auth.conf | grep disable_plaintext_auth
disable_plaintext_auth = no
Parsed in 0.000 seconds at N/A
否在在收信时会出错 错误一

五、错误记录
1、错误一
/var/log/maillog 文件
dovecot: pop3-login: Disconnected (tried to use disabled plaintext auth)

2、错误二
/var/log/maillog 文件
Initialization failed: mail_location not set and autodetection failed: Mail storage autodetection fa

解决二

/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Mail

CentOS搭建邮件服务-虚拟域

这次给 Postfix 添加虚拟域

域                         地址                             MX记录                        系统目录(%U 用户主目录)
mxt.selboo.com.cn  m1@mxt.selboo.com.cn  mail.mxt.selboo.com.cn  /data/%U
mxy.selboo.com.cn  m2@mxy.selboo.com.cn  mail.mxy.selboo.com.cn  /mxy/%U

一、添加用户

This is The Bash Code
useradd -d /data/m1 m1 -s /sbin/nologin
useradd -d /mxy/m2 m2 -s /sbin/nologin

修改密码
echo '12345567' | passwd --stdin m1
echo '12345567' | passwd --stdin m2

获取id
id m1
uid=513(m1) gid=513(m1) groups=513(m1)
id m2
uid=514(m2) gid=514(m2) groups=514(m2)
Parsed in 0.019 seconds at 13.30 KB/s

二、配置 Postfix

修改 main.cf 添加以下参数

This is The Code
virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps
virtual_mailbox_domains = /etc/postfix/virtual_mailbox_domains
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps

virtual_uid_maps = hash:/etc/postfix/virtual_uids
virtual_gid_maps = hash:/etc/postfix/virtual_gids

virtual_mailbox_base = /

virtual_maildir_extended = yes
virtual_create_maildirsize = yes
Parsed in 0.000 seconds at N/A

virtual_alias_maps            转发配置
virtual_mailbox_domains   域配置
virtual_mailbox_maps       用户目录配置
virtual_uid_maps             UID
virtual_gid_maps             GID

This is The Code
cat /etc/postfix/virtual_alias_maps
m1@mxt.selboo.com.cn    m1@mxt.selboo.com.cn,m2@mxy.selboo.com.cn

cat /etc/postfix/virtual_mailbox_domains
mxt.selboo.com.cn
mxy.selboo.com.cn

cat /etc/postfix/virtual_mailbox_maps
m1@mxt.selboo.com.cn     /data/m1/Mail/
m2@mxy.selboo.com.cn     /mxy/m2/Mail/

cat virtual_uids
m1@mxt.selboo.com.cn     513
m1@mxt.selboo.com.cn     514
cat virtual_gids
m1@mxt.selboo.com.cn     513
m1@mxt.selboo.com.cn     514

postmap /etc/postfix/virtual_alias_maps
postmap /etc/postfix/virtual_mailbox_maps
postmap /etc/postfix/virtual_uids
postmap /etc/postfix/virtual_gids

Parsed in 0.000 seconds at N/A

排错记录
一、/var/log/maillog 文件
fatal: bad string length 0 < 1: virtual_mailbox_base =

添加 virtual_mailbox_base = / 参数

二、/var/log/maillog 文件
warning: do not list domain mxt.selboo.com.cn in BOTH mydestination and virtual_mailbox_domains

mydomain 参数 和 virtual_mailbox_domains 有重复

PS:因为依赖本地系统用户,所以两个域不能有相同账户

时间: 2024-08-02 09:49:36

CentOS 搭建邮件服务与虚拟域详解的相关文章

Windows网络服务架构系列课程详解(一) DHCP服务器的搭建与配置

实验背景: 企业网络环境中在没有配置DHCP服务器时,经常会遇到这样的情况,用户不懂怎么去配置IP地址:IP地址经常冲突:管理员单个配置IP地址会经常出错:笔记本计算机的客户,经常从一个子网移动到另一个子网,需要不断地手动更换IP地址:IP地址资源不足,但实际在同一时间段内使用的用户小于IP地址的数量等等. 实验目的: 1.了解Windows DHCP服务器的安装过程 2.了解Windows DHCP服务器的工作过程 3.掌握Windows DHCP服务器的配置和管理 4.理解DHCP中继代理概

基于CentOS搭建 Git 服务

官方安装详细介绍 https://git-scm.com/download/linux 本文介绍通过源码安装 1.下载安装 git 此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服务器. 1.1 安装依赖库和编译工具 为了后续安装能正常进行,我们先来安装一些相关依赖库和编译工具 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 1.2 安装编译工具 yum install gc

阿里云容器服务飞天敏捷版详解

概述 飞天敏捷版深度整合了Docker商业版套件和阿里的容器服务,成为国内唯一具有全商业版支持能力的容器云平台,可以部署在客户自有数据中心,包含从容器的创建到运行以及镜像的全生命周期管理.飞天敏捷版另外提供开放的接口,全面兼容Docker原生API和命令行以及第三方工具,为客户提供敏捷.弹性.开放的容器云平台.借助阿里云在公共云和专有云方面的积累,飞天敏捷版更提供了独特的混合云管理模式,让客户轻松管理云上云下运行环境. 飞天敏捷版的架构可以用下图表示: 从图中我们可以看到,飞天敏捷版底层基于Do

Docker搭建前端Java的开发环境详解_java

一.解决的痛点       1.免搭建后端开发环境.       2.开发环境改变只需要改变镜像就能同步更新.       3.不需要eclipse等IDE工具.       4.切换开发项目 二.解决思路 利用docker启动Ubuntu镜像,在容器中搭建好项目需要的开发环境,使用挂载卷将本地代码挂载到容器中,使用容器中的环境编译运行代码,宿主机通过 docker 暴漏出的端口访问容器中的服务,这样前端的开发机上就只需要部署docker就搞定了. 三.关于docker 了解docker 本文并

基于 CentOS Mysql 安装与主从同步配置详解

CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操作,降低主服务器的访问压力 3.可以在从服务器上执行备份,以避免备份期间影响主服务器的服务 注意:一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询,实时性要求高的数据仍然需要从主服务器获得. Window 数据库主从(Master/Slave)同步安装与配置详解 2. Cent

AngularJS内建服务$location及其功能详解_AngularJS

在学习AngularJS的过程中感觉到,通过一次性从服务端的数据库获取信息,在前端进行分页,这是一种比较可取的方式.因为它节省了前后端的通信负载,把更多的显示方面的任务交给前端处理. 此内容分为两个部分,第一部分给大家简单介绍一下AngularJS的内建服务$location及其功能:第二部分通过一个比较完整的综合实例来实现分页显示数据库信息的效果. 在做angularJS的Mutilpe View & Route 的工作时,感觉到应该更加深入的了解一下angularJS的内建的服务&lo

C++实现的分布式游戏服务端引擎KBEngine详解_C 语言

KBEngine 是一款开源的游戏服务端引擎,使用简单的约定协议就能够使客户端与服务端进行交互, 使用KBEngine插件能够快速与(Unity3D, OGRE, Cocos2d, HTML5, 等等)技术结合形成一个完整的客户端. 服务端底层框架使用c++编写,游戏逻辑层使用Python(支持热更新),开发者无需重复的实现一些游戏服务端通用的底层技术, 将精力真正集中到游戏开发层面上来,快速的打造各种网络游戏. (经常被问到承载上限,kbengine底层架构被设计为多进程分布式动态负载均衡方案

Android Service服务不被停止详解及实现_Android

Android Service服务一直运行:                最近有个项目需求是后台一直运行Service,但是一般都是可以手动停止的,这里就提供一个方法让Android Service服务一直运行,大家看下. 1.设置->应用->运行中->停止->杀死service 这样可以在service的onDestroy()方法中重启service public void onDestroy() { Intent service = new Intent(this, MySe

Windows网络服务架构系列课程详解(七) windows域环境多区域间访问

实验背景: 一个企业如果没有分公司,在单域环境下是可以实现大部分的用户需求的:但是,当公司的规模越来越多,在多个地区都建立了自己的分公司,用户账户和各种资源比较多,不同的分总司对用户的要求不一样(比如说密码策略,访问权限的设置等等),大量的活动目录给管理造成了一定的麻烦,域之间的复制负担过重等等,而公司又需要统一管理,这在单域环境下是很难完成的,维护起来也是相当的困难.因此,多域环境便应运而生,大型企业通过多个区域管理企业内部的用户和资源,而各个区域之间又存在上下级之间的关系,相当于总公司和分公