Postfix 突然没有为 MySQL 配置

Postfix 突然没有为 MySQL 配置

我已经使用这个服务器大约一周了。全新安装 Ubuntu 20.04,所有软件包都通过 apt 安装。我可以正常接收和发送 IP 之外的邮件。突然间,无法再接收电子邮件了。

我检查了日志,很快就注意到了这条error: unsupported dictionary type: mysql消息,这意味着 postfix 无法根据我的数据库检查收件人。我检查了输出apt list --installed,但 postfix-mysql 已安装,所以这不是问题所在。我很快发现我需要添加以下行: mysql /usr/lib/postfix/postfix-mysql.so.1.0.1 dict_mysql_open to /etc/postfix/dynamicmaps.cfand do a postfix reload

我的问题是:这怎么可能发生?我确实有一个apt update && apt upgrade正在运行的 cron,可以自动更新服务器。

更新

我看到的最新更新是这样的:

2021-09-28 23:01:31 upgrade postfix:amd64 3.4.13-0ubuntu1.1 3.4.13-0ubuntu1.2 问题就从那之后开始出现。dynamicmaps.cf除了顶部注释的指令行外,其余内容为空。我添加了 mysql 行,现在这是文件中唯一有效的行。

更新 2

终止我运行发现的所有进程后ps -Af | grep -E 'dpkg|debconf|apt|unatt'

sudo apt update
sudo apt-get install --fix-broken
sudo dpkg --configure -a -D223

当我尝试配置 Postfix 时,出现了以下错误:

D000001: process queue pkg postfix-mysql:amd64 queue.len 54 progress 1, try 1
dpkg: dependency problems prevent configuration of postfix-mysql:
 postfix-mysql depends on postfix (= 3.4.13-0ubuntu1.2); however:
  Package postfix is not installed.

dpkg: error processing package postfix-mysql (--configure):
 dependency problems - leaving unconfigured

我对 dpkg 了解不够,无法理解这一点。这里发生了什么?

更新 3

dpkg-query --show --showformat='${package} ${status}\n' 'postfix*' 产量:

postfix install ok installed                                                                                            postfix-cdb unknown ok not-installed
postfix-doc unknown ok not-installed
postfix-ldap unknown ok not-installed
postfix-lmdb unknown ok not-installed
postfix-mysql install ok installed
postfix-pcre unknown ok not-installed
postfix-pgsql unknown ok not-installed
postfix-sqlite unknown ok not-installed

因此,两个请求的软件包都处于正常和已安装状态。据我所知,apt 命令没有建议修复(我仔细阅读了输出)。看来你的建议奏效了。

我不喜欢的是不知道自己在做什么,但这是由于我自己对 apt 和 dpkg 缺乏了解。

答案1

每次升级 postfix 地图包时,它都会首先从中删除其相应的地图类型/etc/postfix/dynamicmaps.cf,然后才将其添加回来。您可以通过 强制重新配置来手动查看此功能是否有效dpkg-reconfigure postfix-mysql。如果升级后文件为空,这可能意味着升级被中断 - 或者仍然挂起,等待从未出现的用户输入。

如果您正在应用所有 SRU,那么您将已将 Postfix 升级到3.4.13-0ubuntu1.2Ubuntu 20.04。我建议您确认当前没有应用任何升级:

ps -Af | grep -E 'dpkg|debconf|apt|unatt'
dpkg-query --show --showformat='${package} ${status}\n' 'postfix*'

你的 cron 任务有缺陷,它没有告诉 apt 这是一个非交互式调用,这个可能是它悬挂的原因。

如有必要,请确保所有软件包均已正确安装。在此步骤中,您可能会看到警告或问题,以帮助确定为什么你的 cron 作业失败。

sudo apt update
sudo apt-get install --fix-broken
sudo dpkg --configure -a -D223

不要忘记删除有问题的 cron 作业,因为设置了一些可靠的内容。unattended-upgrade当没有管理员待命时,该程序通常是在 Ubuntu 系统上应用升级的首选方法。它将跳过或使用 apt 以交互方式请求的内容的默认值。

相关内容