我遇到了 sendmail 问题,但我并不是 sendmail 专家 —— 我需要一些帮助。
我的问题是,我的系统或多或少是“设备”——它不打算有管理员。因此,它需要能够通过发送电子邮件“打电话回家”。正如我们配置的那样,它工作正常——使用 sendmail,它通过查找 MX 记录找到适当的中继,一切正常。
然而,现在出于安全考虑,我们希望将其限制为使用恰好一个中继,例如relay.corp.example.com
。如果用户将其配置为使用,则fubar.example.com
邮件发送将失败或被推迟。
我认为通过配置 sendmail 包含一个/etc/mail/server.switch
文件
hosts files
如果没有dns
,我就会得到那种效果。这不起作用——相反,如果它收到发往 的邮件[email protected]
,它会尝试直接与 对话example.com
,并忽略配置的服务器。
有任何想法吗?
更新
好的,我通过实验结合了这两种方案,它们似乎都有效。希望我能把它们都标记为正确。
答案1
你使用 m4 来构建你的吗sendmail.cf
?如果是的话,你应该添加
define(`SMART_HOST',`relay.corp.example.com')
到你的sendmail.mc
并重新生成你的sendmail.cf
。看起来就像添加
DSrelay.corp.example.com
正确的sendmail.cf
做法也可以达到同样的效果。
答案2
这是 SuSE 系统的 M4 文件,用于将所有电子邮件转发到中继主机。
(SuSE 发行版中也包含该文件)。您只需执行 m4 x.mc >x.cf,其中 x.mc 是下面的文件,x.cf 是用于替换 sendmail.cf 文件的文件(通常在 /etc/sendmail.cf 或 /etc/mail/sendmail.cf 中)。
divert(-1)
#
# Copyright (c) 1999 SuSE GmbH Nuernberg, Germany.
# Copyright (c) 2006 SuSE LINUX Products GmbH, Germany.
# Author: Werner Fink
# Please send feedback to http://www.suse.de/feedback/
#
# This is a special case -- it creates a stripped down configuration
# file containing nothing but support for forwarding all mail to a
# central hub via a local SMTP-based network. The argument is the
# name of that hub.
#
include(`/usr/share/sendmail/m4/cf.m4')
divert(0)dnl
VERSIONID(`@(#)Setup for SuSE Linux 0.2 (SuSE Linux) 2002/01/14')
dnl
dnl This is the default configuration for SuSE Linux.
dnl See /usr/share/sendmail/ostype/suse-linux.m4
dnl and /usr/share/sendmail/README for more information.
dnl
OSTYPE(`suse-linux')dnl
dnl
dnl A stripped down configuration. Replace the mailhub.domain.notused
dnl with your real mailhub.
dnl
FEATURE(`nocanonify')dnl
FEATURE(`nullclient', `relay.corp.example.com')dnl
dnl
dnl This line is required for formating the /etc/sendmail.cf
dnl
LOCAL_CONFIG