AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1096134
Accepted
QF0
QF0
Asked: 2022-03-15 11:36:56 +0800 CST2022-03-15 11:36:56 +0800 CST 2022-03-15 11:36:56 +0800 CST

配置 sendmail 以侦听备用端口

  • 772

我已设置sendmail为侦听端口 1234 而不是 25,只需更改为sendmail.mc:

DAEMON_OPTIONS(`Port=1234, Name=MTA')

这通常有效,但有一个例外。背景是我有一个relay监听25端口(relay必须有MX记录,所以一定是25端口)。中继通过 sendmail 发送邮件,因此 sendmail 监听localhost:1234. 也就是说,sendmail 只负责发送邮件,不负责接收。netstat/etc 确认中继正在监听 25,而 sendmail 正在监听 1234。

这适用于这两个测试用例:

  1. 我可以通过 telnet 发送电子邮件到 sendmail ( telnet localhost 1234)
  2. s-nail我可以通过适当的配置更改发送电子邮件( set mta=smtp://localhost:1234)

但是,如果我直接运行 sendmail ,则此设置不起作用:

sendmail -d8.20 -vt < test-email.txt

在这种情况下,sendmail 尝试通过连接到本地端口 25 来发送邮件,因此它实际上与本地中继通信,而不是远程 SMTP 服务器。调试输出显示:

[email protected]... Connecting to [127.0.0.1] via relay...
220 mydomain.org ESMTP mydomain relay

这让我很困惑——知道这里发生了什么吗?

编辑

取得一些进展。我在 Sendmail 8.15.2,Ubuntu 20.04 上。这个问题并不重要,除了 sendmail 用每 20 分钟运行一次的 cron 作业刷新它的 MSP 队列,所以我得到很多 syslog 失败条目,以及无法投递的电子邮件的大队列,因为 sendmail 找不到自己。

问题似乎如下。当您使用 sendmail 发送邮件(或管理队列)时,它(通常)是一个两步过程。您运行 sendmail,它读取submit.cf(而不是 sendmail.cf),并充当 MSA,将邮件提交给某物。那个东西通常是本地的 sendmail 守护进程,它会sendmail.cf在它启动时读取。

sendmail.cf告诉 sendmail 它需要监听localhost:1234传入的邮件。这意味着它submit.cf必须包含一个配置,告诉 sendmail 程序将外发邮件路由到localhost:1234.

相关submit.mc配置可能是FEATURE msp,默认为

FEATURE(`msp', `[127.0.0.1]', `25')

所以答案大概就是把 25 改成 1234 这么简单。不过,没那么容易。只需更改它、重新生成文件并重新启动 sendmail,就没有什么区别。事实上,使用其中一个或两个重新生成submit.cf完全m4为零make差异,或者为您提供一个cf带有注释掉的功能的文件。某处有一些魔法可以让您更改功能,但我不知道是什么。答案可能在/usr/share/sendmail/cf/feature/msp.m4,但我看不到。

sendmail
  • 0 0 个回答
  • 101 Views

0 个回答

  • Voted
  1. Best Answer
    dinoex
    2022-03-16T06:33:23+08:002022-03-16T06:33:23+08:00

    从命令行运行 sendmail,它使用不同的配置文件。

    编辑文件“submit.mc”

    添加行:

    define(`RELAY_MAILER_ARGS', `TCP $h 1234')dnl
    

    行前:

    FEATURE(`msp', `[127.0.0.1]')dnl
    

    然后将“submit.mc”编译为“submit.cf”。

    • 1

相关问题

  • 如何使用远程 SMTP 配置 php.ini?

  • Linux sendmail 垃圾邮件?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • 如何配置 sendmail 以拒绝日期标题与实时相差太远的电子邮件?

  • 什么是好的 sendmail 日志分析器?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve