找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2|回复: 0

Postfix虚拟用户配置

[复制链接]

27

主题

27

回帖

218

积分

管理员

积分
218
发表于 昨天 13:06 | 显示全部楼层 |阅读模式
通过如上章节的配置,使用系统用户可以登录到postfix邮件服务器,并且进行邮件的发送和接收,为了管理的方便和系统安全,一般通过postfix虚拟用户来管理邮件用户的。

Postfix虚拟用户的原理:基于系统中创建的一个映射用户,该用户不能登录到系统,然后将其他虚拟用户全部映射到该系统用户所属目录。

对于操作系统来说所有的操作均是通过该系统用户进行的,但是对于postfix的邮件用户来说又是各自独立的。Postfix虚拟用户与Vsftpd虚拟用户相似,所有的虚拟用户或者系统用户可以通过Postfixadmin来进行管理。

配置Postfix SMTP认证基于MYSQL数据库,读取MYSQL虚拟用户配置:

修改Postfix真实用户的uid和gid,命令如下:

usermod -u 1000 postfix

groupmod -g 1000 postfix

chown -R postfix.postfix /var/spool/mail/

创建postfix主配置文件mail.cf内容为如下:

queue_directory = /var/spool/postfix

command_directory = /usr/sbin

daemon_directory = /usr/libexec/postfix

data_directory = /var/lib/postfix

mail_owner = postfix

myhostname = mail.jingfengjiaoyu.com

mydomain = jingfengjiaoyu.com

myorigin = $mydomain

inet_interfaces = all

inet_protocols = ipv4

#mydestination = localhost

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

unknown_local_recipient_reject_code = 550

#mynetworks = 192.168.0.0/24,127.0.0.0/8

mynetworks = 0.0.0.0/0

relay_domains = $mydestination

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

debug_peer_level = 2

debugger_command =

PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

ddd $daemon_directory/$process_name $process_id & sleep 5

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

#Config Virtual Mailbox Settings 2026

virtual_minimum_uid = 100

virtual_mailbox_base = /var/spool/mail

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_alias_domains = $virtual_alias_maps

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_uid_maps = static:1000

virtual_gid_maps = static:1000

virtual_transport = virtual

maildrop_destination_recipient_limit = 1

maildrop_destination_concurrency_limit = 1

#Config QUOTA 2026

message_size_limit = 52428800

mailbox_size_limit = 209715200

virtual_mailbox_limit = 209715200

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

virtual_mailbox_limit_override = yes

virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.

virtual_overquota_bounce = yes

#Config SASL 2026

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,permit

smtpd_sasl_auth_enable = yes

smtpd_sasl_type = dovecot

smtpd_sasl_path = /var/run/dovecot/auth-client

smtpd_sasl_local_domain = $myhostname

smtpd_sasl_security_options = noanonymous

smtpd_sasl_application_name = smtpd

smtpd_banner=$myhostname SMTP "Version not Available"

创建POSTFIX读取MYSQL配置信息:

cat>/etc/postfix/mysql_virtual_alias_maps.cf<<EOF

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = alias

select_field = goto

where_field = address

EOF

cat>/etc/postfix/mysql_virtual_domains_maps.cf<<EOF

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = domain

select_field = description

where_field = domain

EOF

cat>/etc/postfix/mysql_virtual_mailbox_limit_maps.cf<<EOF

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = mailbox

select_field = quota

where_field = username

EOF

cat>/etc/postfix/mysql_virtual_mailbox_maps.cf<<EOF

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = mailbox

select_field = maildir

where_field = username

EOF

mysql_virtual_mailbox_maps.cf:服务器邮箱文件的存储路径。

mysql_virtual_domains_maps.cf:邮件服务器上所有的虚拟域。

mysql_virtual_alias_maps.cf:邮件服务器上虚拟别名和实际邮件地址间的对应关系。

mysql_virtual_mailbox_limit_maps.cf:服务器上邮箱的一些限制参数。

如上配置文件可以供Postfix读取数据库表。

默认是基于hash:/etc/aliases查询表,哈希文件,文件的路径是/etc/aliases。Postfix在需要的时候读取这些配置信息,然后根据这些配置信息的指示,到另外的文件或者数据库中去读取实际的数据。

创建数据库并授权:

create database postfix charset=utf8;

grant all privileges on postfix.* to postfix@'localhost' identified by "postfix";

flush privileges;

修改postfixadmin配置文件数据库连接信息:



通过Postfixamin创建4个虚拟用户,如图所示:



配置Dovecot服务,修改dovecot.conf配置文件代码如下:

#/etc/dovecot/dovecot.conf

#OpenEuler: Linux 2.6.32

#2026年7月1日09:53:30

auth_mechanisms = PLAIN LOGIN

#auth_mechanisms = PLAIN LOGIN CRAM-MD5 DIGEST-MD5

disable_plaintext_auth = no

first_valid_uid = 1000

listen = *

mail_location = maildir:/var/spool/mail/%d/%n

managesieve_notify_capability = mailto

managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date

passdb {

args = /etc/dovecot/mysql.conf

driver = sql

}

protocols = imap pop3

service auth {

unix_listener auth-client {

group = postfix

mode = 0660

user = postfix

}

}

ssl = no

userdb {

args = /etc/dovecot/mysql.conf

driver = sql

}

创建Dovecot连接MYSQL认证,配置文件

/etc/dovecot/mysql.conf代码如下:

driver = mysql

connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=postfix

default_pass_scheme = MD5

password_query = SELECT password FROM mailbox WHERE username = '%u'

user_query = SELECT maildir, 1000 AS uid, 1000 AS gid FROM mailbox WHERE username = '%u'

使用虚拟用户登录RoundCube,如图所示:



懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表