Postfix/Dovecot 支持多个域名

Postfix/Dovecot 支持多个域名

我有一台运行 Postfix/Dovecot 的服务器,后端配置为使用域名“olddomain.com”。我正在迁移所有内容以使用另一个域名“newdomain.com”,并且 Postfix/Dovecot/Postfixadmin 也都需要迁移。但是我需要在一段时间内支持这两个域名,这对用户来说应该是透明的。发送到 ' 的电子邮件[电子邮件保护]'需要到达'[电子邮件保护]',用户需要能够使用'登录(Postfixadmin / Dovecot)[电子邮件保护]' 和 '[电子邮件保护]', ETC。

我不知道如何做到这一点来支持命名的用例,因此任何帮助都将不胜感激。

相关配置内容:

后配置-n

命令目录 = /usr/sbin
配置目录 = /etc/postfix
daemon_directory = /usr/libexec/postfix
数据目录 = /var/lib/postfix
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
dovecot_destination_recipient_limit = 1
html_directory = 否
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
mynetworks_style = 主机
newaliases_path = /usr/bin/newaliases
队列目录 = /var/spool/postfix
readme_directory = 否
Relay_domains = mysql:/etc/postfix/mysql_relay_domain_maps.cf
中继主机 = *******
样本目录 = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_sasl_auth_enable = 是
smtpd_sasl_path = private/auth
smtpd_sasl_type=dovecot
未知本地收件人拒绝代码 = 550
virtual_alias_maps = mysql:/etc/postfix/sql_virtual_alias_maps.cf
虚拟邮箱域 = mysql:/etc/postfix/sql_virtual_domain_maps.cf
虚拟邮箱映射 = mysql:/etc/postfix/sql_virtual_mailbox_maps.cf
virtual_transport=dovecot(鸽舍)

sql_virtual_mailbox_maps.cf:

密码 = ****
主机 = 本地主机
数据库名称 = pf_adm
查询 = SELECT CONCAT(maildir, 'Maildir/') AS maildir FROM mailbox WHERE username='%s' AND active = '1'

sql_virtual_domain_maps.cf:

用户 = ****
密码 = ****
主机 = 本地主机
数据库名称 = pf_adm
查询 = 从域中选择域,其中域 ='%s' AND backupmx ='0' AND active ='1'

sql_virtual_alias_maps.cf:

用户 = ****
密码 = ****
主机 = 本地主机
数据库名称 = pf_adm
查询 = SELECT goto FROM alias WHERE address='%s' AND active = '1'

doveconf-n

# 2.1.9:/etc/dovecot/dovecot.conf
# 操作系统:Linux 3.4.5 强化 i686 Gentoo 基础系统版本 2.1 ext4
auth_verbose = 是
first_valid_gid = 12
first_valid_uid = 8
last_valid_gid = 12
last_valid_uid = 8
mail_gid = 12
mail_location = maildir:/var/mail/%d/%n/Maildir/:INDEX=/var/mail/%d/%n/indexes
mail_uid = 8
命名空间收件箱{
  收件箱 = 是
  位置 =
  邮箱草稿 {
    特殊用途 = \草稿
  }
  邮箱垃圾邮件{
    特殊用途 = \Junk
  }
  邮箱已发送{
    special_use = \已发送
  }
  邮箱“已发送消息”{
    special_use = \已发送
  }
  邮箱 垃圾箱 {
    特殊用途 = \垃圾
  }
  前缀 =
}
密码数据库 {
  参数 = /etc/dovecot/dovecot-sql.conf.ext
  驱动程序 = sql
}
邮政局长地址 =[电子邮件保护]
协议 = imap
服务授权 {
  unix_listener /var/spool/postfix/private/auth {
    组 = 后缀
    模式 = 0660
    用户 = 后缀
  }
  unix_listener auth-userdb {
    群组 = 邮件
    模式 = 0600
    用户=邮件
  }
}
ssl_cert =

奖励信息(如果需要),用户存储如下:

+------------------------+-------------------------+------------+-----------++ | 用户名 | maildir | 本地部分 | 域 | +------------------------+-------------------------+------------+-----------++ |[电子邮件保护]| olddomain.com/username/ | 用户名 | olddomain.com | +------------------------+-------------------------+------------+-----------++

答案1

坚持要求每个地址都提供完整的域名会给你带来麻烦。

这实际上没有必要,因为您只有一个域,所以一个简单的解决方案就是改变 SQL 查找以仅对本地部分进行操作。

将新域添加到 virtual_mailbox_domains 并仅对 virtual_mailbox_maps 执行本地部分查找。

两个域以及其中的所有用户都将被接受和交付。

对 virtual_mailbox_domains 使用复杂的查询也不太可能有帮助。
只需列出 virtual_mailbox-domains 中的域即可:

virtual_mailbox_domains = olddomain, newdomain

相关内容