老旧邮件中继配置排查求助:无法定位邮件发送及密码配置位置
老旧邮件中继配置排查求助:无法定位邮件发送及密码配置位置
兄弟我之前也碰到过这种没文档的老服务器排查邮件配置的糟心事儿,给你列几个实用的排查方向,一步步来挖:
先查sendmail的隐藏/非标准配置文件:
有时候自定义的中继、认证信息不会直接写在主配置.cf里,试试这几个操作:- 搜
/etc/mail目录下所有包含认证信息的文件:grep -r "AuthInfo" /etc/mail/ - 检查sendmail的宏配置文件
sendmail.mc,看看有没有定义中继或认证相关的宏:grep -i "relay\|auth" /etc/mail/sendmail.mc - 看看有没有
relay-domains、access这类辅助配置文件,里面可能藏着中继规则
- 搜
查看sendmail运行时的进程参数:
有些时候启动sendmail会指定额外的配置文件或者中继参数,用命令ps aux | grep sendmail看看进程命令行里有没有带-C参数指定了非默认的配置文件,或者其他和中继相关的选项检查系统全局/用户级的邮件配置:
cron发邮件的时候可能会读取全局的/etc/mail.rc或者发件用户(比如root)的~/.mailrc,看看这些文件里有没有设置relayhost、from或者认证相关的参数排查是否有第三方sendmail替代工具:
很多人会用msmtp、ssmtp这类轻量工具伪装成sendmail,让应用调用。你可以:- 先看sendmail的实际路径:
which sendmail - 再看是不是软链接到其他工具:
ls -l /usr/sbin/sendmail
如果是msmtp,配置文件可能在/etc/msmtprc或者用户家目录的~/.msmtprc;如果是ssmtp,配置在/etc/ssmtp/ssmtp.conf,这些文件里一般会存中继地址和账号密码
- 先看sendmail的实际路径:
核实Drupal的实际邮件发送配置:
虽然Drupal说用sendmail,但说不定它偷偷指定了自定义的sendmail路径。可以:- 登录Drupal后台,找邮件系统配置项,看
sendmail_path是不是设置了非默认的命令 - 直接找Drupal的
settings.php文件,搜索mail_system或者sendmail_path关键词
- 登录Drupal后台,找邮件系统配置项,看
终极手段:抓包分析邮件流量
如果上面都没找到,就用tcpdump抓邮件发送的数据包:tcpdump -i any port 25 or port 587 or port 465,看看服务器实际连接的是哪个中继地址,再针对性去搜这个地址相关的配置文件,说不定密码存在某个用户的隐藏配置里
备注:内容来源于stack exchange,提问作者markb
相关产品推荐
相关产品推荐

