Samba 系列(十二):如何在 Samba4 AD 中集成 iRedMail Roundcube
| 2017-07-08 20:51:00 评论: 0
Roundcube 是 Linux 中最常用的 Webmail 用户代理之一,它为终端用户提供了一个现代化的 Web 界面,它可以与所有邮件服务进行交互,以便阅读、撰写和发送电子邮件。Roundcube 支持各种邮件协议,包括安全的邮件协议,如IMAPS、POP3S 或者 submission。
在本文中,我们将讨论如何在 iRedMail 中使用 IMAPS 以及 submission 安全端口配置 Roundcube,以检索和发送 Samba4 AD 帐户的电子邮件、如何从浏览器访问 iRedMail Roundcube Web 界面,并添加网址别名、如何启用 Samba4 AD 集成全局 LDAP 地址簿以及如何禁用某些不需要的 iRedMail 服务。
要求
第一步:在 Samba4 AD DC 中声明域帐户的电子邮件地址
1、 为了发送和接收 Samba4 AD DC 域账户的邮件,您需要编辑每个用户帐户,如下所示,通过从安装了 RSAT 工具的 Windows 机器并且已经加入 Samba4 AD 中打开 ADUC 工具显式地在邮箱字段填写正确的地址。
添加邮箱帐户来加入 Samba4 AD DC
2、 相似地,要使用邮件列表,你需要在 ADUC 中创建组,为每个组添加相应的电子邮件地址,并分配合适的用户帐户作为每个组的成员。
这步创建了一个邮件列表,所有 Samba4 AD 组成员的邮箱都会收到给这个 AD 组邮箱地址的邮件。使用下面的截图作为指导为 Samba4 组声明电子邮件字段,并为组添加域成员。
确保所有的域账户成员都添加到了声明了邮件地址的组中。
为 Samba4 AD DC 创建组管理员
将用户添加到组
在本例中,发送给 [email protected] 的所有邮件地址将被该组的每个成员邮箱接收,它是 “Domain Admins” 组声明的电子邮件地址。
3、 你可以声明 Samba4 AD 帐户的电子邮件地址的另一种方法是直接从其中一个 AD DC 控制台使用 samba-tool 命令行创建一个用户或组,并使用 --mail-address
标志指定邮件地址。
使用下面其中一个命令创建一个指定邮件地址的用户:
# samba-tool user add [email protected] --surname=your_surname --given-name=your_given_name your_ad_user
创建一个指定邮件地址的组:
# samba-tool group add [email protected] your_ad_group
将成员添加到组中:
# samba-tool group addmembers your_group user1,user2,userX
使用下面的语法列出 samba-tool 中有关用户或者组的命令字段:
# samba-tool user add -h
# samba-tool group add -h
第二步:安全 Roundcube Webmail
4、 开始修改 Roundcube 配置文件之前,首先使用 netstat 命令管道输出给 egrep 过滤器来列出 Dovecot 和 Postfix 监听的套接字,并确保安全端口(IMAPS 是 993,submission 是 587 )是活跃的并且已启用。
# netstat -tulpn| egrep 'dovecot|master'
5、 要强制邮件的接收和发送在使用安全的 IMAP 和 SMTP 端口的 Roundcube 以及 iRedMail 服务之间,打开位于 /var/www/roundcubemail/config/config.inc.php
的 Roundcube 配置文件并确保你修改过了下面的行,本例中是 localhost
,如下片段所示:
// For IMAPS
$config['default_host'] = 'ssl://127.0.0.1';
$config['default_port'] = 993;
$config['imap_auth_type'] = 'LOGIN';
// For SMTP
$config['smtp_server'] = 'tls://127.0.0.1';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['smtp_auth_type'] = 'LOGIN';
这步强烈建议在远程主机中安装 Roudcube,而不是提供了邮件服务的主机中(IMAP、POP3 或者 SMTP 守护进程)。
6、 接下来,不要关闭配置文件,搜索并做如下小的修改以便 Roundcube 能够通过 HTTPS 协议访问、隐藏版本号以及自动为登录 Web 界面的帐户追加域名。
$config['force_https'] = true;
$config['useragent'] = 'Your Webmail'; // Hide version number
$config['username_domain'] = 'domain.tld'
7、 同样,禁用下面的插件:managesieve 和 password,通过在以 $config[‘plugins’]
开头的行前添加注释 //
。
一旦登录并验证了域,用户将从连接到 Samba4 AD DC 的 Windows 或 Linux 机器上更改密码。系统管理员将全局管理域帐户的所有筛选规则。
// $config['plugins'] = array('managesieve', 'password');
8、 最后,保存并关闭配置文件,并打开浏览器访问 Roundcube Webmail,通过 HTTPS 协议进入 iRedMail IP 地址或者 FQDN/mail 位置。
由于浏览器使用的是自签名证书,所以你首次访问 Roundcube 会在浏览器上看到一个警告。接受证书并用 Samba AD 帐户凭证登录。
https://iredmail-FQDN/mail
Roundcube Webmail 登录
第三步:在 Roundcube 中启用 Samba AD 联系人
9、 要配置 Samba AD 全局 LDAP 地址簿以在 Roundcube 联系人中显示,再次打开 Roundcube 配置文件,并做如下修改:
到达文件的底部,并辨认以 # Global LDAP Address Book with AD
开头的部分,删除到文件底部的所有内容,并替换成如下代码段:
# Global LDAP Address Book with AD.
#
$config['ldap_public']["global_ldap_abook"] = array(
'name' => 'tecmint.lan',
'hosts' => array("tecmint.lan"),
'port' => 389,
'use_tls' => false,
'ldap_version' => '3',
'network_timeout' => 10,
'user_specific' => false,
'base_dn' => "dc=tecmint,dc=lan",
'bind_dn' => "[email protected]",
'bind_pass' => "your_password",
'writable' => false,
'search_fields' => array('mail', 'cn', 'sAMAccountName', 'displayname', 'sn', 'givenName'),
'fieldmap' => array(
'name' => 'cn',
'surname' => 'sn',
'firstname' => 'givenName',
'title' => 'title',
'email' => 'mail:*',
'phone:work' => 'telephoneNumber',
'phone:mobile' => 'mobile',
'department' => 'departmentNumber',
'notes' => 'description',
),
'sort' => 'cn',
'scope' => 'sub',
'filter' => '(&(mail=*)(|(&(objectClass=user)(!(objectClass=computer)))(objectClass=group)))',
'fuzzy_search' => true,
'vlv' => false,
'sizelimit' => '0',
'timelimit' => '0',
'referrals' => false,
);
在这段代码中替换相应的 name
、hosts
、base_dn
、bind_dn
和 bind_pass
的值。
10、 做了所需修改后,保存并关闭文件,登录 Roundcube webmail 界面,并进入地址簿菜单。
所有域名帐户(用户和组)与其指定的电子邮件地址的联系人列表都将被显示在全局地址簿上。
Roundcube 用户联系人列表
第四步:为 Roundcube Webmail 界面添加一个别名
11、 要从 https://webmail.domain.tld 访问 Roundcube 而不是从 iRedMail 默认提供的旧地址,你需要进行以下更改。
在已安装 RSAT 工具的已加入的 Windows 机器上打开 DNS 管理器,并如下所示,添加一条 iRedMail FQDN、named webmail 的 CNAME 记录。
DNS Webmail 属性
12、 接下来,在 iRedMail 机器中,打开位于 /etc/httpd/conf.d/ssl.conf
的 Apache Web 服务器的 SSL 配置文件,将 DocumentRoot
指向 /var/www/roundcubemail/
。
修改 /etc/httpd/conf.d/ssl.conf
片段:
DocumentRoot “/var/www/roundcubemail/”
重启 Apache 使更改生效。
# systemctl restart httpd
13、 现在打开下面的地址,Roundcube 界面应该会显示出来。接受自签名证书错误以进入登录页面。用你自己的域名替换例子中的 domain.tld。
https://webmail.domain.tld
第五步:禁用 iRedMail 未使用的服务
14、 由于 iRedMail 守护进程配置为查询 Samba4 AD DC LDAP 服务器的帐户信息和其他资源,因此可以通过使用以下命令来安全地停止和禁用 iRedMail 机器上的某些本地服务,例如 LDAP 数据库服务器和 iredpad 服务。
# systemctl stop slapd iredpad
# systemctl disable slapd iredpad
15、 另外,如下图所示,通过在 crontab 文件中的每行之前添加注释 #
,禁用 iRedMail 执行的某些计划任务,例如 LDAP 数据库备份和 iRedPad 跟踪记录。
# crontab -e
禁用 iRedMail 任务
第六步:在 Postfix 中使用邮件别名
16、 要将所有本地生成的邮件(发往 postmaster 并随后重定向到 root 帐户)重定向到特定的 Samba4 AD 帐户,请打开位于 /etc/postfix/aliases
中的 Postfix 别名配置文件,并修改 root
行,如下所示:
root: [email protected]
17、 应用别名配置文件,以便 Postfix 可以通过执行 newaliases
命令以其自己的格式读取它,并测试邮件是否通过发出以下命令发送到正确的域电子邮件帐户。
# echo “Test mail” | mail -s “This is root’s email” root
18、 邮件发送完毕后,请使用你为邮件重定向设置的域帐户登录 Roundcube webmail,并验证先前发送的邮件应该在你的帐户收件箱中。
验证用户邮件
就是这样了!现在你已经有了一个完全工作的与 Samba4 AD 集成的邮件服务器了。域帐户可以用它们的内部或者其他外部域发送和接收邮件了。
本教程中使用的配置可以成功将 iRedMail 服务器集成到 Windows Server 2012 R2 或 2016 AD 中。