已卸载OpenDKIM后仍有程序向opendkim用户发送邮件,Postfix邮件投递失败
已卸载OpenDKIM后仍有程序向opendkim用户发送邮件,Postfix邮件投递失败
看起来你遇到的问题是卸载OpenDKIM之后,系统里依然有程序在往opendkim用户发邮件,导致Postfix投递失败——毕竟opendkim指定的Maildir位置权限不对,而且这个用户大概率已经不需要了。我来一步步帮你解决:
第一步:排查发件根源
首先得找到是谁在发这些邮件,不然就算处理了现有邮件,可能还会有新的进来:
- 检查是否有残留的opendkim进程:
ps aux | grep opendkim,如果查到进程,直接用kill -9 <进程ID>杀掉,再确认是不是有服务没停干净 - 查看系统定时任务:先看当前用户的定时任务
crontab -l,再检查/etc/crontab、/etc/cron.d/目录下的脚本,有没有程序在自动发邮件给opendkim - 翻查系统日志:比如
/var/log/syslog,搜索opendkim相关条目,找出发件的来源程序
第二步:解决opendkim用户的邮件投递问题
Postfix一直在尝试投递邮件给opendkim但失败,你可以选下面的方法处理:
方法A:直接丢弃或转发opendkim的邮件(推荐)
既然已经卸载OpenDKIM,这些邮件基本是无用的,直接处理掉最省心:
- 编辑Postfix的别名文件:
sudo nano /etc/aliases - 添加一行:
opendkim: /dev/null(直接丢弃邮件)或者opendkim: root(转发给root查看内容) - 更新别名数据库:
sudo newaliases - 重启Postfix生效:
sudo systemctl restart postfix
或者用你已经配置的virtual_alias_maps:
- 编辑
/etc/postfix/virtual,添加:opendkim@example.com discard: - 更新映射表:
sudo postmap /etc/postfix/virtual - 重启Postfix:
sudo systemctl restart postfix
方法B:彻底删除opendkim用户(确认不需要时用)
如果opendkim用户还存在,直接删掉即可:
- 先检查用户是否存在:
id opendkim - 删除用户并连带清理家目录:
sudo userdel -r opendkim - 注意
/run/opendkim是临时目录,重启系统会自动清理,也可以手动删除:sudo rm -rf /run/opendkim
第三步:清理OpenDKIM的残留配置
有时候卸载软件后会留下配置文件,导致系统还在触发相关邮件:
- 检查Postfix主配置
/etc/postfix/main.cf,看看有没有和OpenDKIM相关的milter设置(比如smtpd_milters、non_smtpd_milters),如果有,注释或删除这些行,然后重启Postfix - 检查systemd服务残留:
systemctl list-unit-files | grep opendkim,如果查到残留的服务文件,手动删除(比如/etc/systemd/system/opendkim.service),再运行sudo systemctl daemon-reload
处理完之后,你可以再查看/var/log/mail.log,确认是否还有新的投递失败日志,如果没有就说明问题解决了。
备注:内容来源于stack exchange,提问作者Mohammed Baashar
相关产品推荐
相关产品推荐

