在我的 VPS Debian Jessie 上,电子邮件服务器 Postfix + Dovecot 的用户和密码在 MySQL 上,我安装了 OpenDKIM,它也使用 MySQL 作为密钥。如果由于某种原因服务器重新启动,我每次都能找到处于“活动(退出)”状态的 OpenDKIM 服务,并且日志报告:
opendkim: /etc/opendkim.conf: dsn:mysql://NAME-MAILUSER:**PLAINTEXT-PASSWORD**@MYSQL-PORT+127.0.0.1/mailserver/table=virtual_domains?keycol=name?datacol=ID: dkimf_db_open(): Can't connect to MySQL server on '127.0.0.1' (111)
原因似乎是与 MySQL 服务器的连接
如果我重新启动 OpenDKIM,问题就消失,永远如此。
我有两个问题:
- 是否可以阻止 systemctl 在日志中显示 MySQL 密码?
- 确保 OpenDKIM 发现 MySQL 服务器已启动并正确重启 (OpenDKIM)?设置不同的服务优先级可以解决问题吗?在这种情况下,最佳做法是什么?
非常感谢!
大卫
答案1
回答 2:在 mariadb 或 mysql 之后启动 opendkim:
mkdir /etc/systemd/system/opendkim.service.d
添加到该目录 /etc/systemd/system/opendkim.service.d/database-dependency.conf:
[Unit]
After=mariadb.service
注意:如果这是您系统上的服务名称,则使用mysql.service
而不是。mariadb.service
參考文獻:systemd.unit 手册页
问题 1 的答案:
删除错误可能会阻止密码进入日志。据我所知,没有配置选项可以从日志中删除密码。
但是,另一种方法是创建一个不依赖于密码的数据库 opendkim 用户,只需 unix 用户也是 opendkim。这可以通过以下方式完成unix套接字身份验证。
INSTALL PLUGIN unix_socket SONAME 'auth_socket';
ALTER USER opendkim IDENTIFIED VIA unix_socket;
注意:ALTER USER 仅适用于 mariadb-10.2+。在早期版本中可能需要删除并重新创建用户/授权。
opendkim 使用的 opendbx dsn 将需要连接到 unix 套接字,而不是 TCP 连接。这可能只需要调用主机,但我不能 100% 确定。此外,一些 postfix 进程在 chroot 中运行,因此如果不更改中的列,localhost
将无法连接到 unix 套接字。chroot=n
master.cf
编辑:* 更改为 xxx.conf 文件名约定 * 根据所使用的服务允许使用 mysql 或 mariadb * 编辑 - 一些 postfix 进程是 chrooted。