热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在防火墙上设置Sendmail

文章标题:如何在防火墙上设置Sendmail。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  环境:
  公司注册了正式域名company.com,防火墙运行Linux且用专线接入ISP,是通往Internet的唯一通道,用来处理公司内部出去的邮件和发往公司内部用户@company.com的所有邮件。在内部局域网上(仅一个网段,没有子网)有一台供内部用户收发邮件的Linux邮件服务器,两台机器均运行Sendmail 8.9.3
  
  Sendmail 8.9.3的新特性
  Sendmail 8.9.3包含几个新的特性,如果配置不当,你的Sendmail可能不能正常工作。这些特性主要是帮助过滤掉垃圾邮件和阻止你的站点被用来作为第三方的mail relay主机(什么是third-party mail relay? 附文章),你能根据你的站点所要求的政策配置这些参数。
  
  1.Mail relay
  
  在Sendmail 8.9.3中Relaying默认被拒绝了,这个特性可能使得运行Sendmail的Linux邮件服务器不允许你向它发送邮件,有几种方法来解决。
  
  a. Default
  
  默认情况下,你能简单地创建文件/etc/mail/relay-domains,它包含你希望接受relay的系统的域名,例如company.com 。如果不能做反向DNS查找,你应该清楚指明IP范围,如要允许内部网段上所有用户向其发送邮件,设为192.168.11 ,注意:你无法设置这里为company.com而允许你公司出差在外的旅行用户(拨当地ISP)来发送邮件。因为你拨到当地ISP后得到的动态IP地址属于当地ISP,反向DNS解析后的域名为ISP的域名,甚至有的不能够做反向DNS。解决办法是设置发送邮件服务器为当地ISP的服务器优点: 如果你仅仅需要relay mail from a few system,这可能是最简单的解决办法,它阻止你的服务器扮演作为relayer,但允许邮件通过。
  缺点:你不能不保持文件不断更新,如果你是ISP,你必须不断保持这个文件被更新,更新后还要重新启动Sendmail ( killall -HUP sendmail )
  
  b. promiscuous_relay
  
  这个特性允许你relay来自任何地方的邮件。(不被建议的)
  
  优点: 你不必担心邮件被拒绝
  
  缺点: 任何人能用你的系统作为mail relay,这个参数的使用取消了8.9.3中新增的反relay 特性。
  
  c. relay_entire_domain
  
  这个特性允许来自在类W中设置的所有域的邮件被允许relay.默认地,这将是*.company.com
  
  优点: 你不会担心来自你的域中的所有邮件被拒绝,你的域以外的系统不能被relay mail除非在/etc/mail/relay-domains文件中被指定或/etc/mail/access中被指定。如果你仅仅想relay你自己的域中的主机,可以用这个参数来代替/etc/mail/relay-domains. 注意: 你需要设置反向DNS,当内部LAN上的主机连接到SMTP服务器上来时能被反向解析到本地域内。如192.168.11.12被解析到sh12.asiansources.com .
  
  缺点:你可能不想允许你公司的其它组织relay mail。
  
  d. relay_hosts_only
  
  这允许你基于个别的主机名relay mail.不是域名。
  
  优点: 细调relay许可权限,基于全称主机名,不是全称域名。
  
  缺点:需要你指定或者在文件/etc/mail/relay-domains或者在access 数据库中的系统主机名。如果用
  
  /etc/mail/relay-domains,文件将是
  company.com
  mailgate.company.com
  othername.com
  mailgate.othername.com
  
  2. Mail blocking
  a. accept_unresolvable_domains
  
  默认地,如果发送者的域名(指发送者邮件地址后面的域名)不能被DNS解析 ,邮件被拒绝的。
  
  如:
  MAILFrom: wkeys@nonexistent 501 …Sender domain must exist
  
  用参数accept_unresolvable_domains 跨越这个并接受来自任何域或IP地址的邮件。
  
  b. access_db
  
  这个特性使得sendmail寻找数据库文件(默认是/etc/mail/access.db),决定是否接受或拒绝mail或者你甚至能设定一个客户化的错误信息,这个特性也能用来控制relay许可。
  
  优点:真的允许你细调将接收从谁来的邮件,如我不想接受来自不能被解析的域的邮件,但对个别域有例外。
  
  c. accept_unqualified_senders
  
  默认地,如果发送者的域不是全称域名,sendmail将拒绝这个连接。如mail from:553 …. Domain name required用这个特性跨越默认的情况以致连接将能被接受。
  
  优点:我建议总是用全称域名地址,然而在内部邮件网关上,你可能不能控制其他本地系统如何发送给你邮件,这将允许你接受带非全称发送者地址的邮件。
  
  缺点:你丢失了一些跟踪邮件来自哪里的能力,不要在防火墙上用它。
  
  d. blacklist_recipients
  
  这允许你阻止不想接受的邮件帐号发来的邮件。需要在/etc/mail/access中设置。
  
  e. relay_based_on_MX
  
  如果一台主机有MX记录指向你的站点,这个特性使得能从他们接受邮件。
  
  优点:如果他们有MX记录指向你你就不需要加任何主机到access database.
  
  缺点:这将允许第三方的mail relay,且不需要你的许可。
  
  3.third-party mail relay
  
  附另外一篇文章(文章荟萃)----sendmail 8.9.3 mail relay规则简介
  
  公司防火墙上sendmail配置举例
  divert(-1)
  include(`/usr/lib/sendmail-cf/m4/cf.m4')
  dnl let's define our OS type. This one is mandatory.
  OSTYPE(`linux')dnl
  define(`confDEF_USER_ID',``8:12'')
  define(`ALIAS_FILE',`/etc/mail/aliases')dnl
  define(`confPRIVACY_FLAGS', `authwarnings,needmailhelo,noexpn,novrfy')dnl
  define(`confTO_QUEUERETURN', `4d')dnl
  define(`confTO_QUEUEWARN', `4h')dnl
  define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
  undefine(`UUCP_RELAY')dnl
  undefine(`BITNET_RELAY') dnl
  FEATURE(`redirect')dnl
  FEATURE(`always_add_domain')dnl
  FEATURE(`use_cw_file')dnl
  FEATURE(`local_procmail')dnl
  FEATURE(`nouucp')dnl
  FEATURE(`mailertable', `hash -o /etc/mail/mailertable')dnl
  FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable')dnl
  FEATURE(`domaintable',`hash -o /etc/mail/domaintable')
  FEATURE(`access_db', `hash -o /etc/mail/access')dnl
  FEATURE(`blacklist_recipients')dnl
  MAILER(procmail)dnl
  MAILER(smtp)dnl
  
  use_cw_file
  默认为/etc/sendmail.cw文件,指明了属于本地域处理的域名,发到这个域下的邮件为本地邮件。不要在防火墙上设置company.com到sendmai.cw中,在内部网段上的邮件服务器上设置它。更新该文件不需要重启sendmail
  
  * How do I make all my addresses appear to be from a single host?
  
  Using the V8 configuration macros, use:
  
  MASQUERADE_AS(my.dom.ain)
  
  This will cause all addresses to be sent out as being from the indicated domain.
  If you're using version 8.7 sendmail, and you want to hide this information in the envelope
  as well as the headers, use:
  
  FEATURE(masquerade_envelope)
  
  If you also want to masquerade the recipients, use
  
  FEATURE(allmasquerade)
  
  Mailertable
  用这个特性可跨越DNS和DNS MX记录而relay mail。也可跨越Smart_host(DSxxxx)项.
  
  如 company.com relay:[192.168.11.1]
  
  从防火墙上接收的发往company.com的邮件relay到192.168.11.1
  
  Include a "mailer table" which can be used to override
  routing for particular domains. The argument of the
  FEATURE may be the key definition. If none is specified,
  the definition used is:
  
  hash -o /etc/mailertable
  
  Keys in this database are fully qualified domain names
  or partial domains preceded by a dot -- for example,
  "vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU".
  Values must be of the form:
  mailer:domain
  where "mailer" is the internal mailer name, and "domain"
  is where to send the message. These maps are not
  reflected into the message header. As a special case,
  the forms:
  local:user
  will forward to the indicated user using the local mailer,
  local:
  will forward to the original user in the e-mail address
  using the local mailer, and
  error:code message
  will give an error message with the indicated code and
  message.
  Domaintable
  
  域替换操作。
  
  如果容易打错,发往company.com的邮件误写为compayn.com则加入一行
  compayn.com company.com
  Access.db
  数据库记录包含两部分:the key and the action:
  the key能是用户名,域名,或IP地址。
  The action能是ok, relay,reject discard, or and RFC821 message
  如:
  cyber
推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Echarts图表重复加载、axis重复多次请求问题解决记录
    文章目录1.需求描述2.问题描述正常状态:问题状态:3.解决方法1.需求描述使用Echats实现了一个中国地图:通过选择查询周期&#x ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
author-avatar
几米身边的孩子们
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有