我正在运行 CENTOS 6.2,有 2 个虚拟机,一个是'身份验证'(192.168.0.2)和另一个代理(192.168.0.3)。代理主机没有互联网连接。我的目的是代理主机将其邮件发送到身份验证主机,然后身份验证主机从那里发送邮件。
我已经在 sendmail.mc 中配置了智能主机配置代理人像这样 :
define(`SMART_HOST', '192.168.0.2')
我也设置了一个中继授權在访问下:
CONNECT:192.168.0.3 RELAY
但是,当我仍尝试使用以下方法从代理发送邮件时:
mail [email protected]
邮件未发送出去,日志显示如下:
Jan 15 01:03:48 test1 sendmail[14388]: s0F8xmdl014388: from=proxy, size=244, class=0, nrcpts=1, msgid=<201401150859.s0F8xmdl014388@test1>, relay=root@localhost
Jan 15 01:03:48 test1 sendmail[14388]: s0F8xmdl014388: [email protected], delay=00:04:00, mailer=esmtp, pri=30244, dsn=4.4.3, stat=queued
它仍通过 root@localhost 进行中继。
我尝试过使用按照 EreBusBat 的解释进行修复我仍然遇到同样的问题。
答案1
在智能主机定义中包含邮件程序规范,并将 IP 地址放在方括号内。
define(`SMART_HOST', `relay:[192.168.0.2]')
答案2
我尝试过,但还是没有用。
然而,我又仔细研究了一下,找到了一个解决方案。事情的原因是,尽管没有互联网,但“proxy”的 sendmail 仍不断检查我的 DNS 服务器,以解析“auth”的位置。因此,当它失败时,它就回到了root@localhost
中继代理的状态。
我需要强制代理的 sendmail 查找我的/etc/hosts
文件。为此,我做了以下操作:
在/etc/mail/submit.mc
文件中:
divert(0)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for RHEL')dnl
define(`confCF_VERSION', `Submit')dnl
define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining
define(`confTIME_ZONE', `USE_TZ')dnl
define(`confDONT_INIT_GROUPS', `True')dnl
define(`confPID_FILE', `/var/run/sm-client.pid')dnl
define(`SMART_HOST',`my smarthost from /etc/hosts')dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
MASQUERADE_AS(`Your DNS domain: example.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
FEATURE(`use_ct_file')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
另外,在/etc/mail
server.switch 文件中创建:
主机文件别名文件