rfc2505.txt
来自「<VC++网络游戏建摸与实现>源代码」· 文本 代码 · 共 1,348 行 · 第 1/4 页
TXT
1,348 行
Lindberg Best Current Practice [Page 6]RFC 2505 Anti-Spam Recommendations February 1999 If that next MX host does not have the same refuse-list, it will of course accept the mail, only to find that the final host still refuses to receive that piece of mail ("MAIL From:"). Our intent was to make the offending mail stay at the offending sender's host and fill up his mqueue disk, but it all ended up at our friend, the next lowest preference MX-host. Finally, it has been suggested that one may use a 2xx Return Code but nevertheless decide not to forward or receive the spam mail; typical alternatives are to store it elsewhere (e.g. /dev/null). This clearly violates the intent of RFC821 and should not be done without careful consideration - instead of blindly dropping the mail one could re- queue it and manually (or automagically) inspect whether it is spam or legitimate mail and whether it should be dropped or forwarded.1.7. Mailing Lists An MTA that also has the ability to handle mailing lists and expand that to a number of recipients, needs to be able to authorize senders and protect its lists from spam. The mechanisms for this may be very different from those for ordinary mail and ordinary users and are not covered in this memo.2. Recommendations Here we first give a brief list of recommendations, followed by a more thorough discussion of each of them. We will also give recommendations on things NOT to do, things that may seem natural in the spam fight (and might even work so far) but that might wreak havoc on Internet mail and thus may cause more damage than good. 1) MUST be able to restrict unauthorized use as Mail Relay. 2) MUST be able to provide "Received:" lines with enough information to make it possible to trace the mail path, despite spammers use forged host names in HELO statements etc. 3) MUST be able to provide local log information that makes it possible to trace the event afterwards. 4) SHOULD be able to log all occurrences of anti-relay/anti-spam actions. 5) SHOULD be able to refuse mail from a host or a group of hosts. 6a) MUST NOT refuse "MAIL From: <>". 6b) MUST NOT refuse "MAIL From: <user@my.local.dom.ain>".Lindberg Best Current Practice [Page 7]RFC 2505 Anti-Spam Recommendations February 1999 7a) SHOULD be able to refuse mail from a specific "MAIL From:" user, <foo@domain.example>. 7b) SHOULD be able to refuse mail from an entire "MAIL From:" domain <.*@domain.example>. 8) SHOULD be able to limit ("Rate Control") mail flow. 9) SHOULD be able to verify "MAIL From:" domain (using DNS or other means). 10) SHOULD be able to verify <local-part> in outgoing mail. 11) SHOULD be able to control SMTP VRFY and EXPN. 12) SHOULD be able to control SMTP ETRN. 13) MUST be able to configure to provide different Return Codes for different rules (e.g. 451 Temp Fail vs 550 Fatal Error). The discussion below often ends up with a need to do various forms of pattern matching on domain/host names and IP addresses/subnets. It is RECOMMENDED that the data/template for doing so may be supplied outside of the MTA, e.g. that the pattern matching rules be included in the MTA but that the actual patterns may be in an external file. It is also RECOMMENDED that the pattern matching rules (external file) may contain regular expressions, to give maximum flexibility. Of course string matching on domain/host names MUST NOT be case sensitive. Since <local-part> may be case sensitive it may be natural to keep that here. However, since <sPAmMeR@domain.example> and <spammer@domain.example> is most probably the same user and since the string compares are used to refuse his messages, we suggest that <local-part> comparisons be case insensitive too. The interpretation that should apply to all these recommendations is flexibility - regardless of how well we design anti-spam rules today, spammers will find ways around them and a well designed MTA should be flexible enough to meet those new threats.2.1. Restricting unauthorized Mail Relay usage Unauthorized usage of a host as Mail Relay means theft of the relay's resources and puts the relay owner's reputation at risk. It also makes it impossible to filter out or block spam without at the same time blocking legitimate mail. Therefore, the MTA MUST be able to control/refuse such Relay usage.Lindberg Best Current Practice [Page 8]RFC 2505 Anti-Spam Recommendations February 1999 In an SMTP session we have 4 elements, each with a varying degree of trust: 1) "HELO Hostname" Easily and often forged. 2) "MAIL From:" Easily and often forged. 3) "RCPT To:" Correct, or at least intended. 4) SMTP_Caller (host) IP.src addr OK, FQDN may be OK. Since 1) and 2) are so easily and often forged, we cannot depend on them at all to authorize usage of our host as Mail Relay. Instead, the MTA MUST be able to authorize Mail Relay usage based on a combination of: o "RCPT To:" address (domain). o SMTP_Caller FQDN hostname. o SMTP_Caller IP address. The suggested algorithm is: a) If "RCPT To:" is one of "our" domains, local or a domain that we accept to forward to (alternate MX), then accept to Relay. b) If SMTP_Caller is authorized, either its IP.src or its FQDN (depending on if you trust the DNS), then accept to Relay. c) Else refuse to Relay. When doing a) you have to make sure all kinds of SMTP source routing (both the official [@a,@b:u@c], the '%' hack and uucp-style '!' path) is either removed completely before the test, or at least is taken into account. A site implementing this requirement must also be aware that they might block correctly addressed messages, especially such originating or terminating in a gateway to a different mail system than SMTP. Before implementing such a policy, a careful inventory should be done to make sure all routing algorithms used, either by other mail systems or ad-hoc, are known. Each one of such systems must be taken care of on a case-by-case basis. Examples of such mail systems, and their addressing schemes are X.400 with an address of the type: "/c=us/admd= /prmd=xyz/dd.rfc-822=user(a)final/"@x400-gateway Another example involves DECnet MAIL-11, which can have addresses in the form:Lindberg Best Current Practice [Page 9]RFC 2505 Anti-Spam Recommendations February 1999 "gateway::smtp%\"user@final\""@mail-11-gateway In all cases the configuration MUST support wild cards for FQDNs and classful IP addresses and SHOULD support "address/mask" for classless IP addresses, e.g. domain.example and *.domain.example; 10.11.*.*, 192.168.1.*, 192.168.2.*, 10.0.0.0/13, 192.168.1.0/23. The configuration SHOULD allow for the decision/template data to be supplied by an external source, e.g. text file or dbm database. The decision/template SHOULD be allowed to contain regular expressions.2.2. Received: lines The MTA MUST prepend a "Received:" line in the mail (as described in RFC822, [2], and required in RFC1123, [3]). This "Received:" line MUST contain enough information to make it possible to trace the mail path back to the sender. We have two cases:2.2.1. Direct MTA-to-MTA connections Internet mail was designed such that the sending host connects directly to the recipient as described by MX records (there may be several MX hosts on a priority list). To assure traceability back to the sending host (which may be a firewall/gateway, as described later) each MTA along the path, including the final MTA, MUST prepend a "Received:" line. For such a "Received:" line we have: It MUST contain: o The IP address of the caller. o The 'date-time' as described in RFC822, [2], pp 18. It SHOULD contain: o The FQDN corresponding to the callers IP address. o The argument given in the "HELO" statement. o Authentication information, if an authenticated connection was used for the transmission / submission. It is suggested that most other "Received:" fields described in RFC822 be included in the "Received:" lines. Basically, any information that can help tracing the message can and should be added to the "Received:" line. It is true even when the initial submission is non-SMTP, for example submission via a web-basedLindberg Best Current Practice [Page 10]RFC 2505 Anti-Spam Recommendations February 1999 mail client where http is used between the web client and server, a "Received:" line can be used to identify that connection stating what IP-address was used when connecting to the http server where the mail was created. These recommendations are deliberately stronger than RFC1123, [3], and are there to assure that mail sent directly from a spammer's host to a recipient can be traced with enough accuracy; a typical example is when a spammer uses a dialup account and the ISP needs to have his IP address at the 'date-time' to be able to take action against him.2.2.2. Firewall/gateway type devices Organizations with a policy of hiding their internal network structure must still be allowed and able to do so. They usually make their internal MTAs prepend "Received:" lines with a very limited amount of information, or prepend none at all. Then they send out the mail through some kind of firewall/gateway device, which may even remove all the internal MTAs' "Received:" lines before it prepends its own "Received:" line (as required in RFC1123, [3]). By doing so they take on the full responsibility to trace spammers that send from inside their organization or they accept to be held responsible for those spammers' activities. It is REQUIRED that the information provided in their outgoing mail is sufficient for them to perform any necessary traces. In the case of incoming mail to an organization, the "Received:" lines MUST be kept intact to make sure that users receiving mail on the inside can give information needed to trace incoming messages to their origin. Generally, a gateway SHOULD NOT change or delete "Received:" lines unless it is a security requirement to do so. Changing the content of existing "Received:" lines to make sure they "make sense" when passing a mail gateway of some kind most often destroys and deletes information needed to make a message traceable. Care must be taken to preserve the information in "Received:" lines, either in the message itself, the mail that the receiver gets, or if that is impossible, in logfiles.2.3. Event logs The MTA MUST be able to provide enough local log information to make it possible to trace the event. This includes most of the information put into the "Received:" lines; see above.Lindberg Best Current Practice [Page 11]RFC 2505 Anti-Spam Recommendations February 19992.4. Log anti-relay/anti-spam actions The MTA SHOULD be able to log all anti-relay/anti-spam actions. The log entries SHOULD contain at least: o Time information. o Refusal information, i.e. why the request was refused ("Mail From", "Relaying Denied", "Spam User", "Spam Host", etc). o "RCPT To:" addresses (domains). (If the connection was disallowed at an earlier stage, e.g. by checking the SMTP_Caller IP address, the "RCPT To:" address is unknown and therefore cannot be logged). o Offending host's IP address. o Offending host's FQDN hostname. o Other relevant information (e.g. given during the SMTP dialogue, before we decided to refuse the request). It should be noted that by logging more events, especially denied email, one opens the possibility for denial of service attacks, for example by filling logs by having a very large amount of "RCPT To:" commands. An implementation that implements increased logging according to this description must be aware of the fact that the size of the logfiles increases, especially during attacks.2.5. Refuse mail based on SMTP_Caller address The MTA SHOULD be able to accept or refuse mail from a specific host or from a group of hosts. Here we mean the IP.src address or the FQDN that its .IN-ADDR.ARPA resolves to (depending on whether you trust the DNS). This functionality could be implemented at a firewall, but since the MTA should be able to "defend itself" we recommend it be able to as well. It is RECOMMENDED that the MTA be able to decide based on FQDN hostnames (host.domain.example), on wild card domain names (*.domain.example), on individual IP addresses (10.11.12.13) or on IP addresses with a prefix length (10.0.0.0/8, 192.168.1.0/24). It is also RECOMMENDED that these decision rules can be combined to form a flexible list of accept/refuse/accept/refuse, e.g:Lindberg Best Current Practice [Page 12]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?