WO2005119484A2 - Method and apparatus for managing connections and electronic messages - Google Patents

Method and apparatus for managing connections and electronic messages Download PDF

Info

Publication number
WO2005119484A2
WO2005119484A2 PCT/US2005/018999 US2005018999W WO2005119484A2 WO 2005119484 A2 WO2005119484 A2 WO 2005119484A2 US 2005018999 W US2005018999 W US 2005018999W WO 2005119484 A2 WO2005119484 A2 WO 2005119484A2
Authority
WO
WIPO (PCT)
Prior art keywords
sender
recipient
action
identifier
rule
Prior art date
Application number
PCT/US2005/018999
Other languages
French (fr)
Other versions
WO2005119484A3 (en
Inventor
Paul J. Clegg
Eric C. Huss
Craig Sprosts
Shun Chen
Robert Brahms
Daniel Quinlan
Original Assignee
Ironport Systems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ironport Systems, Inc. filed Critical Ironport Systems, Inc.
Publication of WO2005119484A2 publication Critical patent/WO2005119484A2/en
Publication of WO2005119484A3 publication Critical patent/WO2005119484A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/107Computer-aided management of electronic mailing [e-mailing]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/212Monitoring or handling of messages using filtering or selective blocking

Definitions

  • the present invention generally relates to processing messages, and more specifically, to managing connections for receiving electronic messages at a server from different senders and for managing the electronic messages received at the server for different recipients.
  • MTA Mail transfer agents
  • MTA's typically receive a large number of email messages from many different senders for delivery to many recipients. The number of email messages can range from hundreds of messages per hour to hundreds of thousands of messages per hour.
  • IP Internet Protocol
  • the administrator of the MTA can configure the MTA to refuse to accept email messages from the particular IP address.
  • IP Internet Protocol
  • the administrator will likely identify a large number of IP addresses that send spam to the MTA, and for each such IP address, the administrator must separately configure the MTA to refuse email messages.
  • the same situation can arise for email messages from particular IP addresses that are identified as being infected with a virus.
  • FIG. 1 is a block diagram that depicts a high level overview of a system for managing connections and email messages received by a server, according to an embodiment
  • FIG. 2 is a flow diagram that depicts an approach for managing connections and email messages received by a server, according to an embodiment
  • FIG. 3 is a flow diagram that depicts an approach for managing incoming connections between different senders and a server, according to an embodiment
  • FIG. 4 is a flow diagram that depicts an approach for managing email messages received by a server for different recipients, according to an embodiment
  • FIG. 5 is a block diagram depicting an example of a graphical user interface for use in managing connections and email messages received by a server, according to an embodiment
  • FIG. 6 is a block diagram that depicts a computer system upon which embodiments of the invention may be implemented.
  • a mapping can be used to associate different sender identifiers with different actions so that incoming connections to the MTA from different senders can be handled differently based on the specified actions.
  • a mapping can be used to associate different recipient identifiers with different actions so that email messages received at the MTA for different recipients can be handled differently based on the specified actions.
  • one or more sender identifiers or sender identifier groups are used.
  • a sender identifier can be any identifier that is based on the sender of an email message or the host from which an incoming connection to an MTA originates for injecting email messages into the MTA.
  • sender identifiers include, but are not limited to, the following: a network address, an Internet Protocol (IP) address, a partial IP address, a range of IP addresses, a primary domain, a subdomain, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, an organization identifier, a network owner, a reputation score, and a range of reputation scores.
  • IP Internet Protocol
  • FQDN fully qualified domain name
  • CIDR classless inter-domain routing
  • a sender identifier group associates two or more sender identifiers together such that the senders associated with the different sender identifiers for the sender identifier group are mapped to the same action through the mapping of the sender identifier group to the action.
  • Actions for handling incoming connections from different senders can include, but are not limited to, accepting the connection, relaying the connection, rejecting the connection, or refusing the connection at the transmission control protocol (TCP) level.
  • TCP transmission control protocol
  • a set of several different sender identifiers can be mapped to an "accept” action so that connections from the senders associated with those sender identifiers are accepted by the MTA, whereas a sender identifier group can be mapped to a "reject" action so that any connections from senders associated with the sender identifiers in the sender identifier group are rejected.
  • a host access table can be used to map actions to sender identifiers, such as by using a list of rules that each map one or more sender identifiers (or sender identifier groups) to one or more actions.
  • Rules in the HAT can also include one or more parameters for managing the connections from the senders, such as a limit on the maximum number of connections from a sender identifier or sender identifier group at a given time.
  • the rules in the HAT can be in the form of an ordered list so that if more than one rule could be applied for a particular sender identifier, the rule used for that particular sender identifier is the first rule determined to match that particular sender identifier.
  • the rules can include a default rule so that any sender identifiers that do not match any of the other rules in the HAT are handled according to the default rule.
  • a recipient identifier can be any identifier that is based on the recipient of an email message.
  • recipient identifiers include, but are not limited to, the following: a full email address, a partial email address, a fully qualified domain name (FQDN), a partial FQDN, a username, and a partial username.
  • a recipient identifier group associates two or more recipient identifiers together such that the recipients associated with the different recipient identifiers for the recipient identifier group are mapped to the same action through the mapping of the recipient identifier group to the action.
  • Actions for handling email messages for different recipients can include, but are not limited to, accepting the email message for the recipient(s) associated with the recipient identifier and rejecting the email message for the recipient(s) associated with the recipient identifier.
  • a set of several different recipient identifiers can be mapped to an "accept" action so that email messages for the recipients associated with those recipient identifiers are accepted for delivery by the MTA, whereas a recipient identifier group can be mapped to a "reject" action so that any email messages for recipients associated with the recipient identifiers in the recipient identifier group are rejected and therefore not delivered.
  • a recipient access table can be used to map actions to recipient identifiers, such as by using a list of rules that each map one or more recipient identifiers (or recipient identifier groups) to one or more actions.
  • Rules in the RAT can also include one or more parameters for handling the email messages for recipients associated with the recipient identifiers, such as a response code, a response text message, and a banner text message.
  • the rules in the RAT can be in the form of an ordered list so that if more than one rule could be applied for a particular recipient identifier, the rule use for that particular recipient identifier is the first rule determined to match that particular recipient identifier.
  • the rules can include a default rule so that any recipient identifiers that do not match any of the other rules in the RAT are handled according to the default rule.
  • the RAT can include one or more rules that are used as exceptions to application of one or more rules in the HAT.
  • the RAT can include a rule that maps the username "postmaster” to an "accept” action so that email messages that would otherwise be excluded by a rule in the HAT (e.g., for exceeding the number of allowed connections or the number of recipients for a sender identifier) are nevertheless accepted and delivered to the "postmaster" recipient.
  • FIG. 1 is a block diagram that depicts a high level overview of a system for managing connections and email messages received by a server, according to an embodiment.
  • FIG. 1 only depicts a limited number of senders of email messages and recipients of those email messages, although in practice any number of senders and recipients can accommodated by the approaches described herein.
  • FIG. 1 depicts a server 100 that is communicatively coupled to a network 170 that is also communicatively coupled to domains 192, 194, 198.
  • server 100 can be implemented as an MTA connected to the Internet to which a number of domains are also connected.
  • FIG. 1 depicts only three domains, but in practice there can be any number of domains communicatively coupled to network 170.
  • domain 192 includes a sender A 192a and a sender B 192b
  • domain 194 includes sender C 194c
  • domain 198 includes sender D 198d.
  • each domain can include any number of senders.
  • Server 100 is communicatively coupled to a display 130 that is used to present information to an administrator 140, such as through a browser-based graphical user interface
  • Server 100 is also communicatively coupled to a database 120 that can be used to store information generated as part of a mail flow monitoring process. Finally, server 100 is communicatively coupled to a domain 150 that includes recipients 150a- 150c that are identified as a recipient A 150a, a recipient B 150b, and a recipient C 150c.
  • Server 100 includes a monitor 110, a queue 112, an aggregator 114, a host access table (HAT) 124, a recipient access table (RAT) 128, and a set of counters 116a-l 16d that are identified as counters A 116a, counters B 116b, counters C 116c, and counters D 116d.
  • HAT host access table
  • RAT recipient access table
  • Monitor 110 determines connection information for incoming connections to server 100 and message information for email messages received by server 100 from the senders of the email messages. Incoming connections can be processed according to
  • HAT 124 Some incoming connections may be rejected and thus no email messages are typically received over the rejected connections, while other incoming connections are accepted and one or more email messages are typically received over the accepted connections.
  • connection information and message information is stored in queue 112 that can be subsequently processed by aggregator 114 to aggregate the connection information for connections to server 100 from different senders and to aggregate the message information for message information for the email messages from different senders for the recipients serviced by server 100.
  • the processing of the email message is performed, which can include application of RAT 128.
  • the email message may or may not be delivered to the intended recipient in domain 150, such as recipient A 150a, recipient B 150b, or recipient C 150c.
  • monitor 110 By having monitor 110 store the message information in queue 112 for subsequent processing by aggregator 114, the impact of the monitoring process on the handling of incoming connections and the subsequent flow and processing of email messages by server 100 is minimized.
  • the analysis of the information stored in queue 112 by aggregator 114 may lag the receipt of email messages by server 100 by a relatively short time, such as a few seconds or a couple of minutes, so that the aggregate information produced by aggregator 114 is generated substantially in real time with the receipt of email messages by server 100.
  • server 100 can create a "mailFlowHost" object for each IP address and store the objects in an in-memory dictionary, which is represented by queue 112 in FIG. 1.
  • the key to the dictionary is a tuple containing the remote IP address, local IP address, remote port, and local port.
  • each mailFlowHost object records message information in 10 second intervals.
  • An in- memory dictionary, refe ⁇ ed to as the "cu ⁇ ent dictionary,” stores the information for the current interval.
  • the "old" dictionaries are stored in an interval table, which are represented in FIG. 1 by counters A 116a, counters B 116b, counters C 116c, and counters D 116d.
  • monitor 110 gets the mailFlowHost object for the cu ⁇ ent interval from the cu ⁇ ent dictionary until the cu ⁇ ent time minute is over, after which monitor 110 creates new mailFlowHost objects for the next minute, with the cu ⁇ ent dictionary being used for the cu ⁇ ent 10 second interval of the next minute in the same fashion.
  • Data from the dictionaries co ⁇ esponding to old minutes are aggregated and written to disk, such as database 120, and from there the minute data is rolled up into longer time periods, such as hours and days.
  • the mail flow monitoring approach described herein can track one or more statistics for each sender, such as the number of messages received by server 100 from the sender, the number of recipients for which email messages are received from the sender, the amount of information (e.g., the number of kB) received from the sender, and the number of connections received from the sender.
  • the mail flow monitoring approach described herein can also track the later application of one or more policies to the email messages from the sender, such as how many are blacklisted, whitelisted, or greylisted, or the percentage of messages received from the sender in a particular time period that are determined to be spam or that fail a virus check.
  • counters A 116a, counters B 116b, counters C 116c, and counters D 116d are stored by aggregator 114 in database 120. Then counters A 116a, counters B 116b, counters C 116c, and counters D 116d can be reset to zero or replaced with new sets of counters to count for the next time interval, such as the next minute.
  • a graph module can be included in server 100.
  • the graph module accesses the data for a set of time intervals that is stored in database 120 and generates one or more graphs or plots to be presented through display 130 so that administrator 140 can review and analyze the data and then specify actions, as appropriate, for the handling of future email messages from a particular sender.
  • a GUI can include on display 130 a graph of the number of recipients injected to server 100 over the last hour from a particular sender, such as a specified IP address.
  • the GUI can include a button to allow administrator 140 to ad the specified IP address to a blacklist, such that when administrator 140 clicks on the "blacklist” button, the IP address is included in a rule in HAT 124 that maps the specified IP address to a "blacklist" variable in HAT 124 that is defined elsewhere in HAT 124 to co ⁇ espond to a reject action. As a result, future email messages from the specified IP address will be rejected.
  • Data stored in database 120 can also be aggregated in any of a number of ways.
  • the data in database 120 can be aggregated over longer time periods, such as by each hour for a day, and presented to administrator 140 by the graph module through display 130.
  • Data stored in database 120 can also be aggregated for multiple senders, such as by combining data for sender A 192a and sender B 192b, and then displaying the compiled data on all email received from domain 192 to administrator 140 through display 130.
  • Server 100 can include other modules, components, and functions than those described with respect to FIG. 1 herein.
  • server 100 can include a spam policy module and a virus policy module for applying spam and virus policies, respectively.
  • the individual components of server 100 as depicted in FIG.
  • aggregator 1 can be combined with each other, such as by combining monitor 110 and aggregator 114, or the individual components can be implemented as several different components, such as by implementing aggregator 114 as a time aggregator for aggregating message information over time and a sender aggregator for aggregating message information for two or more senders.
  • aggregator 114 as a time aggregator for aggregating message information over time and a sender aggregator for aggregating message information for two or more senders.
  • FIG. 2 is a flow diagram that depicts an approach for managing connections and email messages received by a server, according to an embodiment.
  • FIG. 2 is described with reference to the system overview of FIG. 1, although the approach of FIG. 2 is not limited to the particular system depicted in FIG. 1.
  • FIG. 2 is described with reference to handling incoming connections and email messages at an MTA, although any type of electronic message and any server can be used with the approach depicted in FIG. 2.
  • FIG. 2 is described with reference to HAT 124, although any mapping of sender identifiers to actions can be used, and RAT 128, although any mapping of recipient identifiers to actions can be used.
  • FIG. 1 is described with reference to the system overview of FIG. 1, although the approach of FIG. 2 is not limited to the particular system depicted in FIG. 1.
  • FIG. 2 is described with reference to handling incoming connections and email messages at an MTA, although any type of electronic message and any server can be used with the approach depicted in FIG. 2.
  • FIG. 2 is described with reference
  • the MTA receives an incoming connection from a sender.
  • server 100 receives an incoming connection from sender B 192b of domain 192 via network 170.
  • the MTA determines a sender identifier for the sender from which the incoming connection is received. For example, server 100 identifies the IP address of domain 192 based on information transmitted with the incoming connection from the MTA of domain 192. However, other sender identifiers can be used, such as a reputation score for the IP address of domain 192 that is determined from a reputation service, such as SenderBase from IronPort Systems, Inc., of San Bruno, California, by sending a query to the reputation service for the IP address and receiving in return information for the IP address that includes the reputation score. [0047] In block 220, the MTA uses the sender identifier to find a matching HAT rule.
  • server 100 identifies the IP address of domain 192 based on information transmitted with the incoming connection from the MTA of domain 192.
  • sender identifiers can be used, such as a reputation score for the IP address of domain 192 that is determined from a reputation service, such as SenderBase from IronPort Systems, Inc., of
  • server 100 uses the IP address of domain 192 to find a rule in HAT 124 that maps the IP address of domain 192 to an action.
  • the MTA applies the matching HAT rule to the incoming connection. For example, if the matching rule in HAT 124 associates the IP address of domain 192 with an "accept" action, server 100 accepts the incoming connection and sends a message to the host of domain 192 that the connection is accepted. As another example, if the matching rule in HAT 124 associates the IP address of domain 192 with a "reject” action, server 100 accepts the incoming connection, sends the host of domain 192 a connection rejected message, and then terminates the connection without accepting any email messages from domain 192.
  • the MTA receives an email message over the accepted connection.
  • server 100 receives an email from sender B 192b that is addressed to recipient C 150c.
  • the received email is assumed to have only one recipient email address, although in practice any number of recipient email addresses can be accommodated.
  • the MTA determines a recipient identifier for the recipient of the email message.
  • server 100 can use the full recipient email address for recipient B 150b of the email message as the recipient identifier, although other recipient identifiers can be used, such as just the username portion of the recipient email address or the domain name portion of the recipient email address.
  • the MTA uses the recipient identifier to find a matching RAT rule.
  • server 100 uses the full recipient email address to find a rule in RAT 128 that maps the full recipient address of recipient C 150c to an action.
  • the MTA applies the matching RAT rule to the email message. For example, if the matching rule in RAT 128 associates the full recipient address of recipient C 150c with an "accept" action, server 100 accepts the email message for delivery.
  • server 100 rejects the email message so that a rejection response message is sent to sender B 192b and the email message is not accepted for delivery.
  • each recipient is used to determine a recipient identifier that is used to find a matching RAT rule that is then applied as appropriate. Similarly, if more than one email message is received over the accepted connection, each email message is handled the same as the example email message of this example.
  • the MTA delivers the email message to the recipient.
  • server 100 delivers the email message to recipient C 150c of domain 150.
  • the process then returns to block 210, although if additional email recipients or email messages were accepted for delivery, such email messages would be delivered to the intended recipients.
  • FIG. 3 is a flow diagram that depicts an approach for managing incoming connections between different senders and a server, according to an embodiment. For clarity,
  • FIG. 3 is described with reference to one incoming connection from one sender, although in practice, any number of connections from any number of senders can be handled by the approaches described herein. Finally, FIG. 3 is described with reference to an MTA, although any server that handles incoming connections from any other servers can be used to implement the approaches described herein.
  • the MTA receives an incoming connection from a sender.
  • server 100 receives an incoming connection from a host associated with domain 194 of FIG. 1, such as an incoming connection for delivering an email message from sender C 194c.
  • Server 100 interacts with the injecting host using the simple mail transfer protocol (SMTP) by starting an SMTP conversation.
  • SMTP simple mail transfer protocol
  • the MTA identifies a network address for the sender. For example, server 100 identifies the IP address for domain 194 in the header information of the incoming connection. [0059] In block 330, the MTA determines one or more sender identifiers for the sender. For example, server 100 can use the IP address as a sender identifier. As another example, server 100 can obtain the fully qualified domain name (FQDN) of the sender through a reverse domain name service (DNS) lookup with an existing DNS cache, and use the FQDN as a sender identifier.
  • FQDN fully qualified domain name
  • DNS reverse domain name service
  • server 100 can submit a query to another server, such as a server that is part of the SenderBase service, to obtain the available information based on the IP address of the sender.
  • a server that is part of the SenderBase service
  • Such information can include an organization name, an organization identifier, and a reputation score, and one or more of these types of information can be used as a sender identifier.
  • the sender identifiers are the IP address of domain 194 and a reputation score of -3 from SenderBase.
  • the MTA uses the one or more sender identifiers to inspect a mapping of sender identifiers to actions.
  • server 100 can inspect HAT 124 using the IP address of domain 194 and the reputation score -3 to find one or more rules that associate either the IP address or the reputation score with an action.
  • the HAT includes one rule that specifies a CIDR block that includes the IP address of domain 194 and another rule that specifies reputation scores between -10 and -1.
  • server 100 can match the IP address of domain 194 to the first rule and the reputation score of -3 to the second rule.
  • the MTA identifies an action based on the mapping.
  • server 100 in block 340 inspected HAT 124 and found two matching rules.
  • Server 100 can pick one of the matching rules to be applied in any of a number of ways.
  • each rule can have a priority, and server 100 uses the rule with the highest priority while ignoring any other matching rules.
  • HAT 124 can be organized as an ordered listing of rules, and when server 100 inspects HAT 124 starting from the first rule in the ordered listing, server 100 stops at the first matching rule and identifies the associated action as the action to be applied (e.g., only one rule would be identified as the matching rule in this case in block 340).
  • server 100 can inspect the actions for each of the matching rules and use the most restrictive action (i.e., if one rule is "ACCEPT" and the other rule is "REJECT", server 100 selects the rule with the "REJECT” action) or the most permissive action (e.g., use the "ACCEPT” action instead of "REJECT”).
  • server 100 can select the action based on any suitable method, such as by using the first matching rule in HAT 124 or by randomly selecting a rule from among the matching rules.
  • the MTA applies the action to the incoming connection.
  • the typical actions in HAT 124 are "ACCEPT,” “RELAY,” “REJECT,” and “TCPREFUSE.”
  • server 100 accepts the incoming connection and thereafter typically receives one or more email messages from the injecting host for delivery to one or more recipients of domain 150.
  • server 100 accepts the incoming connection and relays any incoming messages as specified to other MTA's and then closes the connection, although generally no messages are delivered to any of the recipients of domain 150.
  • server 100 performs what may be termed as a "polite” rejection or refusal in which server 100 accepts the incoming connection, then sends a rejection response message to the injecting host over the connection informing the injecting host that the connection is rejected, and then server 100 terminates the connection.
  • server 100 accepts no email messages over the connection while performing the "REJECT" action.
  • server 100 performs what may be termed as an "impolite” rejection or refusal in which server 100 accepts the incoming connection but then immediate drops the connection without sending a rejection response message to the injecting host.
  • TCP transmission control protocol
  • block 370 if the incoming connection is "ACCEPTED,” the process continues to block 380, and if not, the process returns to block 310 where the MTA handles another incoming connection from either the same or a different sender. For example, if server 100 determines in block 360 that the action is "ACCEPT" or "RELAY,” the process continues to block 380, whereas if the action in block 360 is "REJECT” or "TCPREFUSE,” the connection is terminated with little or no further action by server 100. [0064] In block 380, the MTA applies one or more parameters that are associated with the identified rule in the mapping.
  • the matching rule that server 100 determines is to be applied can include the "ACCEPT" action and one or more parameters, such as a maximum number of connections.
  • Server 100 can use a counter of the number of connections for the sender identifier, say counters A 116a in FIG. 1 that is counting the number of connections from the IP address for domain 194. If the specified maximum number of connections has been reached, server 100 terminates the connection, even though the matching HAT rule is to "ACCEPT" the incoming connection.
  • the matching rule can specify a maximum number of recipients per hour, and server 100 checks counters B 116b that is counting the number of recipients injected by domain 194 in the cu ⁇ ent hour. If the maximum number of recipients has been reached, server 100 rejects any additional email messages for recipients in domain 150 and sends a rejection response message back to the MTA for domain 194.
  • the MTA For an accepted connection, after the email messages from the injecting host are received, the MTA terminates the connection. For example, if a certain amount of time has passed during which server 100 receives no further communication from the MTA for domain 194, server 100 terminates the connection with domain 194.
  • the MTA can use another mapping of recipient identifiers to actions, such as RAT 128, in conjunction with the mapping of the sender identifiers to actions, such as HAT 124.
  • RAT 128 can include a rule that all messages addressed to the username "postmaster" at domain 150 are to be accepted, even if the HAT would otherwise indicate that the incoming connection is to be rejected or refused.
  • RAT 128 can effectively include "exceptions" to the rules of HAT 124, which can be helpful in allowing a sender of email messages that are being blocked by server 100, such as for exceeding the maximum number of connections, for exceeding the maximum number of recipients, or for otherwise matching a HAT rule with a "REJECT" or "TCPREFUSE” action, to be able to contact administrator 140 for server 100 to inquire as to why the sender's connections or email messages are not getting through server 100.
  • “exceptions" to the rules of HAT 124 can be helpful in allowing a sender of email messages that are being blocked by server 100, such as for exceeding the maximum number of connections, for exceeding the maximum number of recipients, or for otherwise matching a HAT rule with a "REJECT" or "TCPREFUSE” action, to be able to contact administrator 140 for server 100 to inquire as to why the sender's connections or email messages are not getting through server 100.
  • one or more attributes of the connection can be determined and subsequently used to identify senders and associate sender identifiers to them, for which counters can be established and tracked to allow for the control of the flow of messages.
  • attributes can be determined for a connection: (1) IP address (2) Fully qualified domain name (FQDN) (3) SenderBase data, including: (a) SenderBase organization name (b) SenderBase organization identity/identifier (c) SenderBase organization subdivision mask (d) SenderBase organization flow control coefficient.
  • the IP address is determined when establishing the connection and can be used to obtain the other connection attributes. For example, to determine the FQDN, a reverse DNS lookup is used, with an existing DNS cache, to determine the name. If the IP address can be resolved to a name, a second DNS lookup is done on the retrieved name, and compared to the original IP address. If the IP addresses match, the FQDN is kept. On a per-injector basis, the user may configure the MTA to reject connections that do not properly reverse DNS, based on one of the following options: ignore the e ⁇ or (can be set as the default); immediately TCPREFUSE the connection; or REJECT data from the connection with a response having the appropriate SMTP error code (which the user can define).
  • ignore the e ⁇ or can be set as the default
  • immediately TCPREFUSE the connection or REJECT data from the connection with a response having the appropriate SMTP error code (which the user can define).
  • the recipient host can connect to the SenderBase server and submit a query for the available information based on the IP address. If the user has not configured the recipient host to use SenderBase or if SenderBase is not available, a default CIDR block can be used as the subdivision mask. The user can specify the CIDR block, and the system can be configured with a default value, such as '724. " When using SenderBase, a timeout can be configured to avoid slowing the injection rate of the host recipient due to the queries to the SenderBase server.
  • the user can specify the timeout, and the recipient host can be configured to have a default value, such as 10 seconds, and a timeout value of "0" can specify that SenderBase lookups are to be disabled.
  • a default value such as 10 seconds
  • a timeout value of "0" can specify that SenderBase lookups are to be disabled.
  • Any of a number of attributes can be used as a sender identifier for matching in the HAT, including but not limited to, one or more of the following: a network address, an Internet Protocol (IP) address, a partial IP address, a first range of IP addresses, a primary domain, a subdomain, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, an organization identifier (e.g., a SenderBase organization ID), a network owner, a reputation score, and a second range of reputation scores.
  • IP Internet Protocol
  • FQDN fully qualified domain name
  • CIDR classless inter-domain routing
  • the flexibility in specifying the sender identifier allows the user to aggregate information in virtually any manner that the user desires for purposes of controlling the mail flow. For example, the user can list a single IP address on the left side of the HAT, and that single IP address gets up to the specified maximum number of recipients per time period for purposes of mail flow injection control. As another example, the user can specify a /24 CIDR block on the left side of the HAT, and then that group of IP addresses (up to 256 addresses) as a whole share the specified maximum number of recipients per time period.
  • the mail flow monitor can help the user identify a spike in messages from a particular IP address, and the user can use a GUI button that is part of the mail flow monitor to add that IP address to the HAT and associate that added IP address with a policy that limits the number of recipients per time period to the user's desired level, or the user can even specify that the IP address should be blacklisted so that no messages are allowed from the IP address.
  • the mail flow monitor can track and record the number of recipients that are being rejected due to the maximum number of recipients per time period being exceeded by IP address or another sender identifier. As a result, the user can determine if a partner company or some other domain that the user wants to receive email messages from has been inadvertently limited in terms of the injection rate so that the partner company or domain can be whitelisted so that the email messages are no longer throttled or limited based on the HAT.
  • the SenderBase service is used to provide for more complex mail injection control.
  • the HAT can include a "use_sb" option (e.g., whether to use SenderBase) so that instead of using the left side of the rule in the HAT to match on, a new counter is determined based on the SenderBase information and matches are made on the SenderBase derived counter.
  • SenderBase can provide information about who the organization is for an IP address, along with the SenderBase organization ID for the IP address and a specific CIDR block size (e.g., /24 is a typical value and may be used as the default value).
  • a specific CIDR block size e.g., /24 is a typical value and may be used as the default value.
  • the user can rely on SenderBase to categorize the information for the IP address and control mail flow based on the SenderBase derived counter.
  • the user can rely on the SenderBase organization ID to control mail injection, thereby allowing the user to aggregate a number of disparate IP addresses that are associated with a single organization or company. For example, a particular organization may have two different subnets, and the user can establish a rule in the HAT that each subnet has a separate counter for determining the maximum number of recipients per time period. However, this requires that the user manage each subnet separately.
  • the user can use the SenderBase organization ID, which is the same for each subnet, and have a single rule in the HAT based on the organization's SenderBase organization ID, and then a single counter and a single rule can be used to limit the recipients injected from both of the organization's subnets.
  • a company can have a large number of customers with IP addresses that are wildly disparate.
  • SenderBase associates the same organization ID for the company, regardless of which customers have which IP addresses, the user can have one entry in the HAT that indicates the company's SenderBase organization ID, and all the IP addresses for that company's customers are subject to the same counter for purposes of determining the maximum number of messages per time period or the maximum number of connections at a given time, or even for counting the number of invalid email recipient addresses for purposes of detecting and preventing a directory harvest attack.
  • the SenderBase information can be obtained by the system for each request for a connection to the system, with SenderBase returning the available information for the queried IP address.
  • the user can cache the SenderBase data to improve performance.
  • the user can use a reputation score from SenderBase instead of an IP address or other more common sender identifier. For example, upon receipt of a request for a connection, the system can query SenderBase and obtain the reputation score co ⁇ esponding to the IP address. The score can be compared to a range specified by the user (e.g., is the score between -10 and -5, thus indicating a low reputation on the -10 to +10 reputation score scale). In such a situation, the action to take can be to blacklist the IP address, so that no further messages are accepted.
  • a range specified by the user e.g., is the score between -10 and -5, thus indicating a low reputation on the -10 to +10 reputation score scale.
  • the action to take can be to blacklist the IP address, so that no further messages are accepted.
  • a HAT entry can be based on a remote blacklist function.
  • the system can be configured to take the IP address of an incoming connection, reverse the numbers (e.g., an IP address of 1.2.3.4 becomes 4.3.2.1) and append the name of a query DNS server. If the DNS server sends a response back for the effective machine represented by the reversed IP address, that indicates that the DNS server has a record of the reversed IP address in the DNS server's database.
  • the HAT entry can specify that any such IP addresses be blacklisted.
  • a query can be sent to other servers, such as Bonded Sender that includes a list of reputable IP addresses, and any that are included in such a list can be specified in the HAT to be whitelisted.
  • the mapping of sender identifiers to actions can be implemented as a set of rules, such as those found in a host access table (HAT). In most implementations, the following five actions are included, although other implementations can include more or fewer actions than those described below: (1) ACCEPT - the connection is accepted, with injection limited by the recipient access table (RAT) . (2) RELAY - the connection is accepted, and injection to any recipient is allowed (the RAT is bypassed) . (3) REJECT - the connection is refused, with the sender getting a 4xx or 5xx SMTP message, but no messages are accepted (e.g., a polite refusal) .
  • HAT host access table
  • TCPREFUSE the connection is accepted but immediately dropped, so that the sender receives nothing in return (e.g., refused at the TCP level; a not so polite refusal) .
  • CONTINUE the mapping is ignored, and processing of the HAT continues, and if the connection matches a later entry that is not "CONTINUE,” that later matching entry is used instead.
  • HAT Host Access Table
  • a host access table as described herein is one example of a mapping of sender identifiers to actions.
  • HAT host access table
  • any suitable mapping that associates one or more sender identifiers or sender identifier groups to one or more actions can be used in a particular implementation.
  • HAT HAT
  • the approaches described herein are not limited to this or any other particular implementation of the HAT in particular or of a mapping of sender identifiers to actions in general.
  • a row in the HAT consists of four parts: (1) an entry name, refe ⁇ ed to as a "label”, (2) a host specification, refe ⁇ ed to as "hosts”, that can be implemented by listing one or more sender identifiers, sender identifier groups, or a combination thereof, (3) an access rule, refe ⁇ ed to as "access” that specifies a particular action to be taken for the associated hosts, and (4) a parameter list, refe ⁇ ed to as "params”.
  • label - a label is a name given to a HAT entry and in some implementations , obeys a naming convent ion such as that the label starts with a letter or underscore , but after the initial character , the label can include letters , numbers , underscores , or hyphens .
  • hosts - a host specification, and can include more than one listed host .
  • access - is the selected basic access rule ( e . g . , "ACCEPT” , "RELAY” , “REJECT” , "TCPREFUSE” , or "CONTINUE” ) .
  • params - a list of parameter name/value pairs .
  • the hosts are listed in order from top to bottom.
  • the first non-CONTINUE rule to match is used.
  • the HAT includes one or more default rules that allow the user to specify actions and parameters for sender identifiers that otherwise do not match other more specific rules. For example, if the HAT is organized as on ordered list of rules where the first rule to match is used, rules with more specific sender identifiers can be listed first, such as sub-domains for a particular domain or particular IP addresses in a range of IP addresses. Following the specific rules, another "default" rule can be included for the entire particular domain or the range of IP addresses.
  • the particular sender identifier for the incoming connection matches the more specific rules that are higher up in the ordered listing of rules in the HAT, those rules and their associated actions will be applied to the incoming connection. But if the sender identifier does not match one of the more specific rules, then the default rule for the particular domain or range of IP addresses can be used. In this fashion, the administrator can specify a standard or default action for a group of sender identifiers, but the administrator can also use the more specific rules and include them higher up in the HAT to effectively function as exceptions to the default rules.
  • a special identifier can be used to implement one or more default rules.
  • a sender identifier of "ALL” can be used to denote any sender identifier, and a rule for the "ALL" sender identifier can be included as the last rule in the HAT, so that any sender identifier that does not match any of the other HAT rules will be match the default "ALL" rule.
  • the administrator can ensure that all incoming connections will match at least one rule in the HAT.
  • special identifiers of "PUBLIC” and "PRIVATE” can be used in rules located at or near the end of the HAT to specify default HAT rules for new public injectors and new private injectors.
  • One or more of the following parameters can be specified by host or sender identifier.
  • the following parameters are allowed for the "ACCEPT” and “RELAY” actions, but not the other actions such as "REJECT” or
  • max_concurrency - specifies the maximum number of connections allowed from the host .
  • max_message_size - specifies the maximum message size from the hos .
  • max_msgs_per_session - specifies the maximum number of messages that may be injected per session (typically counts successfully injected messages) .
  • max_rcpts_per_msg - specifies the maximum number of recipients allowed per message.
  • smtp_banner_text - specifies the SMTP banner displayed when a host first connects.
  • smtp_bann ⁇ r_cod ⁇ - specifies the SMTP codes used in the SMTP banner.
  • tls - specifies whether or not TLS (transport layer security) is to be used or required (allowed values include “on”, “off", and “require” ) .
  • max_rcpts_p ⁇ r_hour - specifies the maximum number of recipients that will be accepted for the given host, per hour (e.g., for injection control) .
  • max_rcpts_p ⁇ r_hour_cod ⁇ - specifies the SMTP response code to be given to a host who has exceed the maximum recipient per hour limit; can use a default of 452 per RFC2821.
  • max_rcpts_per_hour_text - specifies the SMTP response message to be given a host who has exceed the maximum recipient per hour limit .
  • (11) us ⁇ _sb - specifies whether to query SenderBase for information and whether to use the SenderBase information to craft the name of the counter to be incremented (allowed values include "on” and "off") .
  • (12) netmask - specifies the size of the mask to apply to the IP address to craft the name of the counter to increment; allowed values are numbers between 0 and 32; a value of 0 means that a single counter will result for all IP addresses that matched this or a similarly masked HAT entry.
  • III. MANAGING EMAIL MESSAGES FOR DIFFERENT RECIPIENTS A. Introduction to Managing Email Messages at a Server for Different Recipients
  • FIG. 4 is a flow diagram that depicts an approach for managing email messages received by a server for different recipients, according to an embodiment.
  • FIG. 4 is described with reference to one email message that is from one sender and addressed to one recipient, although in practice any number of email messages from any number of senders addressed to any number of recipients can be handled by the approaches described herein.
  • the email message described in the example of FIG. 4 has only one recipient email address, although email messages with any number of recipient email addresses can be handled by the approaches described herein.
  • FIG. 4 is described with reference to an MTA and email messages, although any server that handles any kind of electronic messages can be used to implement the approaches described herein.
  • the MTA receives an email message from a sender.
  • server 100 receives an email message from sender D 198d of domain 198 that is addressed to recipient A 150a of domain 150 that is served by server 100.
  • the email message can be received over a connection that was established according to the approaches described herein with respect to managing connections, such as in the example illustrated and described with respect to FIG. 3 above.
  • the MTA determines a recipient email address for a recipient of the email message. For example, server 100 examines the header information for the email message to identify the email address for recipient A 150a.
  • the MTA determines a recipient identifier based on the recipient email address.
  • the recipient identifier can be some or all of the recipient email address for recipient A 150a.
  • the recipient identifier can be a subdomain for domain 150.
  • the MTA uses the recipient identifier to inspect a mapping of recipient identifiers to actions.
  • server 100 can inspect RAT 128 using the full recipient email address for recipient A 150a to find one or more rules that associate the recipient email address, or a portion of the recipient email address, with an action.
  • the HAT includes one matching rule for the subdomain portion of the recipient email address for recipient A 150a.
  • other examples can include matching multiple RAT rules, such as in the example of matching multiple HAT rules as discussed above with reference to block 350.
  • the MTA identifies an action based on the mapping. For example, server 100 in block 440 inspected RAT 128 and found one matching rule, and the action of the matching rule is identified as the rule to be applied to the email message. However, as another example, if multiple matching rules were identified in block 440, server 100 can determine the particular rule to be used in any of a number of ways, including those discussed above with reference to block 350 of FIG. 3. [0098] In block 460, the MTA applies the action to the email message.
  • the typical actions in RAT 128 are "ACCEPT” and "REJECT.”
  • server 100 accepts the email message for delivery to recipient A 150a, and the "ACCEPT" action can include sending a message back to the host for domain 198 that the email message is accepted as part of the SMTP conversation.
  • the "REJECT” action server 100 rejects the email message for delivery, and the "REJECT” action can include sending a message back to the host for domain 198 that the email message is rejected as part of the SMTP conversation.
  • the rejection response message can include a suitable message or code indicating the reason for the rejection (e.g., the recipient email address is invalid, the recipient's inbox is full, etc.).
  • the MTA applies one or more parameters associated with the identified rule in the mapping.
  • the matching rule that server 100 determines is to be applied can include an action and one or more parameters, such as a response code and a response text.
  • the parameters can include a response code and a response text, and server 100 sends the specified response code and response text to the host injector for domain 198.
  • RAT 128 can be used to have server 100 provide a more specific reason to the injecting host about the reason for the rejection by specifying a particular SMTP response code and an explanation in the response text.
  • block 480 if the email message is "ACCEPTED,” the process continues to block 480, and if not, the process returns to block 410 where the MTA handles another incoming email message. For example, if server 100 determines in block 460 that the action is to "ACCEPT" the email message, the process continues to block 480, whereas if the action in block 460 is to "REJECT" the email message, the process returns to block 410. In the situation in which the email message includes more than one recipient, the process can return to block 420 instead of block 410 to process the next recipient, and this loop continues until all recipients for the email message are processed.
  • the MTA delivers the email message to the recipient.
  • server 100 delivers the email message from sender D 198d to the email inbox for recipient C 150c of domain C.
  • Examples of the recipient identifiers that can be used include but are not limited to one or more of the following • user@domain - a complete email address. • fqdn - a fully qualified domain name. • .partialhost- everything with the partialhost domain. • user@ - anything with the given username. • ALL - special keyword that matches ALL addresses, typically used as a catch-all when no other addresses are matched. C. Actions for Recipients
  • the mapping of recipient identifiers to actions can be implemented as a set of rules, such as those found in a recipient access table (RAT). In most implementations, the following two actions are included, although other implementation can include more or fewer actions than those described below: (1) ACCEPT - the connection is accepted, with injection limited by the recipient access table (RAT) . (2) REJECT - the connection is refused, the sender gets a 4xx or 5xx SMTP message, but no messages are accepted.
  • RAT recipient access table
  • a recipient access table as described herein is one example of a mapping of recipient identifiers to actions.
  • any suitable mapping that associates one or more recipient identifiers or recipient identifier groups to one or more actions can be used in a particular implementation.
  • the RAT is just one example of how the RAT can be implemented, and the approaches described herein are not limited to this or any other particular implementation of the RAT I particular or of a mapping of recipient identifiers to actions in general.
  • the RAT specifies which recipients will be accepted.
  • the RAT specifies the recipient address, which may be a partial address or hostname, and whether to accept the recipient address or to reject the recipient address.
  • the SMTP response to the "RCPT TO" command can be included for the recipient.
  • Each injector has its own RAT.
  • the hosts are listed in order from top to bottom, and in some implementations, the first rule to match is used. E. Parameters in the RAT
  • smtp_banner_text specifies the SMTP banner displayed when an email message is rejected.
  • smtp_response_code - specifies the SMTP codes used in the SMTP response .
  • smtp_respons ⁇ _text - specifies the SMTP text used in the SMTP response when an email message is accepted.
  • the banner text is used for a "REJECT" action, such as to provide the injector with a brief message relating to why the email message is rejected (e.g., "Email for the xyzdomain.com is not allowed.”).
  • the response text is typically used for an
  • the SMTP response code allows the administrator to specify in the RAT which SMTP code is to be used when accepting or rejecting a message based on a particular rule as opposed to a default
  • the RAT can be used to denote recipient addresses that are not subject to injection control by the HAT. For example, for some commonly used addresses, such as "postmaster" at a particular domain, the user does not want the system to limit messages addressed to such an address. As a specific example, if the system restricts message injection from an IP address, the user typically would want that sender of the restricted messages to be able to send a message to the "postmaster" email address to inquire as to why the sender's messages are being limited.
  • This type of approach can be particularly useful in situations in which an IP address is being limited by the system inadvertently, such an IP address associated with a partner company, as opposed to an IP address associated with a spammer.
  • an IP address is being limited by the system inadvertently, such an IP address associated with a partner company, as opposed to an IP address associated with a spammer.
  • the outside firms efforts to send so many email messages to the large company's employees may appear to the MTA to be spam.
  • the RAT includes one or more default rules that allow the user to specify actions and parameters for recipient identifiers that otherwise do not match other more specific rules. For example, if the RAT is organized as on ordered list of rules where the first rule to match is used, rules with more specific recipient identifiers can be listed first, such as sub-domains for a particular domain serviced by the MTA or particular usernames. Following the specific rules, another "default" rule can be included for the entire particular domain or a range or group of usernames.
  • the RAT is applied for an email message, if the particular recipient identifier for the email message matches the more specific rules that are higher up in the ordered listing of rules in the RAT, those rules and their associated actions will be applied to the email message.
  • the recipient identifier does not match one of the more specific rules, then the default rule for the particular domain or range or group of usernames can be used. In this fashion, the administrator can specify a standard or default action for a group of recipient identifiers, but the administrator can also use the more specific rules and include them higher up in the RAT to effectively function as exceptions to the default rules.
  • a special identifier can be used to implement one or more default rules.
  • a recipient identifier of "ALL” can be used to denote any recipient identifier, and a rule for the "ALL" recipient identifier can be included as the last rule in the RAT, so that any recipient identifier that does not match any of the other RAT rules will be match the default "ALL" rule.
  • the administrator can ensure that all email messages will match at least one rule in the RAT.
  • special identifiers of "PUBLIC” and "PRIVATE” can be used in rules located at or near the end of the RAT to specify default RAT rules for new public injectors and new private injectors.
  • $BLACKLIST REJECT ⁇ smtp_banner_text You have been blacklisted.”
  • HAT For new injectors, default HATs can be established. For example, a new public injector can use "ALL ACCEPT" while a new private injector can use "ALL RELAY.” [0119] A HAT can be imported into the system, and comments made with the # sign are stripped out. The file can be internally represented with two data structures, one containing the list of behavior definitions, and the other containing the list of the mappings between hosts and behaviors.
  • Behavior definitions can be stored as a dictionary that is keyed off the names of the definitions. The value of each key is a tuple of a behavior code and a dictionary of parameters. The five behavior codes are "CONTINUE”, “ACCEPT”, “RELAY”, “REJECT”, and "TCPREFUSE”. Any entry with a behavior that is not "CONTINUE” is one that may be matched during IP address processing. [0121] The following is an example of a set of behavior definitions, following by a representation of the data structure.
  • ⁇ behaviors ⁇ 'BLACKLIST': ('REJECT', ⁇ ' smtp_banner_text ' : 'You have been blacklisted. ⁇ ), 'WHITELIST' : ( 'ACCEPT' , ⁇ • max_concurrency ' :600, 'max_message_size ' : 12582912, ' smtp_banner_code ' : 220 , ' smtp_banner_text ': 'Hello there.' ⁇ ), 'GREYLIST' : ( 'ACCEPT' , ⁇ 'max_message_size' : 5242880, 'max_rcpts_per_hour ' :5120, ' max_rcpts_per_hour_text ' : ' You have exceeded 5 , 000 recipients this hour .
  • the mapping of hosts to behaviors can be implemented as an ordered list. Each element of the list is a tuple containing: (1) the label (or None if there is no label), (2) a list of lists of hosts (each nested list is an aggregate), (3) the behavior (either a string, if refe ⁇ ing to a behavior definition, or a behavior tuple, as above, if the definition is "inline”), and (4) an entry comment (or None, if there is not comment associated with the entry).
  • Each host is represented itself as a tuple of three values: the type (e.g., IP address, hostname, or SenderBase organization ID), the host itself (e.g., an IP address, CIDR block, domain name, etc.), and a comment (or None, if there is no associated comment).
  • the type e.g., IP address, hostname, or SenderBase organization ID
  • the host itself e.g., an IP address, CIDR block, domain name, etc.
  • a comment or None, if there is no associated comment.
  • RATs For new injectors, default RATs can be established. For example, a new public injector can use "ALL REJECT" while a new private injector can use "ALL ACCEPT.” [0127] Generally, the format of the RAT is the same as for the HAT except for the address and access fields. C. Additional Parameters for Use in the HAT and RAT
  • the value can be a number or a string, and numbers can be followed by the letter "M" which multiplies the number by 1,048,576. Numbers followed by the letter k are multiplied by 1,024.
  • a simple string value is just a sequence of alphanumeric characters (with no spaces). If a more complex string is needed, then it can be enclosed with double quotes. Backslash is the escape character used in a quoted string. Parameters can be continued on the next line as long as there is some whitespace at the beginning of the line.
  • the first step in managing connections and mail flow is determining what is happening, such as by counting the number of messages received per hour from a sender or the number of connections at a given time from a sender. Once the measurement is made, the system can determine what, if any, actions to take to control the flow of messages to the system.
  • any number of attributes or events can be counted. For example, every connection to a MTA from another MTA has a connection event, and every connection event has one or more message events, and every message event has one or more recipient events.
  • a counter is based on the recipient events. For example, the number of messages for recipients from a sender over a specified time period is determined (e.g., the number of recipients from sender X per hour). This can be useful for dealing with spam, since spammers typically send each message with a large number of recipients, such as 50 recipients per message. Thus, counting recipients instead of messages can be desirable when controlling mail flow to deal with spam.
  • a counter is based on the number of connection events. For example, the number of connections cu ⁇ ently open to an MTA from a sender is determined. This can also be useful in controlling spam as spammers typically send many messages over many connections.
  • a counter is based on the number of bounce messages due to invalid email addresses. For example, the number of bounce messages generated due to messages from a sender being addressed to invalid email addresses are counted. This can be useful in preventing directory harvest attacks.
  • a time based aggregate counter can be used for each parameter of interest, such as the key value for the entries in the HAT. For example, if the HAT includes two entries, 1.2.3.4 and 1.2.3/20, a connection from IP address 1.2.3.4 will start with a counter key of "1.2.3.4," whereas a connection from IP address 1.2.3.4 will start with a counter keyed by "1.2.3/20.” In other implementations, multiple counters can be used and incremented if a connection matches on more than one entry.
  • a HAT entry lists multiple values for the same behavior, each value can be treated separately. For example, if a HAT entry is for "1.2.3.4, 1.2.3.5," the appropriate key would be either of the two listed IP addresses instead of a string comprised of the whole HAT key entry. If the HAT includes the "ALL" catch-all entry, and the "ALL" entry is matched, the counter key can be initially set to the IP address of the incoming connection. [0135] In addition, other parameters can be used. For example, a "use sb" option can be used to apply SenderBase logic to the IP address, and the counter key can be modified based on the available SenderBase information.
  • the following rules can be applied: (1) If the SenderBase organization ID and subdivision mask are received from SenderBase, the subdivision mask can be applied to the IP address to generate a CIDR block, and the counter key is the thus generated CIDR block. (2) If the SenderBase organization ID is received, but not the subdivision mask, the organization ID can be used as the counter key. (3) If neither the SenderBase organization ID or subdivision mask are received, a user-supplied netmask can be used by default, and if the user has not specified a netmask, the system can be configured to use a default value of '724," and the resulting CIDR block is used for the counter key.
  • the user supplied netmask can be applied to the IP address to create a CIDR block that is used as the counter key.
  • Counters can be stored in a variety of ways, such as through the use of a data dictionary that is keyed off the HAT table criteria that is matched.
  • the thread processing the connection looks up a reference to the appropriate counter, which is held by the thread until the end of the connection session, thereby avoiding the need to perform key lookups every time a recipient is processed.
  • the system determines if the counter dictionary is expired (e.g., over an hour old for an hourly based counter). If the counter is expired, a new counter object is returned and the old dictionary is deleted, such that all counters are reset to zero. Thus, the birth time of the data dictionary is set to the most recent hour's beginning. For example, if after a period of inactivity, a connection comes in at 4:15 PM, but the birth time of the dictionary is listed as 3:00 PM, the old dictionary is deleted and the new dictionary is retroactively given a birth date of 4:00 PM. [0139] One or more user options can be used with the techniques herein for controlling message flow.
  • the user can be given the option to turn the use of SenderBase with mail injection control on or off.
  • the MTA can be configured with an appropriate default value, such as that the SenderBase option is set to "on” for a new public injector but set to "off for a new private injector.
  • a timeout variable can be used to determine the on/off state for using SenderBase. For example, a timeout of zero can specify that the user has turned off SenderBase support. A timeout of greater than zero specifies that SenderBase support is active, with the timeout value indicating how long the system will wait (e.g., the number of seconds) for a response from SenderBase before giving up. If SenderBase support is "off or a query to SenderBase fails, the system can be configured to not perform further queries to SenderBase for connections for the injector. If a HAT entry contains an "sbo:" host, that host does not match any incoming connections because the SenderBase Organization ID cannot be determined for the connection. If a HAT entry has the "use_sb” option, the netmask provided by the user for that entry (or '724" if none) can be used instead, just as if no data if received from SenderBase.
  • Another possible user option can be to enable a cache time for the SenderBase results. For example, a default time equal to the time to live (TTL) provided by SenderBase can be used, and the user can adjust the value to either zero to preclude caching any results or a non-zero value of the user's choosing, which is used in place of the TTL value from SenderBase.
  • TTL time to live
  • Actions taken as part of mail flow control can be logged.
  • the actions taken against a connection can record the relevant parameters that supported the action, such as "ICID X from 1.2.3.4 limit N exceeded for HAT entry '1.2.3/24'".
  • actions taken against an individual recipient can be logged to record the relevant parameters that support the action, such as "ICID X MID Y 'bob@example.com' limit N exceeded for HAT entry '1.2.3/24'”.
  • FIG. 5 is a block diagram depicting an example of a graphical user interface (GUI) 500 for use in managing connections and email messages received by a server, according to an embodiment.
  • GUI 500 can be displayed by an MTA, such as server 100 through display 130 to administrator 140.
  • MTA graphical user interface
  • FIG. 5 includes a representative sampling of the types of interface controls for several selected features of the approaches described herein, but in practice, any suitable interface control or widget for any number of the features described herein can be implemented.
  • GUI 500 includes several graphical widgets that include one or more options for the following features: rate limits 510, connection limits 540, directory harvest attack prevention 550, recipient limits 560, and policies 580. Each of these features is described further below.
  • server 100 can automatically add or modify one or more rules in the HAT or RAT to implement the desired functionality, as described above.
  • the HAT and RAT can be configured to be modified directly by a user instead of through the use of a GUI such as GUI 500.
  • GUI 500 also includes the following set of buttons: save 590, cancel 592, restore default settings 594, and save as default 596.
  • Save 590 is a graphical button that can be selected by a user, such as administrator 140, to save the options and inputs entered by administrator 140 through GUI 500.
  • Cancel 592 exits GUI 500 without saving any changes that may have been made to the options and inputs of GUI 500.
  • Restore default settings 594 restores the options and inputs of GUI 500 to the specified default settings.
  • Save as default 596 saves the current options and inputs as the specified default.
  • Rate limits 510 includes a checkbox 512 for specifying whether or not the maximum recipients per hour should be limited.
  • Rate limits 510 includes a checkbox 520 for specifying whether or not a maximum recipients per hour code should be used, with the notation illustrated that SMTP code 452 is recommended.
  • Checkbox 520 is associated with a text input box 522 that allows administrator 140 to enter the SMTP code to be sent to the sender of an email message when the email message is rejected because the specified maximum number of recipients per hour is exceed.
  • Rate limits 510 includes a checkbox 524 for specifying whether or not a text string should be included when email messages are rejected for exceeding the specified injection rate.
  • Checkbox 524 is associated with a text input box 526 that administrator 140 can use to provide a text message to be included with the SMTP response for rejected email messages based on the maximum number of recipients per hour being exceeded.
  • Rate limits 510 includes a checkbox 530 to specify whether or not SenderBase should be used when applying the rules in the HAT.
  • Checkbox 530 is associated with selection buttons 532 that allow administrator to specify whether the SenderBase option is
  • server 100 will send a query to SenderBase using the incoming IP address of a sender, and then use the information returned by
  • FIG. 5 uses SenderBase, any type of information service can be used instead to provide information about senders.
  • Connection limits 540 includes a checkbox 542 to specify whether or not the maximum number of connections to the MTA should be limited.
  • Checkbox 542 is associated with a selection button 544 to specify that the maximum number of connections is unlimited and a button 546 to specify the maximum number of connections in the associated text input box.
  • Directory harvest attack prevention 550 includes a checkbox 552 to specify whether or not the maximum number of invalid recipients per hour should be applied.
  • Checkbox 552 is associated with a selection button 554 to specify that the maximum number of invalid recipients is unlimited and a selection button 556 to specify a maximum number of invalid recipients per hour through the associated text input box.
  • Recipient limits 560 includes a checkbox 562 to specify whether or not to always allow email messages addressed to the "postmaster" username for the domain or domains served by the MTA.
  • Checkbox 562 is associated with selection buttons 564 that allow administrator 140 to indicate that this option should or should not be used by checking "yes” or “no,” respectively.
  • Recipient limits 560 includes a checkbox 566 to specify whether or not the
  • Checkbox 566 is associated with selection buttons 568 that allow administrator 140 to indicate “yes” or “no” for using the “reject” action for new public injectors.
  • Recipient limits 560 includes a checkbox 570 to specify whether or not the
  • Checkbox 570 is associated with selection buttons 572 that allow administrator 140 to indicate “yes” or “no” for using the "reject” action for new private injectors.
  • Policies 580 includes a checkbox 582 to specify whether or not spam detection is to be used, along with selection buttons 584 that allow administrator 140 to turn spam detection "on” or "off.”
  • [0156J Policies 580 includes a checkbox 586 to specify whether or not virus detection is to be used, along with selection buttons 584 that allow administrator 140 to turn virus detection "on” or “off.” F. Collecting and Aggregating Message Information
  • Techniques are provided for gathering data about the flow of messages into a system and generating graphical representations of the data to allow a user to identify patterns in the message flows and thereby take action based on the identified pattern. For example, the number of messages being received at an MGA from a particular IP address can be tracked and displayed on a graph that is part of a graphical user interface (GUI). The administrator of the mail server can inspect the graph to identify any patterns or abnormalities, such as a spike in the incoming flow of messages from the IP address.
  • GUI graphical user interface
  • the administrator can then take action, such as throttling the rate at which e-mails are allowed to be received at the email server because of the unusual spike in the number of messages being received, which could indicate that the influx of emails are unsolicited commercial emails, such as spam.
  • the administrator takes the action by clicking on a button in the GUI, such as a "BLACKLIST” button or a "THROTTLE” button, that when selected by the administrator causes the email server to modify the server's configuration information to add the IP address to a blacklist or merely to be rate limited, respectively, that identifies IP addresses from which messages are to be controlled by either not accepting additional messages or by limiting the rate at which messages are accepted from the sender (e.g., by adding to or modifying the HAT).
  • a button in the GUI such as a "BLACKLIST” button or a "THROTTLE” button
  • an unusual mail flow pattern is desirable, such as a spike being caused at a large company when an outside contractor is sending all of the company's employees copies of a press release
  • the administrator can click on a "WHITELIST" button to allow all such messages to be accepted, thereby avoiding such messages from inadvertently being treated as spam.
  • the mail flow monitoring system can present the user with a graphical representation of the mail flow over time for one or more sender identifiers or for all mail flow into the system, along with a breakdown of how many of the messages were blacklisted, whitelisted, greylisted (e.g., subject to injection control), or other categories of treatment or lack thereof.
  • Mail flow monitoring functions can include a number of items. For example, detailed information can be provided about incoming messages, outgoing messages, and processing statistics. Other sources can be accessed for data, such as SenderBase that supplies network owner names and global information for a sender profile. Data can be aggregated and tabular results presented by grouping data on IP address, domain, network owner, or any other sender identifier, along with time series data by the same groupings. [0162] Mail flow monitoring can be implemented in a hierarchical fashion, such as a low level that interacts with a data store or real time data inputs, a middle level that composes tables and aggregates, and a high level interface that finalizes the data for presentation via a graphical user interface. (2) Collecting Data on Message Flows
  • Mail flow data can be collected by measuring inbound and outbound traffic flows, including bytes, recipients, messages, connections, success conditions, failure conditions, and actions taken, such as those specified in the HAT and the RAT.
  • measurements are collected by IP address over short time intervals (e.g., one minute intervals).
  • the per measurement interval counters are aggregated over time to represent traffic over longer time intervals and over IP addresses to represent traffic and product reports by domain name, IP address, subnet, a range of IP addresses, a fully qualified domain name, any level domain, a CIDR block or portion of a CIDR block, a SenderBase organization ID or a SenderBase reputation score.
  • a queue is used to collect data on message flows. For example, collecting data in real time as part of processing incoming messages can at time affect performance to an unacceptable degree, based on the user's needs.
  • the data can be processed outside of the normal message processing, thereby avoiding processing impact from the data collection process.
  • the delay in placing information into the queue and the offline processing of the queue is not great, typically on the order of seconds or a minute or two, and thus the data is generated and can be displayed and reported substantially in real time as the data is collected an processed.
  • the processing of the data in the queue can perform an aggregation of the information in periodic intervals, such as one minute snapshots.
  • the aggregated data from the single minute snapshots can then be further aggregated over longer periods, such as to provide hourly summaries or daily reports. Any level of data, from the lowest level information from the smallest aggregation interval to all data collected, can be reported and displayed to the user.
  • Mail flow data can also be aggregated, displayed, and reported based on the concept of a "primary domain.”
  • a primary domain For example, yahoo.com, aol.com and honda.co.jp are examples of primary domains that are affiliated with a particular organization, such as Yahoo!, America Online, and Nissan of Japan, respectively.
  • mail flow data that is collected based on IP addresses can be aggregated based on the associated primary domains that based on some or all of the IP addresses associated with the primary domain.
  • data can be aggregated, displayed, and reported based on the network owners for individual IP addresses based on a database that includes a mapping of IP addresses to network owners, such as the SenderBase service. For example, when a connection is received from an IP address at the MGA, the system can issue a query to SenderBase to obtain the information for the IP address, such as the network owner, SenderBase organization ID, and perhaps even a reputation score.
  • a network owner that has a many IP addresses that are not otherwise organized in a manner that would allow for the IP addresses to be tacked back to the network owner without the user of such a database can have all of the network owner's IP addresses grouped together, and the system can aggregate, report, and display data for the network owner based on some or all of the IP addresses associated with the network owner.
  • counters can be used for collecting data about the flow of messages through the system, and the counters can be based on any kind of sender identifier, such as those described herein.
  • counters can be used to track the actions taken based on rules in the HAT and RAT, such as a counter for the number of recipients that are blocked from a sending IP address based on injection control or the number of connections refused from a domain due to the maximum number of connections being exceeded.
  • counters can track the number of messages identified by the system as spam, such as by the Brightmail anti-spam engine, or the number of messages determined to be infected with a virus, such as by Sophos anti-virus engine.
  • Counters can be established for different actions taken based on sender identifiers. For example, one counter can track the number of messages rejected for a CIDR block that is listed for a rule in the HAT, while another counter can track the number of messages rejected for a specified domain name that is listed in the HAT. In general, a counter can be used for any sender identifier listed on the left side of the HAT and RAT and count the number of messages affected by the action or rule specified on the right side of the HAT and RAT. (4) Reporting and Displaying Data on Message Flows
  • a graph can display the number of recipients injected over the last day, along with the result of the connection attempts by connection policy (e.g., accepted, throttled, relayed, or blocked/rejected) over the same day.
  • a mail flow summary can be provided that shows the total overall mail flow statistics as well as a breakdown by domain or other sender identifier.
  • the display of the mail flow information via the GUI can include other functions, such as a quick search function that allows the user to specify an IP address for which the system generates a graphical display and/or report of mail flow information based on the specified search criteria.
  • the display can include a quick report function to generate a report based, such as the top IP addresses by the number of recipients blocked.
  • a cu ⁇ ent mail flow graph can display the total rate at which recipients are being injected into the MGA, along with how many of the injected recipients are being blocked as spam, such as by using Brightmail, and how many of the injected recipients are being blocked based on a reputation filter, such as by comparing reputation scores, such as from SenderBase, for the senders of the messages to a specified limit. Also, a summary of the breakdown of the treatment of the recipients can be displayed, such as the percentage of recipients that have been blocked due to a blacklist, those that are allowed based on a whitelist, those that have been subject to injection control (e.g., throttling, or greylisted), and those whose disposition is otherwise unknown or not included in the other categories.
  • injection control e.g., throttling, or greylisted
  • the display of the mail flow information via the GUI can include other functions, such as a quick search function that allows the user to specify an IP address or sender type for which the system generates a graphical display and/or report of mail flow information based on the specified search criteria.
  • the display as illustrated in FIG. 6, can include a quick report function to generate a report based on a sender identifier based on one or more search criteria.
  • a GUI for displaying mail flow data allows the user to identify patterns, such as that a virus attack is underway or a spam campaign has targeted the recipients for the MGA.
  • a mail flow graph can depict a large increase in the number of recipients blocked based on the reputation filter during Friday and Saturday. The user can then request a report on the IP addresses from which the reputation filter blocked messages were received, and then add some or all of the IP addresses thereby identified to the HAT with an appropriate rule, such as that the IP address is to be blacklisted or subject to mail injection rate limitations. (6) Alerts and Alarms
  • the mail flow monitoring portion of the system can compare mail flow data to thresholds, limits, or other specified values, and generate an alert message to the administrator of the MGA or present an alarm message on a display.
  • the system can compute a thirty day average, such as that the MGA is having 100 recipients/day injected from a particular IP address. The system can then compare the mail flow from the particular IP address for the cu ⁇ ent day to the thirty day average. If the difference between the data for the cu ⁇ ent day and the thirty day average exceeds a specified amount, such as a threshold level of a 500% increase, the system can send an alert message to one or more individuals associated with the MGA and/or display an alarm message on a display associated with the MGA.
  • a specified amount such as a threshold level of a 500% increase
  • the alert or alarm allows the user of the MGA to review the mail flow data and take an action. For example, a 500% increase in the number of injected recipients from a particular IP address may indicate a hit and run type of spam campaign, and as a result, the user can take an appropriate action, such as using mail flow injection control to limit the number of recipients being injected to the MGA to a particular amount, such as the thirty day average, or such as blacklisting the IP address for the next several hours. (7) Taking Actions
  • the system for displaying mail flow monitoring data includes one or more graphical objects, such as buttons, that allow the user to take actions based on the information being displayed. For example, if the display includes a mail flow graph that depicts the number of messages being received over that last six hours from an IP address and that shows an unusually large spike in the number of messages received over the last thirty minutes, the user can click on one or more buttons that cause the system to take a specified action. As a specific example, if the user determines that the spike is likely the result of a virus attack or a hit and run spammer, the user can click on a button on the display labeled "BLACKLIST" to have the IP address showing the spike in messages blacklisted. Such a capability can be refe ⁇ ed to as a "one button blacklist" feature, and can be implemented by making a change to the HAT.
  • buttons that allow the user to take actions based on the information being displayed. For example, if the display includes a mail flow graph that depicts the number of messages being received over that last six
  • the user can click on a button labeled "WHITELIST" to have the messages allowed, such as when the user determines the IP address is that of a trusted partner who is unlikely to be the source of virus infected messages or spam.
  • the user can click on a button labeled "GREYLIST” to have the flow of messages from the IP address limited, such as by employing one of the mail injection control approaches described herein to limit the rate at which recipients are injected to the MGA by the IP address.
  • the system can implement the action represented by the user's use of such graphical objects, such as the buttons described above, by one of a number of approaches. For example, when a button is clicked by the user, the system can generate an appropriate rule and add the rule to the HAT or RAT, such as that the identified IP address be blacklisted, whitelisted, or greylisted.
  • the system can generate an appropriate rule and add the rule to the HAT or RAT, such as that the identified IP address be blacklisted, whitelisted, or greylisted.
  • the techniques include obtaining a first set of data from a first source and related to one or more message senders each sending one or more electronic messages, obtaining a second set of data from a second source and related to the one or more message senders each sending one or more electronic messages, determining message volume information related to the one or more message senders based on the first set of data and the second set of data, and providing the message volume information related to the one or more message senders.
  • the approaches include receiving one or more messages from a particular message sender, sending a request for message volume information related to the particular message sender, receiving the message volume information related to the particular message sender, where the message volume information related to the particular message sender was determined by obtaining a first set of data from a first source and related to one or more message senders each sending one or more electronic messages, obtaining a second set of data from a second source and related to the one or more message senders each sending one or more electronic messages, determining message volume information related to the one or more message senders based on the first set of data and the second set of data, and limiting delivery of messages from the particular message sender based on the message volume information related to the particular message sender.
  • the approaches include receiving one or more messages from a particular message sender, sending a request for message volume information related to the particular message sender, receiving the message volume information related to the particular message sender, where the message volume information related to the particular message sender was determined by obtaining a first set of data from a first source and related to one or more message senders each sending one or more electronic messages, obtaining a second set of data from a second source and related to the one or more message senders each sending one or more electronic messages, determining message volume information related to the one or more message senders based on the first set of data and the second set of data, and blocking delivery of a particular message from the particular message sender based on the message volume information related to the particular message sender.
  • Example information that a data processing unit may collect for message senders are: time of the first request for information about that email sender, volume over time of requests for information about that email sender, percentage of total volume of all requests for information about that email sender, network owner of the IP address from which the message is sent, network topology information for the area of the network in which the IP address of the email sender is located, category of enterprise or organization to which the email sender belongs, time that the IP address of the sender last changed ownership, geographical location of the email sender, geographical information about the path the email message has taken, or any other appropriate information.
  • the time of the first request for information about a particular email sender may be obtained by keeping information related to each request for information for each sender about which information is requested. Whenever information is requested for a sender, a record or set of records related to the request for information may be recorded or modified. For example, if no information for that sender has been recorded previously, then a new record or set of records is created and the time of the first request is recorded. [0182] A data processing unit collects the volume over time of requests for information about an email sender or group of senders. The calculation of volume over time may be performed in any appropriate manner and for any appropriate time periods.
  • the volume over time may be calculated as the number of requests for information about a particular sender or group of senders over a day, week, month, 30-day period, or year.
  • one or more of the following can be used: determine the fluctuation in volume over time as a percentage or absolute change in any appropriate volume calculation over time Tl as compared to time T2, where Tl ⁇ T2; determine a percentage or absolute change in any appropriate volume calculation over time Tl as compared to time T2, where Tl and T2 do not overlap; determine a percentage or absolute change in any appropriate volume calculation over time Tl as compared to time T2, where Tl ⁇ T2 and T2 represents the entire time range for which information about a sender or group of senders has been collected; or any other appropriate calculation.
  • a data processing unit determines the network owner associated with a message sender based on the IP address from which the message is sent. Also, a network owner can be determined by geographical location, domain name, or any other appropriate identifier associated with the sender. In other implementations, a network owner is determined by querying a list or data structure of known network owners of IP addresses, or a determination of network owner may be based on domain name, geographical location, or any appropriate information.
  • Network owners are typically broken up into one or more groups, herein called network operators.
  • an Internet Service Provider ISP
  • the network operators of portions of the IP addresses owned by the network owner may be used by an email gateway or other server or application to indicate blocking a message, bouncing a message, throttling messages from a sender or group of senders, or displaying the information based on the network owner or network operator.
  • the network operators of IP addresses within a set of IP addresses owned by a single network owner are estimated by assigning separate blocks of IP addresses to separate operators, receiving information from the network owner indicating which IP addresses are operated by which network operators, or estimating network operators based on domain names associated with the IP addresses.
  • an ISP is a network owner and owns a block of IP addresses at "152.2.*.*".
  • the block of IP addresses may be broken up into blocks of 256 IP addresses: "152.2.1.*", "152.2.2.*", ..., "152.2.256.*”
  • the decision whether to break up a network owner may be based on the number of IP addresses owned by the network owner or by the category of the ISP.
  • an ISP owns 1024 IP addresses
  • any blocking, throttling, or other action taken based on the network operator will not effect all of the potential message senders with IP addresses owned by the ISP, but will effect only a portion of the senders.
  • an email-marketing firm that owns 1024 IP addresses may not have its 1024 IP addresses divided into multiple network operators.
  • any and all messages may be considered to come from the same company and should be, if appropriate, blocked, throttled, or any appropriate action taken.
  • Assigning a network operator to a set of IP addresses comprises assigning a new network owner co ⁇ esponding to the network operator for the set of IP addresses.
  • the data processing unit obtains network topology information for the area of the network in which the IP address of the email sender is located.
  • network topology information that is associated with a particular sender includes network owners of IP addresses near the IP address of the particular sender, network owners of other IP addresses associated with the same geographical area, or any appropriate network topology information.
  • a particular sender has a particular IP address. If that IP address is near one or more other IP addresses that are suspected spam senders, then the IP address may be rated as more likely to produce spam.
  • an IP address is near another if the two IP addresses have the same high-order significant bits, where the number of bits that are high-order significant bits may be any number of bits, including from 1 bit to 31 bits.
  • the data processing unit obtains the category of the enterprise or organization associated with the email sender.
  • the categories associated with email message senders can be airlines, Fortune 500 companies, Fortune 1000 companies, Fortune 1500 companies, ISPs, banks, or any appropriate category.
  • the data processing unit records the change of ownership of an IP address.
  • the change of ownership is recorded by clearing previous information about the IP address or indicating that the owner of the IP address is unknown.
  • Information that may be cleared about the IP address or other indicator may include the first recorded request about a message, volume of requests, or any other appropriate information.
  • the information request handler keeps track of the number of times that an IP address changes owners.
  • the information about change of ownership combined with other information, such as message volume information, may be used to indicate that a sender may be sending spam.
  • the data processing unit records geographical location of the email sender.
  • the geographical location of the email sender is determined by the IP address, domain name, or a look up table indicating the geographical location of the email sender. Geographical information may be useful in determining which messages are valid. As another example, if a particular email recipient never receives email from China, then a message from China may be more likely to be spam.
  • the data processing unit obtains geographical information about the path the email message has traveled, or the geographical path, based on the header information in the email message.
  • the header information in the email message may indicate a path the email message has taken since it was sent. Geographical information may be determined based on the header information in any appropriate manner, including determined by the IP address, domain name, or other look up table indicating the geographical location of gateways the email message has traversed.
  • information related to email messages may include information in the content of the message, such as the existence of keywords or tokens.
  • An example of email recipient information may be the amount of spam a particular email recipient receives. For example, if 90% of the email that a particular email recipient receives is spam, then that information may be used to aid in the estimation of whether an email directed to that recipient is spam.
  • data related to information about email senders is obtained.
  • Various types of data that may be obtained from the following: an email gateway, an information request handler, an email client, or any other appropriate source.
  • data is obtained by requesting the information from the information source.
  • the info ⁇ nation source may provide the information based on any appropriate event or based on any appropriate schedule instead of being provided in response to a request.
  • the data may also be obtained by performing a DNS zone transfer.
  • multiple sets of data for one or more email senders may be obtained from multiple sources or from the same source at two or more different times.
  • processing the data includes determining one or more of the following: a volume of messages over time, the percentage of message sent by a message sender compared to all messages sent, a magnitude value, a change of absolute or percentage of total messages of a particular time period as compared to a different time period, a change of absolute or percentage of total messages during a particular time period as compared to absolute or percentage of total messages since the first request for information about the sender was received, or any other appropriate calculation.
  • a data processing unit calculates a magnitude value for a particular network owner associated with a particular message sender and determines the change in the magnitude value as compared to the magnitude value for the previous day.
  • processing information related to a message sender includes storing information related to the message sender in a database, flat file, or other storage mechanism.
  • processing information related to a message sender includes determining the network owner or network operator associated with the message sender.
  • the IP address, domain name, geographical location, or network topology of the message sender is used to determine the network owner or network operator associated with the message sender. The decision whether to associate a network owner or network operator with a message sender is based on whether the IP address or domain name of the message sender is in a set of IP addresses or domain names associated with the network owner or network operator.
  • the determination of which network operator to associate with a message sender is made by dividing the set of IP addresses for a network owner associated with a message sender into two or more network operators and determining which network operator to associate with a message sender based on which network operator is associated with a set of IP addresses containing the IP address of the message sender.
  • a network owner is divided into network operators based on the category of the network owner, based on the number of IP addresses associated with the network owner, based on information about one or more network operators within the network operator, or any other appropriate decision.
  • a message sender is associated with an IP address, which is associated with a particular network owner.
  • the particular network owner is an ISP that owns 1024 IP addresses.
  • the network owner is split into four network operators, each co ⁇ esponding to 256 IP addresses.
  • the message sender's IP address fall into the range associated with a particular network operator, and the message sender is associated with the particular network operator.
  • Processing the data related to information about email senders includes determining or storing category information for network owners and network operators. Determining the category information for network owners or network operators may include receiving the category information through a GUI, via an electronic interface, or from an email gateway, information request handler, email client, or any appropriate source. Alternatively, the category information may be determined automatically using an automatic categorizer based on keyword detection, Naive Bayes, or any other appropriate categorization mechanism. Determining the category information includes accessing a list containing category information and cross-referencing it to message senders, network owners, or network operators. The category information includes a list of airlines, Fortune 500 companies, Fortune 1000 companies, Fortune 1500 companies, ISP's, or any other appropriate category.
  • Processing the data related to information about email senders includes determining information related to the history of an IP address associated with the message sender.
  • the information about the history of the of the IP address includes determining when a first request for information was made about the message sender, how many requests have been made about the sender, how many requests over time have been made about the sender, how often the IP address has changed network owners, when the IP address last changed ownership, and any other appropriate information.
  • a data processing unit processes data related to an IP address' history in order to determine and store when a request for information about the email sender was first made.
  • Processing the data related to information about email senders includes determining geographical information.
  • An external electronic service is queried to determine the geographical location of a message sender.
  • the geographical location of a message sender is determined by looking up the location of the IP address associated with the message sender in a lookup table or by querying an electronic service, and then the geographical path of a message is determined.
  • the geographical locations of hubs, routers, or gateways through which the email traveled are determined.
  • the information about hubs, routers, or gateways through which the email traveled is determined by parsing the message header. For example, a data processing unit parses the header of a message from a message sender in order to determine the geographical location of all hubs, routers, and gateways through which the email has traveled.
  • information related to email senders is made available.
  • the information is made available via a graphical user interface or an electronic interface, and the information is made available by responding to requests for information about message senders, by sending it to an interested party based on particular rules, or by making the data available in a public or private website.
  • the graphical user interface by which the information related to email senders is made available, can be from a web site, a graphical interface to a computer program, or any other appropriate graphical interface. Single items or multiple data items as described herein are presented in the graphical user interface.
  • the information related to email senders may also be made available via an electronic interface.
  • the electronic interface is a DNS-like interface.
  • any appropriate electronic interface may be used, including a web service, a rsync gateway, a FTP server, a HTTP server, a HTTPS server, a defined remote procedure call interface, a TCP/IP sockets interface, a UDP interface, or any other appropriate interface.
  • a reputation of a message sender is determined by obtaining two or more lists from two or more list providers, then determining which lists of the two or more lists indicate the message sender, and then determining a reputation score for the message sender based on which lists of the two or more lists indicate the message sender.
  • an indication can be provided that a message is unsolicited based on a reputation score.
  • information from the two or more lists can be stored in an aggregate list data structure, and determining what lists indicate the message sender includes querying the aggregate list data structure.
  • a particular list is one of the two or more lists and the particular list contains one or more entries
  • storing information from the two or more lists in the aggregate list data structure includes determining the difference of the particular list with a previous version of the particular list, storing entries of the particular list that were not in the previous version of the particular list in the aggregate list data structure, and removing from the aggregate list data structure entries that are not in the particular list but were in the previous version of the particular list.
  • determining the reputation score includes determining an individual score for each list of the two or more lists and determining an output score based on the individual score for each list in the two or more lists.
  • determining the output score includes determining an aggregate score based on the individual score for each list of the two or more lists, determining a normalized score based on the aggregate score, and determining the output score based on the normalized score.
  • the individual score for each list in the two or more lists each includes an individual probability and a list of probabilities includes the individual probability for each list in the two or more lists, and determining the aggregate score based on the individual score for each list of the two or more lists includes performing a Chi Squared calculation on the list of probabilities.
  • the approach includes one or more of the following: receiving a request for the reputation of the message sender; receiving the request for the reputation of the message sender by receiving a request formatted as a DNS request; the message sender is associated with a particular IP address; determining what lists of the two or more lists indicate the message sender includes determining for a particular list of the two or more lists whether the particular IP address of the message sender is contained in an IP address range indicated by the particular list; and if a particular list indicates an IP address range, setting a bit co ⁇ esponding to the particular list in a particular list bit mask data structure co ⁇ esponding to the IP address range.
  • setting the bit co ⁇ esponding to the particular list is performed for each list of the two or more lists, and the sender co ⁇ esponds to a particular IP address, the particular IP address is contained within a first IP address range that has associated with it a first list bit mask, and the IP address is contained within a second IP address range associated with a second list bit mask.
  • determining which lists of the two or more lists indicate the message sender can be accomplished by performing an "or" operation on the first list bit mask and second list bit mask to produce a third list bit mask and determining what bits are set in the third list bit mask.
  • Some implementations can include receiving a message from a message sender, obtaining a reputation score of the message sender, where the reputation score of the message sender was determined by obtaining two or more lists from two or more list providers, determining which lists of the two or more lists indicate the message sender, determining the reputation score for the message sender based on which lists of the two or more lists indicate the message sender, and if the reputation score is worse than a first predefined threshold, indicating that the message is unsolicited.
  • Related features include one or more of the following: if the reputation score is better than a second predefined threshold, an indication is made that the message is valid, where the first predefined threshold is different from the second predefined threshold; if the reputation score is better than the first predefined threshold and worse than the second predefined threshold, indicating that the message is not estimated as either valid or invalid; sending a request for the reputation score of the message sender; obtaining the reputation score of the message sender by receiving a response to the request for the reputation score of the message sender; and sending the request for the reputation score of the message sender includes sending a particular request formatted as a DNS request.
  • the following example for determining a reputation score is described assuming that the sender is associated with an IP address. The techniques described herein, however, are in no way limited to use of IP address as an identifier of a sender. In other embodiments, the sender is identified by domain name, email address, geographical location, or any appropriate mechanism.
  • a score is obtained co ⁇ esponding to each list. For example, this score is obtained by determining, for each blacklist, whether the sender's IP address is in the particular list. If the IP address is indicated in the particular list, then the score for the list represents a certain percentage likelihood that the message is an unsolicited electronic message (often higher than 50%). If the IP address is not indicated in the particular list, then the score for the list still represents a certain percentage likelihood that the message is an unsolicited message (often less than 50%).
  • this score is obtained by determining, for each "white" list, whether the sender's IP address is in the particular list.
  • a white list is a list of IP addresses and ranges that are believed to be associated with senders of legitimate electronic messages. If the IP address is indicated in the particular list, then the score for the list represents a certain percentage likelihood that the message is unsolicited (often less than 50%). If the IP address is not indicated in the particular list, then the score for the list represents a certain percentage likelihood that the message is unsolicited (often higher than 50%).
  • a white list or blacklist will contain ranges of IP addresses and exceptions to those IP addresses, thereby including all IP addresses in a range except those that are excluded.
  • the white lists and blacklists contain integer or floating point values indicating scores for IP address ranges and IP addresses, and these scores are used to determine an aggregate score for an IP address with respect to the lists. Also, an aggregate list data structure is queried to determine which lists indicate the sender. [0218] Next, an aggregate score is generated based on the scores for each list determined above. For example, the score for each list is a percentage likelihood that a message is unsolicited and the aggregate score is an aggregate percentage likelihood that is generated based on the individual percentages likelihoods. As another example, this aggregate percentage likelihood is based on a weighted average of the individual percentages likelihoods, a sum or product of the individual percentages likelihoods, a polynomial of the individual percentages likelihoods, or any appropriate calculation.
  • the aggregate percentage is based in part on the Chi Squared function over the probabilities, a Robinson calculation, a Bayes calculation, or any other appropriate mechanism.
  • the Chi Squared function is depicted in the Python Programming Language (www.python.org) code.
  • the aggregate score is mapped to a normalized score.
  • the aggregate score is an aggregate percentage
  • the normalized score is a mapped percentage that has the range from 0% to 100%
  • this step is performed by mapping the aggregate percentage to the normalized range from 0% to 100%.
  • this mapping is linear, piecewise linear, cubic, polynomial, or uses any other appropriate function.
  • a piecewise linear method of mapping the aggregate function is used and comprises determining the known lowest possible probability (LP), the known average probability (AP), the known highest possible probability (HP), and linearly mapping percentages from LP to AP to 0% to 50% and percentages from AP to HP to 50% to 100%.
  • Mapped Percentage (MP) ⁇ if (P ⁇ AP) ; (P - LP) * 50 / (AP - LP) ⁇ else; (P - AP) * 50 / (HP - AP) + 50.
  • LP is determined by performing the calculations of the previous step using the lowest possible score (e.g. percentage) for each of the lists
  • HP is determined by performing the calculations of the previous step using the highest possible score (e.g. percentage) for each of the lists
  • AP is determined by performing the calculations of the previous step using a random sample of possible values and averaging the result.
  • the normalized score is mapped to an output score.
  • a mapped percentage is mapped to an output (mapped) score.
  • this mapping is linear, piecewise liner, cubic, piecewise cubic, polynomial, or piecewise polynomial, exponential, piecewise exponential, or any appropriate mapping.
  • lo k and hi_k are constants. It may be beneficial to use hi k and lo_k values approximately in the range of 0.5 and 2.0. It may be beneficial to use hi_k and lo_k values approximately in the range of 0.6 and 1.0. Hi k and lo_k may each have the same value or may have different values.
  • throttle mail injection or to control the rate at which one or more senders can send messages to a recipient domain, can be useful for a number of reasons. For example, a high injection rate can be indicative of spam, which is generally undesirable. As a specific example, if a company with a mail gateway device that normally receives a few hundred email messages per hour suddenly begins to receive over a thousand message each hour from a particular IP domain, it is likely that the email messages are part of a spam campaign from the IP domain.
  • a large influx of otherwise desired messages over a short period of time can cause problems for the recipient domain, including crashing the recipient domains mail servers.
  • the mail servers at the large company could experience stability problems due to the large number of messages being sent in a short period of time. Since the large company wishes to have each employee receive the press release, but the large company also wants to avoid stability problems with its mail servers, the ability to control and limit the rate that the messages containing the press release are received can be beneficial.
  • the threshold point at which a sender, or a remote injector, of email messages is to be controlled depends on the particular implementation and can be configured by the user of the system, such as the administrator of an MTA, although a default value can also be used even if the user has not specified a value.
  • a sender injecting 200 messages/hour may be indicative of a spammer at a small company having only 50 employees, but for a large company with 10,000 employees, such an injection rate may be perfectly normal for mail from non-spam sources.
  • the threshold limit is reached on the rate that a sender is injecting messages
  • one of a number of approaches can be taken to limit the rate at which subsequent messages are injected.
  • the injection of the messages can be artificially slowed over each connection.
  • a spammer can circumvent this approach by opening more connections, although as described herein, the number of connections can also be limited.
  • the recipients can be rejected by the recipient domain, such as be sending a 452 SMTP e ⁇ or code that indicates that the sender has injected too many recipients. This allows the system to continue to count recipients, which can be done after the message is accepted but prior to forwarding the message to the recipient.
  • TCP REFUSE or accept then close can be used instead of sending a 4xx SMTP e ⁇ or code (e.g., a polite refusal, in contrast to the less polite TCP REFUSE or accept_then_close approaches).
  • a 4xx SMTP e ⁇ or code e.g., a polite refusal, in contrast to the less polite TCP REFUSE or accept_then_close approaches.
  • Mail injection can be controlled based on one or more rules, such as one or more entries in the HAT. As data is accumulated via the counters, that measured data is compared to the parameters in the HAT to determine if any actions are to be taken. It is possible that more than one action will apply to a particular situation. For example, a HAT entry may exist specifically for IP address 1.2.3.4, plus another entry for the CIDR block of 1.2.3/24, both of which would apply to a connection from IP address 1.2.3.4. As a result, the system determines which of the two entries to apply. In some implementations, the HAT is order specific such that the first entry in the HAT that matches to the connection is used.
  • each entry in the HAT includes a priority identifier, and the entry with the highest priority identifier is used.
  • Any of a number of attributes can be matched in the HAT, including but not limited to, one or more of the following: a network address, an IP address, an IP address range, a CIDR block, an exact FQDN match, a partial FQDN match, and a SenderBase organization ID.
  • a default value such as "ALL” can be used for controlling the injection rate when no other HAT entry matches, and thus the "ALL" entry can catch senders that are otherwise unclassified (e.g., not matched by any other HAT entries).
  • the HAT can include a parameter that specifies the maximum number of recipients in a particular time period, such as the maximum number of recipients per hour (e.g., max_rcpts_per_hour). For example, once the specified limit is reached, the system does not accept any more recipients for the remainder of the time period (e.g., until the end of the hour for an hour-based counter).
  • the HAT can also include a parameter (e.g., max_rcpts_per_hour_text) for the user to specify a custom SMTP response message to be used if a recipient is rejected due to such a rate limitation, as well as the SMTP code that should be returned (e.g., max_rcpts_per_hour_code for which the default can be set to SMTP code 452).
  • the system can be configured to use a default text response if the user does not specify a custom response. For example, the default text response can be "Too many recipients injected this hour" for an hourly based injection rate counter/limitation.
  • the counter used for controlling mail injection is the rate at which recipients are accepted by the recipient host domain.
  • a recipient is considered to be “accepted” if the recipient is not rejected due to rate limiting of the mail flow.
  • the counter is not incremented.
  • the counter is incremented regardless of the reason for the recipient being rejected. J. Controlling the Number of Connections Made to a Recipient Domain
  • the system establishes a counter for the number of connections to a recipient host, such as an MTA, and when the number of connections exceeds a specified number, no further connections are allowed until the number of cu ⁇ ent connections drops below the specified number.
  • a mail server may have a limit of 50 connections at any given time, so that when the 51 st connection is attempted, the mail server refuses to establish the connection with the sending host.
  • the number of allowed connections is counted based on one or more sender identifiers.
  • the number of connections from an IP address can be limited to a specified number, and the number of connections from another IP address can be limited to another specified number.
  • any type of sender identifier can be used, including but not limited to, one or more of the following: a network address, an IP address, a range of IP addresses, a list of IP addresses, a domain, a fully qualified domain name, a SenderBase organization ID, and a reputation score, such as a SenderBase reputation score.
  • the maximum number of connections is specified by a parameter in the HAT.
  • a variable called "max concu ⁇ ency" is used to specify the number of connections for the associated sender identifier.
  • any type or combination of sender identifiers can be used on the left side of the HAT so that the system aggregates connections from all of the co ⁇ esponding sender IP addresses and compares the aggregate number of connections to the specified maximum number of connections, and when the limit is exceeded, each connection is treated with the REJECT action.
  • one or more sender identifiers can be excluded from the counter that is compared to the maximum number of allowable connections.
  • the user can add an entry to the RAT to specify one or more IP addresses or other sender identifiers that are not to be counted against the maximum number of connections for the sender identifier that is specified in the HAT.
  • a spammer can use a directory harvest attack to generate a list of valid email addresses for a host domain. Because the recipient host typically generates a bounce message when a message is addressed to an invalid email address, the spammer can determine valid email addresses based on the lack of a bounce message, thereby constructing a directory of valid email addresses at the recipient host. While directory harvest attacks can be prevented by never sending bounce messages, there will be messages that include invalid addresses, due to typographical e ⁇ ors in entering the address for example, for which a bounce message should be desired.
  • bounce messages are no longer returned to the sender of the emails having invalid email addresses, based on the assumption that when the specified limit is reached, the likely cause of so many invalid recipient addresses is that a directory harvest attack is occurring.
  • the HAT can include a rule that associates a sender identifier with a variable, such as max_invalid_rcpts_per_hour, that specifies the maximum allowed number of invalid email recipient addresses in a given time period, such as one hour.
  • a counter is used to track the number of invalid email addresses from the sender. So long as the counter does not exceed the specified limit, invalid addresses are treated in the typical fashion, with an SMTP response being sent back to inform the sender that the email address is invalid (e.g., a bounce message). However, when the counter exceeds the specified maximum number of invalid email addresses during the time period, bounce messages are no longer sent to the sender and the messages are dropped.
  • the counter is reset to zero and begins tracking the number of invalid recipients from the sender once again.
  • some of the initial messages sent by the sender are treated in the normal fashion with bounce messages generated and sent for any invalid addresses.
  • the spammer can determine based on the initial messages some valid and invalid email addresses.
  • the spammer no longer receives any bounce messages, and thus the spammer is inco ⁇ ectly led to believe that all the messages are addressed to valid email addresses, when in fact many or perhaps even most are not.
  • the spammer uses the subsequently created list of allegedly valid email addresses, most will then bounce at a later time during a spam mailing campaign, or will be treated again as a subsequent directory harvest attack.
  • the specified limit on the number of invalid recipient addresses can be set by the user, such as the administrator for the MTA, and the MTA can be configured with a default value and whether to have directory harvest attack prevention enabled or not.
  • a limit of zero can be used to disable the limit.
  • a typical recommended value for the maximum number of invalid recipients can be 10 invalid recipients per hour per sender identifier (e.g., HAT entry).
  • Sender identifiers for directory harvest prevention work in the same manner as for mail flow injection control and limiting the number of connections.
  • the sender is keyed off of the string value in the HAT host entry that matches the incoming connection, or the constructed string value if the use SenderBase (e.g., "use_sb") option is active.
  • whether the recipient address is invalid is determined after the SMTP conversation. Any bounce messages generated for invalid recipient addresses must be sorted by the spammer to determine why the attempted delivery failed, which servers to further deter the directory harvest attack.
  • some implementations may use the time at which the first invalid recipient email address that exceeds the specified limit occurs.
  • the detection of a directory harvest attack can be logged and reported to SenderBase, if desired.
  • the identification of a directory harvest attack can include additional information, such as the IP address of the sender from which the invalidly addressed messages originate, the reversed DNS results for the sender's IP address, the HAT entry that matched the sender, and the threshold limit for the number of invalid recipients.
  • an alert message can be sent to the user or administrator of the recipient host, and the mail flow monitoring system can track the number of recipients being rejected after the start of a directory harvest attack.
  • one or more of the following items of information can be included: notification of a potential directory harvest attack, the fact that a message has been dropped (instead of bounced), the IP address of the sender of the dropped message, the reversed DNS results of the sender's IP address, the HAT entry that matched the sender, the threshold/limit set for the number of invalid recipients per period of time, the Envelope Sender from the message envelope, the Envelope Recipient(s) from the message envelope, and the Message Headers [0247]
  • the following is a CLI example for establishing the parameters for directory harvest attack prevention. Enter the maximum number of recipients per message Type DEFAULT to inherit the value from the default settings [ 1000] > would you like to specify a custom SMTP response?
  • an optional web interface can be used by the user to configure directory harvest attack prevention, along with other features as described herein.
  • FIG. 6 is a block diagram that depicts a computer system 600 upon which an embodiment may be implemented.
  • Computer system 600 includes a bus 602 or other communication mechanism for communicating information, and a processor 604 coupled with bus 602 for processing information.
  • Computer system 600 also includes a main memory 606, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 602 for storing information and instructions to be executed by processor 604. Main memory 606 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 604. Computer system 600 further includes a read only memory (ROM) 608 or other static storage device coupled to bus 602 for storing static information and instructions for processor 604. A storage device 610, such as a magnetic disk or optical disk, is provided and coupled to bus 602 for storing information and instructions.
  • main memory 606 such as a random access memory (RAM) or other dynamic storage device
  • Computer system 600 may be coupled via bus 602 to a display 612, such as a cathode ray tube (CRT), for displaying information to a computer user.
  • a display 612 such as a cathode ray tube (CRT)
  • An input device 614 is coupled to bus 602 for communicating information and command selections to processor 604.
  • cursor control 616 is Another type of user input device
  • cursor control 616 such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 604 and for controlling cursor movement on display 612.
  • This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
  • the invention is related to the use of computer system 600 for implementing the techniques described herein. According to one embodiment, those techniques are performed by computer system 600 in response to processor 604 executing one or more sequences of one or more instructions contained in main memory 606. Such instructions may be read into main memory 606 from another machine-readable medium, such as storage device 610. Execution of the sequences of instructions contained in main memory 606 causes processor 604 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
  • machine-readable medium refers to any medium that participates in providing instructions to processor 604 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media.
  • Non-volatile media includes, for example, optical or magnetic disks, such as storage device 610.
  • Volatile media includes dynamic memory, such as main memory 606.
  • Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 602. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
  • Machine-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
  • Various forms of computer readable media may be involved in ca ⁇ ying one or more sequences of one or more instructions to processor 604 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer.
  • the remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem.
  • a modem local to computer system 600 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal.
  • An infra-red detector can receive the data ca ⁇ ied in the infra-red signal and appropriate circuitry can place the data on bus 602.
  • Bus 602 carries the data to main memory 606, from which processor 604 retrieves and executes the instructions.
  • the instructions received by main memory 606 may optionally be stored on storage device 610 either before or after execution by processor 604.
  • Computer system 600 also includes a communication interface 618 coupled to bus 602.
  • Communication interface 618 provides a two-way data communication coupling to a network link 620 that is connected to a local network 622.
  • communication interface 618 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a co ⁇ esponding type of telephone line.
  • ISDN integrated services digital network
  • communication interface 618 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN.
  • LAN local area network
  • Wireless links may also be implemented.
  • communication interface 618 sends and receives electrical, electromagnetic or optical signals that ca ⁇ y digital data streams representing various types of information.
  • Network link 620 typically provides data communication through one or more networks to other data devices.
  • network link 620 may provide a connection through local network 622 to a host computer 624 or to data equipment operated by an Internet Service Provider (ISP) 626.
  • ISP 626 in turn provides data communication services through the world wide packet data communication network now commonly refe ⁇ ed to as the "Internet" 628.
  • Internet 628 uses electrical, electromagnetic or optical signals that ca ⁇ y digital data streams.
  • the signals through the various networks and the signals on network link 620 and through communication interface 618, which ca ⁇ y the digital data to and from computer system 600, are exemplary forms of ca ⁇ ier waves transporting the information.
  • Computer system 600 can send messages and receive data, including program code, through the network(s), network link 620 and communication interface 618.
  • a server 630 might transmit a requested code for an application program through Internet 628, ISP 626, local network 622 and communication interface 618.
  • the received code may be executed by processor 604 as it is received, and/or stored in storage device 610, or other non-volatile storage for later execution. In this manner, computer system 600 may obtain application code in the form of a carrier wave.
  • the techniques disclosed herein can be implemented on devices that are used as a mail server between one network and another, such as between the network of a company and the Internet. Such devices may be refe ⁇ ed to as mail gateway appliances (MGA's) or more generally as mail transfer agents (MTA's) because they act as a gateway between the networks and act as a mail server for sending and receiving email messages.
  • MTA's mail gateway appliances
  • MTA's mail transfer agents
  • the IronPort A-Series Appliances and C-Series Appliances produced by IronPort Systems, Inc., of San Bruno, California, can be used to implement one or more of the techniques described herein. These appliances are described in more detail below.
  • the techniques described herein can be used with any suitable mechanism, not just IronPort' s MTA's or any other manufacturer's MTA's.
  • the IronPort A-Series family includes two mail transport agents, the A30 and A60, which provide high performance email delivery to a large number of recipients, such as for commercial email delivery of transaction confirmations or customer newsletters.
  • the A30 can deliver 600,000 email messages per hour, and the A60 can deliver 1,000,000 messages per hour, both of which are much greater than can be achieved by traditional open- source mail transport agents (MTAs), such as general-purpose servers running sendmail or qmail.
  • MTAs open- source mail transport agents
  • Mail transport agents such as the IronPort A-Series family of Messaging Gateway AppliancesTM are sometimes refe ⁇ ed to as "injectors" because such mail transport agents inject messages into another mail transport agents, such as by sending email through the Internet from a sender that is associated with one mail transport agent to a recipient that is associated with another mail transport agent.
  • the IronPort C-Series family includes three email security appliances, the CIO, C30 and C60, which provide threat protection, block spam and viruses, and enable co ⁇ orate email policy enforcement.
  • the email security appliances in the C-Series family are deployed between an organization's firewall and groupware servers, such as ExchangeTM, NotesTM, and Group WiseTM, to power and protect email flowing in from or out to the Internet.
  • the different A-Series and C-Series appliances include some or all of the following IronPort technologies: Stackless ThreadsTM, I/O-Driven Scheduling TM, AsyncFSTM, Reputation FiltersTM, and SenderBaseTM.
  • the IronPort Stackless ThreadsTM technology allows a C-series email security appliance to handle up to 10,000 simultaneous connections.
  • each thread is allocated memory as needed, in contrast to traditional approaches in which each thread is allocated a fixed and dedicated memory stack that is typically very generous to avoid stack overflow e ⁇ ors.
  • the allocation of memory on an as needed basis with Stackless Threads more efficiently uses memory and increases concu ⁇ ency while eliminating the risk of security holes and system crashes from stack overflows.
  • the IronPort I/O-Driven Scheduling TM technology optimally schedules service for each connection. As with Stackless Threads, IronPort' s I/O Driven Scheduling allocates system resources as needed. Tasks are scheduled around the availability of transmission control protocol (TCP) connections for reading or writing, so that when a TCP connection becomes available, I/O-Driven Scheduling grants system resources to the associated task until such time as the connection is no longer capable of I/O.
  • TCP transmission control protocol
  • Managing these files in traditional approaches becomes prohibitive when receiving hundreds of thousands of messages per hour, and in addition, modifying any file involves multiple disk accesses to update data within a file and multiple disk accesses to update inodes (e.g., maps of pointers to each bloc of data within a file that are stored on disk).
  • inodes e.g., maps of pointers to each bloc of data within a file that are stored on disk.
  • AsyncFS messages are stored in batches, not individual files, which reduces the number of basic read/write operations.
  • each queue data structure which governs the order of message delivery, doubles as an inode that maps where messages are stored on disk.
  • These "inode queues" are stored in RAM instead of on disk, further reducing the read/write operations.
  • AsyncFS reads message data from disk as it rebuilds the inode queues in RAM and resume message delivery.
  • IronPort' s Reputation FiltersTM are used to intelligently throttle, or even block, suspicious senders.
  • the appliance receives inbound mail and performs a threat assessment of the sender, resulting in a reputation score generated by SenderBase, as described below.
  • the appliance then applies mail flow policies that are specified by an administrator to the inbound mail based on the reputation score. More suspicious senders are automatically throttled or blocked, and recognized senders (e.g., customers or co ⁇ orate partners) are granted more generous policies, such as bypassing spam filters, larger message sizes, and TLS encryption.
  • Reputation FiltersTM allow for a flexible response, thereby minimizing the effects of denial of service attacks, directory harvest attacks, and fraudulent mail, along with reducing false positives.
  • IronPort' s Reputation FiltersTM work with SenderBaseTM, a sender reputation service created by IronPort, and Bonded SenderTM, an email certification program created by IronPort.
  • SenderBase provides objective data about the identity of email senders to allow email administrators to identify and block IP addresses from which unsolicited commercial email originates or to verify the authenticity of legitimate incoming email from business partners, customers, or other important sources.
  • SenderBase includes an open database that has been adopted by more than 13,000 ISPs, co ⁇ orations, and universities.
  • SenderBase processes queries for more than 500 million messages per day to provide a real-time view into the global volume of mail being sent by any given IP address.
  • SenderBase measures other parameters, such as whether an IP address is an open proxy, if mail receivers are sending spam complaints about the IP address, if its DNS resolves properly and accepts return mail, its country of origin, and its presence on a variety of blacklists.
  • the parameters are used as input to a statistical algorithm that scores the reputation of the sender on a scale of-lO to +10.
  • the different A-Series and C-Series appliances include one or both of the following nonlronPort technologies: the SophosTM anti- virus technology and the BrightmailTM anti-spam technology.
  • the C-Series appliances and optionally the A60 appliance include the SophosTM anti-virus technology.
  • Sophos employs multiple techniques to detect and clean all major forms of viruses, including advanced emulation technology to detect polymo ⁇ hic viruses and an on-line decompressor for scanning multi-layer attachments. Administrators can take any of several actions to handle messages that are identified as being infection by Sophos. For example, actions include cleaning the message, dropping the attachment, modifying the subject header, deleting the entire infected message, sending an optional notification, or a combination of these actions.
  • the Sophos engine shares information with the IronPort C-Series Mail Flow Monitor to provide real-time and historical reports.
  • the period from the start of the outbreak until an anti-virus identify file is deployed can be covered by IronPort' s content scanning technology to identify viruses based on known patterns, or messages can be deleted or archived until new identity files are updated.
  • the C-Series IronPort appliances include the BrightmailTM anti-spam technology, which is optimized to work with IronPort's AsyncOSTM.
  • Brightmail uses real-time methods to identify spam through Brightmail's Probe NetworkTM and generates approximately 30,000 new rules a day.
  • Automatic rule updates are used, with rules automatically downloaded from the Brightmail servers typically every ten minutes to provide real-time protection.
  • Administrators can take any of several actions to handle messages that are flagged as spam by Brightmail. The actions include sending the messages to a per-recipient web quarantine, marking up the subject header, adding an additional "X-header," sending the message to an alternate folder in the user's mailbox, deleting or bouncing the message, or a combination of these actions.

Abstract

A method and apparatus for managing connection and message at a server by associating different actions for both different senders and different recipients is disclosed. The server manages connection from different senders by receiving incoming connections (Figure 2, step 210) from the different senders and determining the sender identifier for the incoming connections (Figure 2, step 214). The server inspects a mapping of sender identifiers to actions to identify which action should be applied to each incoming connection (Figure 2, step 220). The server applies the actions, such as accepting the connection, rejecting the connection, relaying the connecti or refusing the connection (Figure 2, step 224). Also, the server manages electronic messages for different recipients by determining recipient identifiers for the electronic messages (Figure 2, step 244). The server inspects a mapping of recipient identifiers to action identify which action should be applicant for the recipients of the email messages (Figure 2, step 250). The server applies the action such as accepting or rejection the email message for delivery to a recipient (Figure 2, step 254).

Description

MANAGING CONNECTIONS AND MESSAGES AT A SERVER BY ASSOCIATING DIFFERENT ACTIONS FOR BOTH DIFFERENT SENDERS AND DIFFERENT RECIPIENTS
PRIORITY CLAIM AND RELATED APPLICATIONS
[0001] This application claims domestic priority under 35 U.S.C. § 119(e) from prior U.S. provisional application Ser. No. 60/575,658, entitled "PROVIDING TEMPORARY ACCESS TO A NETWORK DEVICE, USING DESTINATION DOMAIN-BASED BOUNCE PROFILES, MONITORING THE FLOW OF MESSAGES FROM SENDERS, AND CONTROLLING THE FLOW OF MESSGES FROM SENDERS," filed May 29, 2004, naming Paul J. Clegg, Charlie S. Slater, R. Brian Harrison, Lonhyn Jasinskyj, Ben Cottrell, Eric Huss, Craig Sprosts, Krishna Srinivasan, Peter Schlampp, Shun Chen, Robert Brahms, Daniel Quinlan, and Brennan H. Evans as inventors, the entire disclosure of which is hereby incorporated by reference for all purposes as if fully set forth herein. [0002] This application is related to: (1) co-pending non-provisional application Ser. No. 10/ccc,ccc (Attorney Docket No 60063-0057), filed concuπently with the present application, entitled "MONITORING THE FLOW OF MESSAGES RECEIVED AT A SERVER," naming Charlie S. Slater, Paul J. Clegg, Brennan H. Evans, and Peter Schlamp as inventors, and (2) co-pending non-provisional application Ser. No. 10/ddd,ddd (Attorney Docket No. 60063-0053), filed concurrently with the present application, entitled "MANAGING CONNECTIONS, MESSAGES, AND DIRECTORY HARVEST ATTACKS AT A SERVER," naming Paul J. Clegg, Eric Huss, Craig Sprosts, Krishna Srinivasan, Shun Chen, Robert Brahms, and Daniel Quinlan as inventors.
FIELD OF THE INVENTION
[0003] The present invention generally relates to processing messages, and more specifically, to managing connections for receiving electronic messages at a server from different senders and for managing the electronic messages received at the server for different recipients.
BACKGROUND
[0004] The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section. [0005] Mail transfer agents (MTA's) typically receive a large number of email messages from many different senders for delivery to many recipients. The number of email messages can range from hundreds of messages per hour to hundreds of thousands of messages per hour. Because of the increasing problems of the tremendous volume of unsolicited commercial email (i.e., spam) and from a significant percentage of email messages being infected with viruses, administrators of MTA's would like to be able to control the number of connections to the MTA's and to manage the delivery of the many email messages to in an easy to administer and efficient manner as part of the efforts to deal with spam and virus infected email messages.
[0006] However, traditional approaches for managing the flow of email messages through an MTA allow for handling senders and recipients of the email messages separately. For example, if the administrator of the MTA has observed that a particular Internet Protocol (IP) address has been sending a large amount of spam, the administrator can configure the MTA to refuse to accept email messages from the particular IP address. Over time, the administrator will likely identify a large number of IP addresses that send spam to the MTA, and for each such IP address, the administrator must separately configure the MTA to refuse email messages. The same situation can arise for email messages from particular IP addresses that are identified as being infected with a virus.
[0007] Due to the growing proliferation of spam and viruses, the administrator is faced with the dilemma of either constantly monitoring the flow of email messages for spam and virus infected email messages and continually reconfiguring the MTA to reject email messages from the offending IP addresses, or the administrator can limit the time spent in such efforts to dealing with just the biggest sources of such offending email messages while letting other smaller sources go unchecked.
[0008] Similarly, there are a large number of recipients for the large number of email messages handled by the MTA. Traditional approaches allow the administrator to configure the MTA to always allow or always block a particular recipient, but the MTA must be configured separately for each recipient. Furthermore, there are situations in which a sender of a large number of email messages is incoπectly identified as a spammer, and as a result, the administrator configures the MTA to reject email messages from the spammer's IP address. However, when the sender attempts to contact the administrator of the MTA to determine why the sender's email messages are being rejected, that inquiry typically comes from the same blocked IP address, and as a result, the sender who is incoπectly identified as a spammer must use other means to contact the administrator, which can be significantly more inconvenient for the sender and can result in a worsening of the relationship between the sender and the administrator of the MTA.
[0009] Based on the foregoing, it is desirable to provide improved techniques for managing the flow of email messages to an MTA that can enable the administrator of the MTA to more efficiently and effectively deal with different senders of undesired email messages. Furthermore, there is a need for an approach for more effectively processing email messages at an MTA that can enable the administrator to more efficiently configure the MTA to handle email messages addressed to different recipients served by the MTA.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] The present invention is depicted by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
[0011] FIG. 1 is a block diagram that depicts a high level overview of a system for managing connections and email messages received by a server, according to an embodiment;
[0012] FIG. 2 is a flow diagram that depicts an approach for managing connections and email messages received by a server, according to an embodiment;
[0013] FIG. 3 is a flow diagram that depicts an approach for managing incoming connections between different senders and a server, according to an embodiment;
[0014] FIG. 4 is a flow diagram that depicts an approach for managing email messages received by a server for different recipients, according to an embodiment;
[0015] FIG. 5 is a block diagram depicting an example of a graphical user interface for use in managing connections and email messages received by a server, according to an embodiment; and
[0016] FIG. 6 is a block diagram that depicts a computer system upon which embodiments of the invention may be implemented.
DETAILED DESCRIPTION
[0017] A method and apparatus for managing connections and email messages received by a server from different senders and for different recipients is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are depicted in block diagram form in order to avoid unnecessarily obscuring the present invention. [0018] In the following description, the various functions shall be discussed under topic headings that appear in the following order: I. STRUCTURAL AND FUNCTIONAL OVERVIEW A. Introduction B. Structural Overview of Managing Connections and Email Messages C. Functional Overview of Managing Connections and Email Messages II. MANAGING CONNECTIONS FROM DIFFERENT SENDERS A. Introduction to Managing Connections at a Server from Different Senders B. Connection Attributes C. Sender Identifiers and Sender Identifier Groups D. Actions for Connections E. Host Access Table (HAT) F. Default Rules in the HAT G. Parameters in the HAT III. MANAGING EMAIL MESSAGES FOR DIFFERENT RECIPIENTS A. Introduction to Managing Email Messages at a Server for Different Recipients B. Recipient Identifiers C. Actions for Recipients D. Recipient Access Table (RAT) E. Parameters in the RAT F. Using the RAT to Specify Exceptions for the HAT G. Default Rules in the RAT IV. IMPLEMENTATION MECHANISMS AND EXAMPLES A. Example HAT B. Example RAT C. Additional Parameters for Use in the HAT and RAT D. Aggregated Time-Based Counters E. Example GUI for Managing Connections and Email Messages F. Collecting and Aggregating Message Information G. Managing Information Relating to Senders of Electronic Messages H. Determining a Reputation Score for a Sender I. Controlling Mail Injection J. Controlling the Number of Connections Made to a Recipient Domain K. Limiting Directory Harvest Attacks L. Command Line Interface Examples V. HARDWARE OVERVIEW A. General Hardware Overview B. Hardware Examples VI. EXTENSIONS AND ALTERNATIVES I. STRUCTURAL AND FUNCTIONAL OVERVIEW A. Introduction
[0019] Techniques are provided for managing connections and messages at a server, such as an MTA, by associating different actions for handling connections from different senders and different actions for handling electronic messages for different recipients. For example, a mapping can be used to associate different sender identifiers with different actions so that incoming connections to the MTA from different senders can be handled differently based on the specified actions. As another example, a mapping can be used to associate different recipient identifiers with different actions so that email messages received at the MTA for different recipients can be handled differently based on the specified actions. [0020] In mapping different senders to different actions for managing connections to an MTA, one or more sender identifiers or sender identifier groups are used. For example, a sender identifier can be any identifier that is based on the sender of an email message or the host from which an incoming connection to an MTA originates for injecting email messages into the MTA. Specific examples of sender identifiers include, but are not limited to, the following: a network address, an Internet Protocol (IP) address, a partial IP address, a range of IP addresses, a primary domain, a subdomain, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, an organization identifier, a network owner, a reputation score, and a range of reputation scores.
[0021] A sender identifier group associates two or more sender identifiers together such that the senders associated with the different sender identifiers for the sender identifier group are mapped to the same action through the mapping of the sender identifier group to the action.
[0022] Actions for handling incoming connections from different senders can include, but are not limited to, accepting the connection, relaying the connection, rejecting the connection, or refusing the connection at the transmission control protocol (TCP) level. For example, a set of several different sender identifiers can be mapped to an "accept" action so that connections from the senders associated with those sender identifiers are accepted by the MTA, whereas a sender identifier group can be mapped to a "reject" action so that any connections from senders associated with the sender identifiers in the sender identifier group are rejected.
[0023] A host access table (HAT) can be used to map actions to sender identifiers, such as by using a list of rules that each map one or more sender identifiers (or sender identifier groups) to one or more actions. Rules in the HAT can also include one or more parameters for managing the connections from the senders, such as a limit on the maximum number of connections from a sender identifier or sender identifier group at a given time. The rules in the HAT can be in the form of an ordered list so that if more than one rule could be applied for a particular sender identifier, the rule used for that particular sender identifier is the first rule determined to match that particular sender identifier. Also, the rules can include a default rule so that any sender identifiers that do not match any of the other rules in the HAT are handled according to the default rule.
[0024] In mapping different recipients to different actions for managing email messages by the MTA, one or more recipient identifiers or recipient identifier groups are used. For example, a recipient identifier can be any identifier that is based on the recipient of an email message. Specific examples of recipient identifiers include, but are not limited to, the following: a full email address, a partial email address, a fully qualified domain name (FQDN), a partial FQDN, a username, and a partial username.
[0025] A recipient identifier group associates two or more recipient identifiers together such that the recipients associated with the different recipient identifiers for the recipient identifier group are mapped to the same action through the mapping of the recipient identifier group to the action.
[0026] Actions for handling email messages for different recipients can include, but are not limited to, accepting the email message for the recipient(s) associated with the recipient identifier and rejecting the email message for the recipient(s) associated with the recipient identifier. For example, a set of several different recipient identifiers can be mapped to an "accept" action so that email messages for the recipients associated with those recipient identifiers are accepted for delivery by the MTA, whereas a recipient identifier group can be mapped to a "reject" action so that any email messages for recipients associated with the recipient identifiers in the recipient identifier group are rejected and therefore not delivered. [0027] A recipient access table (RAT) can be used to map actions to recipient identifiers, such as by using a list of rules that each map one or more recipient identifiers (or recipient identifier groups) to one or more actions. Rules in the RAT can also include one or more parameters for handling the email messages for recipients associated with the recipient identifiers, such as a response code, a response text message, and a banner text message. The rules in the RAT can be in the form of an ordered list so that if more than one rule could be applied for a particular recipient identifier, the rule use for that particular recipient identifier is the first rule determined to match that particular recipient identifier. Also, the rules can include a default rule so that any recipient identifiers that do not match any of the other rules in the RAT are handled according to the default rule.
[0028] Finally, the RAT can include one or more rules that are used as exceptions to application of one or more rules in the HAT. For example, the RAT can include a rule that maps the username "postmaster" to an "accept" action so that email messages that would otherwise be excluded by a rule in the HAT (e.g., for exceeding the number of allowed connections or the number of recipients for a sender identifier) are nevertheless accepted and delivered to the "postmaster" recipient. This can be helpful in situations where a sender is having connections or email messages rejected based on the sender's IP address, and administrator of the MTA wants to allow such a sender to send an email to the "postmaster" address for a domain serviced by the MTA to allow the sender to inquire as to why the sender's connections or messages are being rejected. Otherwise, the sender's email inquiring as to the reason for the rejections would likely be rejected just like any other connection or message from the sender's IP address. B. Structural Overview of Managing Connections and Email Messages
[0029] FIG. 1 is a block diagram that depicts a high level overview of a system for managing connections and email messages received by a server, according to an embodiment. For simplicity, FIG. 1 only depicts a limited number of senders of email messages and recipients of those email messages, although in practice any number of senders and recipients can accommodated by the approaches described herein.
[0030] FIG. 1 depicts a server 100 that is communicatively coupled to a network 170 that is also communicatively coupled to domains 192, 194, 198. For example, server 100 can be implemented as an MTA connected to the Internet to which a number of domains are also connected. For simplicity, FIG. 1 depicts only three domains, but in practice there can be any number of domains communicatively coupled to network 170.
[0031] As shown in FIG. 1, domain 192 includes a sender A 192a and a sender B 192b, domain 194 includes sender C 194c, and domain 198 includes sender D 198d. However, in practice each domain can include any number of senders.
[0032] Server 100 is communicatively coupled to a display 130 that is used to present information to an administrator 140, such as through a browser-based graphical user interface
(GUI). Server 100 is also communicatively coupled to a database 120 that can be used to store information generated as part of a mail flow monitoring process. Finally, server 100 is communicatively coupled to a domain 150 that includes recipients 150a- 150c that are identified as a recipient A 150a, a recipient B 150b, and a recipient C 150c.
[0033] Server 100 includes a monitor 110, a queue 112, an aggregator 114, a host access table (HAT) 124, a recipient access table (RAT) 128, and a set of counters 116a-l 16d that are identified as counters A 116a, counters B 116b, counters C 116c, and counters D 116d.
[0034] Monitor 110 determines connection information for incoming connections to server 100 and message information for email messages received by server 100 from the senders of the email messages. Incoming connections can be processed according to
HAT 124. Some incoming connections may be rejected and thus no email messages are typically received over the rejected connections, while other incoming connections are accepted and one or more email messages are typically received over the accepted connections.
[0035] The connection information and message information is stored in queue 112 that can be subsequently processed by aggregator 114 to aggregate the connection information for connections to server 100 from different senders and to aggregate the message information for message information for the email messages from different senders for the recipients serviced by server 100. After the message information for an email message is stored in queue 112, the processing of the email message is performed, which can include application of RAT 128. Depending on the actions from the RAT 128, the email message may or may not be delivered to the intended recipient in domain 150, such as recipient A 150a, recipient B 150b, or recipient C 150c.
[0036] By having monitor 110 store the message information in queue 112 for subsequent processing by aggregator 114, the impact of the monitoring process on the handling of incoming connections and the subsequent flow and processing of email messages by server 100 is minimized. The analysis of the information stored in queue 112 by aggregator 114 may lag the receipt of email messages by server 100 by a relatively short time, such as a few seconds or a couple of minutes, so that the aggregate information produced by aggregator 114 is generated substantially in real time with the receipt of email messages by server 100.
[0037] As a specific example, server 100 can create a "mailFlowHost" object for each IP address and store the objects in an in-memory dictionary, which is represented by queue 112 in FIG. 1. The key to the dictionary is a tuple containing the remote IP address, local IP address, remote port, and local port. For a cuπent time period, such as the cuπent minute, each mailFlowHost object records message information in 10 second intervals. An in- memory dictionary, refeπed to as the "cuπent dictionary," stores the information for the current interval. At the end of each 10 second interval, the "old" dictionaries are stored in an interval table, which are represented in FIG. 1 by counters A 116a, counters B 116b, counters C 116c, and counters D 116d.
[0038] As message information is obtained from the incoming email messages, monitor 110 gets the mailFlowHost object for the cuπent interval from the cuπent dictionary until the cuπent time minute is over, after which monitor 110 creates new mailFlowHost objects for the next minute, with the cuπent dictionary being used for the cuπent 10 second interval of the next minute in the same fashion. Data from the dictionaries coπesponding to old minutes are aggregated and written to disk, such as database 120, and from there the minute data is rolled up into longer time periods, such as hours and days. [0039] The mail flow monitoring approach described herein can track one or more statistics for each sender, such as the number of messages received by server 100 from the sender, the number of recipients for which email messages are received from the sender, the amount of information (e.g., the number of kB) received from the sender, and the number of connections received from the sender. The mail flow monitoring approach described herein can also track the later application of one or more policies to the email messages from the sender, such as how many are blacklisted, whitelisted, or greylisted, or the percentage of messages received from the sender in a particular time period that are determined to be spam or that fail a virus check.
[0040] At the end of periodic intervals, such as at the end of every minute, the information in counters A 116a, counters B 116b, counters C 116c, and counters D 116d are stored by aggregator 114 in database 120. Then counters A 116a, counters B 116b, counters C 116c, and counters D 116d can be reset to zero or replaced with new sets of counters to count for the next time interval, such as the next minute.
[0041] Although not shown in FIG. 1, a graph module can be included in server 100. The graph module accesses the data for a set of time intervals that is stored in database 120 and generates one or more graphs or plots to be presented through display 130 so that administrator 140 can review and analyze the data and then specify actions, as appropriate, for the handling of future email messages from a particular sender. For example, a GUI can include on display 130 a graph of the number of recipients injected to server 100 over the last hour from a particular sender, such as a specified IP address. The GUI can include a button to allow administrator 140 to ad the specified IP address to a blacklist, such that when administrator 140 clicks on the "blacklist" button, the IP address is included in a rule in HAT 124 that maps the specified IP address to a "blacklist" variable in HAT 124 that is defined elsewhere in HAT 124 to coπespond to a reject action. As a result, future email messages from the specified IP address will be rejected.
[0042] Data stored in database 120 can also be aggregated in any of a number of ways. For example, the data in database 120 can be aggregated over longer time periods, such as by each hour for a day, and presented to administrator 140 by the graph module through display 130. Data stored in database 120 can also be aggregated for multiple senders, such as by combining data for sender A 192a and sender B 192b, and then displaying the compiled data on all email received from domain 192 to administrator 140 through display 130. [0043] Server 100 can include other modules, components, and functions than those described with respect to FIG. 1 herein. For example, server 100 can include a spam policy module and a virus policy module for applying spam and virus policies, respectively. Also, the individual components of server 100 as depicted in FIG. 1 can be combined with each other, such as by combining monitor 110 and aggregator 114, or the individual components can be implemented as several different components, such as by implementing aggregator 114 as a time aggregator for aggregating message information over time and a sender aggregator for aggregating message information for two or more senders. C. Functional Overview of Managing Connections and Email Messages
[0044] FIG. 2 is a flow diagram that depicts an approach for managing connections and email messages received by a server, according to an embodiment. For explanation purposes, FIG. 2 is described with reference to the system overview of FIG. 1, although the approach of FIG. 2 is not limited to the particular system depicted in FIG. 1. Also, FIG. 2 is described with reference to handling incoming connections and email messages at an MTA, although any type of electronic message and any server can be used with the approach depicted in FIG. 2. In addition, FIG. 2 is described with reference to HAT 124, although any mapping of sender identifiers to actions can be used, and RAT 128, although any mapping of recipient identifiers to actions can be used. Finally, FIG. 2 is described for one incoming connection, one email message, and one recipient of the email message, although any number of incoming connections, email messages, and recipients per email message can be used. [0045] In block 210, the MTA receives an incoming connection from a sender. For example, server 100 receives an incoming connection from sender B 192b of domain 192 via network 170.
[0046] In block 214, the MTA determines a sender identifier for the sender from which the incoming connection is received. For example, server 100 identifies the IP address of domain 192 based on information transmitted with the incoming connection from the MTA of domain 192. However, other sender identifiers can be used, such as a reputation score for the IP address of domain 192 that is determined from a reputation service, such as SenderBase from IronPort Systems, Inc., of San Bruno, California, by sending a query to the reputation service for the IP address and receiving in return information for the IP address that includes the reputation score. [0047] In block 220, the MTA uses the sender identifier to find a matching HAT rule.
For example, server 100 uses the IP address of domain 192 to find a rule in HAT 124 that maps the IP address of domain 192 to an action.
[0048] In block 224, the MTA applies the matching HAT rule to the incoming connection. For example, if the matching rule in HAT 124 associates the IP address of domain 192 with an "accept" action, server 100 accepts the incoming connection and sends a message to the host of domain 192 that the connection is accepted. As another example, if the matching rule in HAT 124 associates the IP address of domain 192 with a "reject" action, server 100 accepts the incoming connection, sends the host of domain 192 a connection rejected message, and then terminates the connection without accepting any email messages from domain 192.
[0049] In block 230, if the connection is accepted, the process continues on to block 240, but if the connection is not accepted (e.g., rejected), the process returns to block 210 where a new incoming connection is received.
[0050] In block 240, the MTA receives an email message over the accepted connection.
For example, server 100 receives an email from sender B 192b that is addressed to recipient C 150c. For purposes of explanation, the received email is assumed to have only one recipient email address, although in practice any number of recipient email addresses can be accommodated.
[0051] In block 244, the MTA determines a recipient identifier for the recipient of the email message. For example, server 100 can use the full recipient email address for recipient B 150b of the email message as the recipient identifier, although other recipient identifiers can be used, such as just the username portion of the recipient email address or the domain name portion of the recipient email address.
[0052] In block 250, the MTA uses the recipient identifier to find a matching RAT rule.
For example, server 100 uses the full recipient email address to find a rule in RAT 128 that maps the full recipient address of recipient C 150c to an action.
[0053] In block 254, the MTA applies the matching RAT rule to the email message. For example, if the matching rule in RAT 128 associates the full recipient address of recipient C 150c with an "accept" action, server 100 accepts the email message for delivery.
As another example, if the matching rule in RAT 128 associates the full recipient address of recipient C 150c with a "reject" action, server 100 rejects the email message so that a rejection response message is sent to sender B 192b and the email message is not accepted for delivery.
[0054] In block 260, if the email message is accepted, the process continues to block 270, but if the email message is not accepted (e.g., rejected), the process returns to block 210. Note that if the email message includes additional recipients, each recipient is used to determine a recipient identifier that is used to find a matching RAT rule that is then applied as appropriate. Similarly, if more than one email message is received over the accepted connection, each email message is handled the same as the example email message of this example.
[0055] In block 270, the MTA delivers the email message to the recipient. For example, server 100 delivers the email message to recipient C 150c of domain 150. The process then returns to block 210, although if additional email recipients or email messages were accepted for delivery, such email messages would be delivered to the intended recipients. II. MANAGING CONNECTIONS FROM DIFFERENT SENDERS A. Introduction to Managing Connections at a Server from Different Senders
[0056] FIG. 3 is a flow diagram that depicts an approach for managing incoming connections between different senders and a server, according to an embodiment. For clarity,
FIG. 3 is described with reference to one incoming connection from one sender, although in practice, any number of connections from any number of senders can be handled by the approaches described herein. Finally, FIG. 3 is described with reference to an MTA, although any server that handles incoming connections from any other servers can be used to implement the approaches described herein.
[0057] In block 310, the MTA receives an incoming connection from a sender. For example, server 100 receives an incoming connection from a host associated with domain 194 of FIG. 1, such as an incoming connection for delivering an email message from sender C 194c. Server 100 interacts with the injecting host using the simple mail transfer protocol (SMTP) by starting an SMTP conversation.
[0058] In block 320, the MTA identifies a network address for the sender. For example, server 100 identifies the IP address for domain 194 in the header information of the incoming connection. [0059] In block 330, the MTA determines one or more sender identifiers for the sender. For example, server 100 can use the IP address as a sender identifier. As another example, server 100 can obtain the fully qualified domain name (FQDN) of the sender through a reverse domain name service (DNS) lookup with an existing DNS cache, and use the FQDN as a sender identifier. As yet another example, server 100 can submit a query to another server, such as a server that is part of the SenderBase service, to obtain the available information based on the IP address of the sender. Such information can include an organization name, an organization identifier, and a reputation score, and one or more of these types of information can be used as a sender identifier. For the following explanation, assume that the sender identifiers are the IP address of domain 194 and a reputation score of -3 from SenderBase.
[0060] In block 340, the MTA uses the one or more sender identifiers to inspect a mapping of sender identifiers to actions. For example, server 100 can inspect HAT 124 using the IP address of domain 194 and the reputation score -3 to find one or more rules that associate either the IP address or the reputation score with an action. As a specific example, assume that the HAT includes one rule that specifies a CIDR block that includes the IP address of domain 194 and another rule that specifies reputation scores between -10 and -1. As a result, server 100 can match the IP address of domain 194 to the first rule and the reputation score of -3 to the second rule.
[0061] In block 350, the MTA identifies an action based on the mapping. For example, server 100 in block 340 inspected HAT 124 and found two matching rules. Server 100 can pick one of the matching rules to be applied in any of a number of ways. For example, each rule can have a priority, and server 100 uses the rule with the highest priority while ignoring any other matching rules. As another example, HAT 124 can be organized as an ordered listing of rules, and when server 100 inspects HAT 124 starting from the first rule in the ordered listing, server 100 stops at the first matching rule and identifies the associated action as the action to be applied (e.g., only one rule would be identified as the matching rule in this case in block 340). As yet another example, server 100 can inspect the actions for each of the matching rules and use the most restrictive action (i.e., if one rule is "ACCEPT" and the other rule is "REJECT", server 100 selects the rule with the "REJECT" action) or the most permissive action (e.g., use the "ACCEPT" action instead of "REJECT"). In the event that two or more matching rules are deemed equivalent in the selection process (e.g., both matching rules have the same priority), server 100 can select the action based on any suitable method, such as by using the first matching rule in HAT 124 or by randomly selecting a rule from among the matching rules.
[0062] In block 360, the MTA applies the action to the incoming connection. For example, the typical actions in HAT 124 are "ACCEPT," "RELAY," "REJECT," and "TCPREFUSE." For the "ACCEPT" action, server 100 accepts the incoming connection and thereafter typically receives one or more email messages from the injecting host for delivery to one or more recipients of domain 150. For the "RELAY" action, server 100 accepts the incoming connection and relays any incoming messages as specified to other MTA's and then closes the connection, although generally no messages are delivered to any of the recipients of domain 150. For the "REJECT" action, server 100 performs what may be termed as a "polite" rejection or refusal in which server 100 accepts the incoming connection, then sends a rejection response message to the injecting host over the connection informing the injecting host that the connection is rejected, and then server 100 terminates the connection. Generally, server 100 accepts no email messages over the connection while performing the "REJECT" action. Finally, for the "TCPREFUSE" action, server 100 performs what may be termed as an "impolite" rejection or refusal in which server 100 accepts the incoming connection but then immediate drops the connection without sending a rejection response message to the injecting host. Thus, the incoming rejection is refused at the transmission control protocol (TCP) level.
[0063] In block 370, if the incoming connection is "ACCEPTED," the process continues to block 380, and if not, the process returns to block 310 where the MTA handles another incoming connection from either the same or a different sender. For example, if server 100 determines in block 360 that the action is "ACCEPT" or "RELAY," the process continues to block 380, whereas if the action in block 360 is "REJECT" or "TCPREFUSE," the connection is terminated with little or no further action by server 100. [0064] In block 380, the MTA applies one or more parameters that are associated with the identified rule in the mapping. For example, the matching rule that server 100 determines is to be applied can include the "ACCEPT" action and one or more parameters, such as a maximum number of connections. Server 100 can use a counter of the number of connections for the sender identifier, say counters A 116a in FIG. 1 that is counting the number of connections from the IP address for domain 194. If the specified maximum number of connections has been reached, server 100 terminates the connection, even though the matching HAT rule is to "ACCEPT" the incoming connection. As another example, the matching rule can specify a maximum number of recipients per hour, and server 100 checks counters B 116b that is counting the number of recipients injected by domain 194 in the cuπent hour. If the maximum number of recipients has been reached, server 100 rejects any additional email messages for recipients in domain 150 and sends a rejection response message back to the MTA for domain 194.
[0065] For an accepted connection, after the email messages from the injecting host are received, the MTA terminates the connection. For example, if a certain amount of time has passed during which server 100 receives no further communication from the MTA for domain 194, server 100 terminates the connection with domain 194. [0066] Also, although not illustrated in FIG. 3, the MTA can use another mapping of recipient identifiers to actions, such as RAT 128, in conjunction with the mapping of the sender identifiers to actions, such as HAT 124. For example, RAT 128 can include a rule that all messages addressed to the username "postmaster" at domain 150 are to be accepted, even if the HAT would otherwise indicate that the incoming connection is to be rejected or refused. Thus, RAT 128 can effectively include "exceptions" to the rules of HAT 124, which can be helpful in allowing a sender of email messages that are being blocked by server 100, such as for exceeding the maximum number of connections, for exceeding the maximum number of recipients, or for otherwise matching a HAT rule with a "REJECT" or "TCPREFUSE" action, to be able to contact administrator 140 for server 100 to inquire as to why the sender's connections or email messages are not getting through server 100. B. Connection Attributes
[0067] Upon acceptance of a connection, one or more attributes of the connection can be determined and subsequently used to identify senders and associate sender identifiers to them, for which counters can be established and tracked to allow for the control of the flow of messages. For example, the following attributes can be determined for a connection: (1) IP address (2) Fully qualified domain name (FQDN) (3) SenderBase data, including: (a) SenderBase organization name (b) SenderBase organization identity/identifier (c) SenderBase organization subdivision mask (d) SenderBase organization flow control coefficient.
[0068] The IP address is determined when establishing the connection and can be used to obtain the other connection attributes. For example, to determine the FQDN, a reverse DNS lookup is used, with an existing DNS cache, to determine the name. If the IP address can be resolved to a name, a second DNS lookup is done on the retrieved name, and compared to the original IP address. If the IP addresses match, the FQDN is kept. On a per-injector basis, the user may configure the MTA to reject connections that do not properly reverse DNS, based on one of the following options: ignore the eπor (can be set as the default); immediately TCPREFUSE the connection; or REJECT data from the connection with a response having the appropriate SMTP error code (which the user can define).
[0069] If the system is configured to work with SenderBase, the recipient host can connect to the SenderBase server and submit a query for the available information based on the IP address. If the user has not configured the recipient host to use SenderBase or if SenderBase is not available, a default CIDR block can be used as the subdivision mask. The user can specify the CIDR block, and the system can be configured with a default value, such as '724. " When using SenderBase, a timeout can be configured to avoid slowing the injection rate of the host recipient due to the queries to the SenderBase server. The user can specify the timeout, and the recipient host can be configured to have a default value, such as 10 seconds, and a timeout value of "0" can specify that SenderBase lookups are to be disabled. C. Sender Identifiers and Sender Identifier Groups
[0070] Any of a number of attributes can be used as a sender identifier for matching in the HAT, including but not limited to, one or more of the following: a network address, an Internet Protocol (IP) address, a partial IP address, a first range of IP addresses, a primary domain, a subdomain, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, an organization identifier (e.g., a SenderBase organization ID), a network owner, a reputation score, and a second range of reputation scores.
[0071] The flexibility in specifying the sender identifier allows the user to aggregate information in virtually any manner that the user desires for purposes of controlling the mail flow. For example, the user can list a single IP address on the left side of the HAT, and that single IP address gets up to the specified maximum number of recipients per time period for purposes of mail flow injection control. As another example, the user can specify a /24 CIDR block on the left side of the HAT, and then that group of IP addresses (up to 256 addresses) as a whole share the specified maximum number of recipients per time period. Thus, if just one of the addresses for the /24 CIDR block exceeds the limit, then neither that address nor any others in the /24 CIDR block can send messages for the rest of the time period, until the counter is reset (e.g., typically every hour). [0072] As yet another example, a domain that is known to generate a lot of spam can be listed on the left side of the HAT and have a very low maximum number of recipients per time period threshold limit specified, thereby effectively preventing spam from that domain. [0073] As yet another example, the mail flow monitor can help the user identify a spike in messages from a particular IP address, and the user can use a GUI button that is part of the mail flow monitor to add that IP address to the HAT and associate that added IP address with a policy that limits the number of recipients per time period to the user's desired level, or the user can even specify that the IP address should be blacklisted so that no messages are allowed from the IP address.
[0074] The mail flow monitor can track and record the number of recipients that are being rejected due to the maximum number of recipients per time period being exceeded by IP address or another sender identifier. As a result, the user can determine if a partner company or some other domain that the user wants to receive email messages from has been inadvertently limited in terms of the injection rate so that the partner company or domain can be whitelisted so that the email messages are no longer throttled or limited based on the HAT.
[0075] In some implementations, the SenderBase service is used to provide for more complex mail injection control. For example, the HAT can include a "use_sb" option (e.g., whether to use SenderBase) so that instead of using the left side of the rule in the HAT to match on, a new counter is determined based on the SenderBase information and matches are made on the SenderBase derived counter. As a specific example, SenderBase can provide information about who the organization is for an IP address, along with the SenderBase organization ID for the IP address and a specific CIDR block size (e.g., /24 is a typical value and may be used as the default value). As a result, the user can rely on SenderBase to categorize the information for the IP address and control mail flow based on the SenderBase derived counter.
[0076] As an example, consider the case in which SenderBase indicates that the company associated with a particular IP address owns the domain 1.2.x.y and all IP addresses below that, and that the company sells off those IP addresses to other companies in /28 CIDR blocks. The system can then distinguish between different /28 CIDR blocks that originate from the company, and thus for a particular IP address, the system can determine to which CIDR block the IP address belongs. As a result, the system can lump together all IP addresses for the CIDR block together and subject them to the same maximum recipient per time period limit. This allows the user to treat the IP addresses for one owner of a particular CIDR block acquired from the company separately from the other IP addresses of the company or from other CIDR blocks that the company sold. This can be beneficial when the company has sold some CIDR blocks to spammers, which the user wants to severely limit, and other CIDR blocks to more reputable organizations that the user does not wish to limit as harshly.
[0077] As yet another example, the user can rely on the SenderBase organization ID to control mail injection, thereby allowing the user to aggregate a number of disparate IP addresses that are associated with a single organization or company. For example, a particular organization may have two different subnets, and the user can establish a rule in the HAT that each subnet has a separate counter for determining the maximum number of recipients per time period. However, this requires that the user manage each subnet separately. Instead, the user can use the SenderBase organization ID, which is the same for each subnet, and have a single rule in the HAT based on the organization's SenderBase organization ID, and then a single counter and a single rule can be used to limit the recipients injected from both of the organization's subnets.
[0078] As another example, a company can have a large number of customers with IP addresses that are wildly disparate. However, because SenderBase associates the same organization ID for the company, regardless of which customers have which IP addresses, the user can have one entry in the HAT that indicates the company's SenderBase organization ID, and all the IP addresses for that company's customers are subject to the same counter for purposes of determining the maximum number of messages per time period or the maximum number of connections at a given time, or even for counting the number of invalid email recipient addresses for purposes of detecting and preventing a directory harvest attack.
[0079] The SenderBase information can be obtained by the system for each request for a connection to the system, with SenderBase returning the available information for the queried IP address. As an alternative, the user can cache the SenderBase data to improve performance.
[0080] As yet another example, the user can use a reputation score from SenderBase instead of an IP address or other more common sender identifier. For example, upon receipt of a request for a connection, the system can query SenderBase and obtain the reputation score coπesponding to the IP address. The score can be compared to a range specified by the user (e.g., is the score between -10 and -5, thus indicating a low reputation on the -10 to +10 reputation score scale). In such a situation, the action to take can be to blacklist the IP address, so that no further messages are accepted. This approach allows the user to rely on SenderBase and the reputation scores to determine how to control mail flow, such as in this example to blacklist likely spammers and other less than reputable IP addresses. [0081] As yet another example, a HAT entry can be based on a remote blacklist function. As a specific example, the system can be configured to take the IP address of an incoming connection, reverse the numbers (e.g., an IP address of 1.2.3.4 becomes 4.3.2.1) and append the name of a query DNS server. If the DNS server sends a response back for the effective machine represented by the reversed IP address, that indicates that the DNS server has a record of the reversed IP address in the DNS server's database. Because such databases are typically full of less than reputable IP addresses, the HAT entry can specify that any such IP addresses be blacklisted. Similarly, a query can be sent to other servers, such as Bonded Sender that includes a list of reputable IP addresses, and any that are included in such a list can be specified in the HAT to be whitelisted.
[0082] The use of other server's databases that include blacklists, whitelists, or other maintained lists of IP addresses that are characterized in an organized manner allows the user of the MTA to write general rules in the HAT based on the results of queries to such databases, thereby minimizing the work of the user and relying on the ability of those other servers to characterize the plethora of IP addresses as either good or bad. [0083] Examples of sender identifiers, which may also be refeπed to as "host specifications," are given below. Multiple identifiers can be used, as well as being grouped together. • n.n.n.n - IP address. • n.n.n. | n.n.n | n.n. | n.n | n. | n - partial IP addresses. • n.n.n.n-n | n.n.n-n. | n.n-n. | n-n. - range of IP addresses. • fqdn - fully qualified domain name. • .partialhost - everything with the partialhost domain. • n/c I n.n/c | n.n.n/c | n.n.n.n/c - CIDR address blocks. • sbo:<8omething> - SenderBase organization ID. • sbrs[nl:n2] - SenderBase reputation score ( "x" matches if nl<= x < n2) . • ALL - special keyword that matches ALL addresses (used as a catch-all for when no previous rule matches) .
D. Actions for Connections
[0084] The mapping of sender identifiers to actions can be implemented as a set of rules, such as those found in a host access table (HAT). In most implementations, the following five actions are included, although other implementations can include more or fewer actions than those described below: (1) ACCEPT - the connection is accepted, with injection limited by the recipient access table (RAT) . (2) RELAY - the connection is accepted, and injection to any recipient is allowed (the RAT is bypassed) . (3) REJECT - the connection is refused, with the sender getting a 4xx or 5xx SMTP message, but no messages are accepted (e.g., a polite refusal) . (4) TCPREFUSE - the connection is accepted but immediately dropped, so that the sender receives nothing in return (e.g., refused at the TCP level; a not so polite refusal) . (5) CONTINUE - the mapping is ignored, and processing of the HAT continues, and if the connection matches a later entry that is not "CONTINUE," that later matching entry is used instead. E. Host Access Table (HAT)
[0085] A host access table (HAT) as described herein is one example of a mapping of sender identifiers to actions. However, any suitable mapping that associates one or more sender identifiers or sender identifier groups to one or more actions can be used in a particular implementation.
[0086] The following description of the HAT is just one example of how the HAT can be implemented, and the approaches described herein are not limited to this or any other particular implementation of the HAT in particular or of a mapping of sender identifiers to actions in general.
[0087] In this example, a row in the HAT consists of four parts: (1) an entry name, refeπed to as a "label", (2) a host specification, refeπed to as "hosts", that can be implemented by listing one or more sender identifiers, sender identifier groups, or a combination thereof, (3) an access rule, refeπed to as "access" that specifies a particular action to be taken for the associated hosts, and (4) a parameter list, refeπed to as "params".
These four items are defined as follows: ( 1) "label" - a label is a name given to a HAT entry and in some implementations , obeys a naming convent ion such as that the label starts with a letter or underscore , but after the initial character , the label can include letters , numbers , underscores , or hyphens . (2 ) "hosts" - a host specification, and can include more than one listed host . (3 ) "access" - is the selected basic access rule ( e . g . , "ACCEPT" , "RELAY" , "REJECT" , "TCPREFUSE" , or "CONTINUE" ) . (4 ) "params" - a list of parameter name/value pairs .
[0088] In some implementations, the hosts are listed in order from top to bottom. When a search is made of the ordered list of rules from top to bottom, the first non-CONTINUE rule to match is used. F. Default Rules in the HAT
[0089] In some implementations, the HAT includes one or more default rules that allow the user to specify actions and parameters for sender identifiers that otherwise do not match other more specific rules. For example, if the HAT is organized as on ordered list of rules where the first rule to match is used, rules with more specific sender identifiers can be listed first, such as sub-domains for a particular domain or particular IP addresses in a range of IP addresses. Following the specific rules, another "default" rule can be included for the entire particular domain or the range of IP addresses. When the HAT is applied for an incoming connection, if the particular sender identifier for the incoming connection matches the more specific rules that are higher up in the ordered listing of rules in the HAT, those rules and their associated actions will be applied to the incoming connection. But if the sender identifier does not match one of the more specific rules, then the default rule for the particular domain or range of IP addresses can be used. In this fashion, the administrator can specify a standard or default action for a group of sender identifiers, but the administrator can also use the more specific rules and include them higher up in the HAT to effectively function as exceptions to the default rules.
[0090] In some implementations, a special identifier can be used to implement one or more default rules. For example, a sender identifier of "ALL" can be used to denote any sender identifier, and a rule for the "ALL" sender identifier can be included as the last rule in the HAT, so that any sender identifier that does not match any of the other HAT rules will be match the default "ALL" rule. As a result, the administrator can ensure that all incoming connections will match at least one rule in the HAT. As another example, special identifiers of "PUBLIC" and "PRIVATE" can be used in rules located at or near the end of the HAT to specify default HAT rules for new public injectors and new private injectors. G. Parameters in the HAT
[0091] One or more of the following parameters can be specified by host or sender identifier. In some implementations, the following parameters are allowed for the "ACCEPT" and "RELAY" actions, but not the other actions such as "REJECT" or
"TCPREFUSE". (1) max_concurrency - specifies the maximum number of connections allowed from the host . (2) max_message_size - specifies the maximum message size from the hos . (3) max_msgs_per_session - specifies the maximum number of messages that may be injected per session (typically counts successfully injected messages) . (4) max_rcpts_per_msg - specifies the maximum number of recipients allowed per message. (5) smtp_banner_text - specifies the SMTP banner displayed when a host first connects. (6) smtp_bannβr_codθ - specifies the SMTP codes used in the SMTP banner. (7) tls - specifies whether or not TLS (transport layer security) is to be used or required (allowed values include "on", "off", and "require" ) . (8) max_rcpts_pβr_hour - specifies the maximum number of recipients that will be accepted for the given host, per hour (e.g., for injection control) . (9) max_rcpts_pβr_hour_codθ - specifies the SMTP response code to be given to a host who has exceed the maximum recipient per hour limit; can use a default of 452 per RFC2821. (10) max_rcpts_per_hour_text - specifies the SMTP response message to be given a host who has exceed the maximum recipient per hour limit . (11) usβ_sb - specifies whether to query SenderBase for information and whether to use the SenderBase information to craft the name of the counter to be incremented (allowed values include "on" and "off") . (12) netmask - specifies the size of the mask to apply to the IP address to craft the name of the counter to increment; allowed values are numbers between 0 and 32; a value of 0 means that a single counter will result for all IP addresses that matched this or a similarly masked HAT entry. III. MANAGING EMAIL MESSAGES FOR DIFFERENT RECIPIENTS A. Introduction to Managing Email Messages at a Server for Different Recipients
[0092] FIG. 4 is a flow diagram that depicts an approach for managing email messages received by a server for different recipients, according to an embodiment. For clarity, FIG. 4 is described with reference to one email message that is from one sender and addressed to one recipient, although in practice any number of email messages from any number of senders addressed to any number of recipients can be handled by the approaches described herein. Also, the email message described in the example of FIG. 4 has only one recipient email address, although email messages with any number of recipient email addresses can be handled by the approaches described herein. Finally, FIG. 4 is described with reference to an MTA and email messages, although any server that handles any kind of electronic messages can be used to implement the approaches described herein.
[0093] In block 410, the MTA receives an email message from a sender. For example, server 100 receives an email message from sender D 198d of domain 198 that is addressed to recipient A 150a of domain 150 that is served by server 100. The email message can be received over a connection that was established according to the approaches described herein with respect to managing connections, such as in the example illustrated and described with respect to FIG. 3 above.
[0094] In block 420, the MTA determines a recipient email address for a recipient of the email message. For example, server 100 examines the header information for the email message to identify the email address for recipient A 150a.
[0095] In block 430, the MTA determines a recipient identifier based on the recipient email address. For example, the recipient identifier can be some or all of the recipient email address for recipient A 150a. As another example, the recipient identifier can be a subdomain for domain 150.
[0096] In block 440, the MTA uses the recipient identifier to inspect a mapping of recipient identifiers to actions. For example, server 100 can inspect RAT 128 using the full recipient email address for recipient A 150a to find one or more rules that associate the recipient email address, or a portion of the recipient email address, with an action. As a specific example, assume that the HAT includes one matching rule for the subdomain portion of the recipient email address for recipient A 150a. However, other examples can include matching multiple RAT rules, such as in the example of matching multiple HAT rules as discussed above with reference to block 350.
[0097] In block 450, the MTA identifies an action based on the mapping. For example, server 100 in block 440 inspected RAT 128 and found one matching rule, and the action of the matching rule is identified as the rule to be applied to the email message. However, as another example, if multiple matching rules were identified in block 440, server 100 can determine the particular rule to be used in any of a number of ways, including those discussed above with reference to block 350 of FIG. 3. [0098] In block 460, the MTA applies the action to the email message. For example, the typical actions in RAT 128 are "ACCEPT" and "REJECT." For the "ACCEPT" action, server 100 accepts the email message for delivery to recipient A 150a, and the "ACCEPT" action can include sending a message back to the host for domain 198 that the email message is accepted as part of the SMTP conversation. For the "REJECT" action, server 100 rejects the email message for delivery, and the "REJECT" action can include sending a message back to the host for domain 198 that the email message is rejected as part of the SMTP conversation. The rejection response message can include a suitable message or code indicating the reason for the rejection (e.g., the recipient email address is invalid, the recipient's inbox is full, etc.).
[0099] In block 470, the MTA applies one or more parameters associated with the identified rule in the mapping. For example, the matching rule that server 100 determines is to be applied can include an action and one or more parameters, such as a response code and a response text. As a specific example, if the action in block 460 is to "REJECT" the email message, the parameters can include a response code and a response text, and server 100 sends the specified response code and response text to the host injector for domain 198. Thus, RAT 128 can be used to have server 100 provide a more specific reason to the injecting host about the reason for the rejection by specifying a particular SMTP response code and an explanation in the response text.
[0100] In block 480, if the email message is "ACCEPTED," the process continues to block 480, and if not, the process returns to block 410 where the MTA handles another incoming email message. For example, if server 100 determines in block 460 that the action is to "ACCEPT" the email message, the process continues to block 480, whereas if the action in block 460 is to "REJECT" the email message, the process returns to block 410. In the situation in which the email message includes more than one recipient, the process can return to block 420 instead of block 410 to process the next recipient, and this loop continues until all recipients for the email message are processed.
[0101] In block 490, the MTA delivers the email message to the recipient. For example, server 100 delivers the email message from sender D 198d to the email inbox for recipient C 150c of domain C. B. Recipient Identifiers
[0102] Examples of the recipient identifiers that can be used include but are not limited to one or more of the following • user@domain - a complete email address. • fqdn - a fully qualified domain name. • .partialhost- everything with the partialhost domain. • user@ - anything with the given username. • ALL - special keyword that matches ALL addresses, typically used as a catch-all when no other addresses are matched. C. Actions for Recipients
[0103] The mapping of recipient identifiers to actions can be implemented as a set of rules, such as those found in a recipient access table (RAT). In most implementations, the following two actions are included, although other implementation can include more or fewer actions than those described below: (1) ACCEPT - the connection is accepted, with injection limited by the recipient access table (RAT) . (2) REJECT - the connection is refused, the sender gets a 4xx or 5xx SMTP message, but no messages are accepted.
D. Recipient Access Table (RAT)
[0104] A recipient access table as described herein is one example of a mapping of recipient identifiers to actions. However, any suitable mapping that associates one or more recipient identifiers or recipient identifier groups to one or more actions can be used in a particular implementation.
[0105] The following description of the RAT is just one example of how the RAT can be implemented, and the approaches described herein are not limited to this or any other particular implementation of the RAT I particular or of a mapping of recipient identifiers to actions in general.
[0106] In this example, the RAT specifies which recipients will be accepted. The RAT specifies the recipient address, which may be a partial address or hostname, and whether to accept the recipient address or to reject the recipient address. [0107] Optionally, the SMTP response to the "RCPT TO" command can be included for the recipient. Each injector has its own RAT. The hosts are listed in order from top to bottom, and in some implementations, the first rule to match is used. E. Parameters in the RAT
[0108] One or more of the following parameters can be specified for each rule in the RAT: (1) smtp_banner_text - specifies the SMTP banner displayed when an email message is rejected. (2) smtp_response_code - specifies the SMTP codes used in the SMTP response . (3) smtp_responsβ_text - specifies the SMTP text used in the SMTP response when an email message is accepted.
[0109] Typically, the banner text is used for a "REJECT" action, such as to provide the injector with a brief message relating to why the email message is rejected (e.g., "Email for the xyzdomain.com is not allowed."). Similarly, the response text is typically used for an
"ACCEPT" action, such as to provide the injector with a brief message relating to why the email message is accepted (e.g., "Email for the postmaster is accepted."). The SMTP response code allows the administrator to specify in the RAT which SMTP code is to be used when accepting or rejecting a message based on a particular rule as opposed to a default
SMTP code that the MTA is configured to otherwise provide. Note that any type of parameter can be used for any action in the RAT, not just those described herein. F. Using the RAT to Specify Exceptions for the HAT
[0110] In some implementations, the RAT can be used to denote recipient addresses that are not subject to injection control by the HAT. For example, for some commonly used addresses, such as "postmaster" at a particular domain, the user does not want the system to limit messages addressed to such an address. As a specific example, if the system restricts message injection from an IP address, the user typically would want that sender of the restricted messages to be able to send a message to the "postmaster" email address to inquire as to why the sender's messages are being limited.
[0111] This type of approach can be particularly useful in situations in which an IP address is being limited by the system inadvertently, such an IP address associated with a partner company, as opposed to an IP address associated with a spammer. As a specific example, if a large company employs an outside firm to send out press releases, and most of the employees of the large company are on the list of recipients of such press releases, the outside firms efforts to send so many email messages to the large company's employees may appear to the MTA to be spam.
[0112] If such senders could not have a way in which to get a message through to the mail administrator of the recipient host, the user may have a difficult time learning that an IP address is being limited that should not be since the messages from the sender inquiring as to the limited message flow would itself be blocked by the injection control portion of the system. G. Default Rules in the RAT
[0113] In some implementations, the RAT includes one or more default rules that allow the user to specify actions and parameters for recipient identifiers that otherwise do not match other more specific rules. For example, if the RAT is organized as on ordered list of rules where the first rule to match is used, rules with more specific recipient identifiers can be listed first, such as sub-domains for a particular domain serviced by the MTA or particular usernames. Following the specific rules, another "default" rule can be included for the entire particular domain or a range or group of usernames. When the RAT is applied for an email message, if the particular recipient identifier for the email message matches the more specific rules that are higher up in the ordered listing of rules in the RAT, those rules and their associated actions will be applied to the email message. But if the recipient identifier does not match one of the more specific rules, then the default rule for the particular domain or range or group of usernames can be used. In this fashion, the administrator can specify a standard or default action for a group of recipient identifiers, but the administrator can also use the more specific rules and include them higher up in the RAT to effectively function as exceptions to the default rules.
[0114] In some implementations, a special identifier can be used to implement one or more default rules. For example, a recipient identifier of "ALL" can be used to denote any recipient identifier, and a rule for the "ALL" recipient identifier can be included as the last rule in the RAT, so that any recipient identifier that does not match any of the other RAT rules will be match the default "ALL" rule. As a result, the administrator can ensure that all email messages will match at least one rule in the RAT. As another example, special identifiers of "PUBLIC" and "PRIVATE" can be used in rules located at or near the end of the RAT to specify default RAT rules for new public injectors and new private injectors. IV. IMPLEMENTATION MECHANISMS AND EXAMPLES A. Example HAT
[0115] The following is an example HAT that illustrates one implementation of the approaches described herein, although other implementations can include more features than those of the following example, and yet other implementations can include fewer or even none of the features of the following example.
[0116] On the right hand side of the following example HAT, actions can be listed, such as the basic access rules, or a variable can be used, as denoted by a leading $ as part of the variable name. Once a variable is specified, the variable can be used on the right hand side, with the values assigned to the variable being substituted automatically, which can provide a convenient form of shorthand notation. [0117] The following is an example HAT:
# This is an example HAT table. Comments like these will be lost during # the import process. # Here we define three variables, "$BLACKLIST" , "$WHITELIST" , and "$GREYLIST" # Variable definition lines may not have labels. $BLACKLIST REJECT { smtp_banner_text="You have been blacklisted." } $ HITELIST ACCEPT { max_concurrency = 600, max_message_size = 20M, smtp_banner_code = 220, smtp_banner_text = "Hello there." } $GREYLIST ACCEPT { max_message_size = 5M, max_rcpts_per_hour = 5k, max_rcpts_per_hour_text = "You have exceeded 5,000 recipients this hour. If you feel this limit is too low, please contact mailadmin@mycompany.com", use_sb = Y, netmask = 24 } # This next line is an example of a simple entry. It uses "IronPort_SB" # as the label, uses an SenderBase ID as the host, uses the $ HITELIST # predefined behavior as the action, and has the line comment of # "IronPort Organization". This comment will be saved in the system and # will always be mapped to this entry. IronPort_SB: sbo: 4988397762 $WHITELIST (IronPort Organization) # This next example is indicative of what might have been merged in from an # older HAT table. It has no label and does not refer to any predefined # behavior. 10.1.1.2 RELAY # This is an entry with no hosts. EmptyList: $GREYLIST # This example shows how one can assign a behavior to multiple hosts at once. # Note the comments applied to each host in the group in parenthesis. These # comments will be mapped to those hosts and saved internally. The comments # on the end of the line, using # signs, are also legal, but will not be # saved during the import process. Personal_IPs : 10.1.1.7 (Joe's Computer), # Joe's computer 10.1.2.255/24 (Tom's Computer) # Tom's computer ACCEPT { max_message_size=20M } # This example shows separation with only whitespace (no commas) Cut_and_Pasted_from_SenderBase : 1.2.3.4 1.2.3.5 1.2.3.7 1.2.3.8 $BLACKLIST # We don't like these people. Uses a predefined behavior. Blacklisted: 10.1.1.3 (SpamCo) , 10.1.1.18 (Spamatron) $BLACKLIST # This example shows the use of a SenderBase Reputation score... Looks_Like_Spam : sbrs [-10 : -7.5] (Catch low reputations) $BLACKLIST # The "ALL" entry must always appear last, and defines the behavior for any # incoming connection that doesn't match the previous rules. ALL $GREYLIST (Rate limit everyone else.)
[0118] For new injectors, default HATs can be established. For example, a new public injector can use "ALL ACCEPT" while a new private injector can use "ALL RELAY." [0119] A HAT can be imported into the system, and comments made with the # sign are stripped out. The file can be internally represented with two data structures, one containing the list of behavior definitions, and the other containing the list of the mappings between hosts and behaviors.
[0120] Behavior definitions can be stored as a dictionary that is keyed off the names of the definitions. The value of each key is a tuple of a behavior code and a dictionary of parameters. The five behavior codes are "CONTINUE", "ACCEPT", "RELAY", "REJECT", and "TCPREFUSE". Any entry with a behavior that is not "CONTINUE" is one that may be matched during IP address processing. [0121] The following is an example of a set of behavior definitions, following by a representation of the data structure.
$BLACKLIST REJECT { smtp_banner_text= "You have been blacklisted . " } $WHITELIST ACCEPT { max_concurrency = 600, max_message_size = 20M, smtp_banner_code = 220, smtp_banner_text = "Hello there." } $GREYLIST ACCEPT { max_message_size = 5M, max_rcpts_per_hour = 5k, max_rcpts_per_hour_text = "You have exceeded 5,000 recipients this hour. If you feel this limit is too low, please contact mailadmin@mycompany.com" } behaviors = {'BLACKLIST': ('REJECT', { ' smtp_banner_text ' : 'You have been blacklisted.}), 'WHITELIST' : ( 'ACCEPT' , { • max_concurrency ' :600, 'max_message_size ' : 12582912, ' smtp_banner_code ' : 220 , ' smtp_banner_text ': 'Hello there.' }), 'GREYLIST' : ( 'ACCEPT' , { 'max_message_size' : 5242880, 'max_rcpts_per_hour ' :5120, ' max_rcpts_per_hour_text ' : ' You have exceeded 5 , 000 recipients this hour . \nIf you feel this limit is too low, please contact mailadmin@mycompany . com' } ) , } [0122] The mapping of hosts to behaviors can be implemented as an ordered list. Each element of the list is a tuple containing: (1) the label (or None if there is no label), (2) a list of lists of hosts (each nested list is an aggregate), (3) the behavior (either a string, if refeπing to a behavior definition, or a behavior tuple, as above, if the definition is "inline"), and (4) an entry comment (or None, if there is not comment associated with the entry). [0123] Each host is represented itself as a tuple of three values: the type (e.g., IP address, hostname, or SenderBase organization ID), the host itself (e.g., an IP address, CIDR block, domain name, etc.), and a comment (or None, if there is no associated comment). [0124] The following shows an example set of HAT mappings, followed by the representation of the data structure. Personal_IPs : 10.1.1.7 (Joe's Computer), # Joe's computer 10.1.2.255/24 (Tom's Computer) # Tom's computer ACCEPT { max_message_size=20M } Blacklisted: .spamco.com (SpamCo) , sbo:1234 (Spamatron) $BLACKLIST (Spammer HAT_mappings = [ ( "Personal_IPs" , [("10.1.1.7", "Joe's Computer"), ("10.1.2.255/24", "Tom's Computer")] , "ACCEPT", { "max_message_size" : 20971520} , None) , ("Blacklisted", [(".spamco.com", "SpamCo"), ("sbo:1234", "Spamatron") ] , "$BLACKLIST", "Spammers" ) , ] B. Example RAT [0125] The following is an example RAT. yahoo . com ACCEPT example.com REJECT smtp_response_code=554 smtp_banner_text="Go away. postmaster® ACCEPT smtp_response_code=250 smtp_response_text="Postmaster mail accepted. " ALL REJECT
[0126] For new injectors, default RATs can be established. For example, a new public injector can use "ALL REJECT" while a new private injector can use "ALL ACCEPT." [0127] Generally, the format of the RAT is the same as for the HAT except for the address and access fields. C. Additional Parameters for Use in the HAT and RAT
[0128] The following is a list of parameters that can be used in the HAT and RAT. For each parameter, the list includes the parameter name (which can include letters, digits, and underscores) followed by an "=" sign, and then the value. The value can be a number or a string, and numbers can be followed by the letter "M" which multiplies the number by 1,048,576. Numbers followed by the letter k are multiplied by 1,024. A simple string value is just a sequence of alphanumeric characters (with no spaces). If a more complex string is needed, then it can be enclosed with double quotes. Backslash is the escape character used in a quoted string. Parameters can be continued on the next line as long as there is some whitespace at the beginning of the line. Quoted strings do not need the whitespace, but if it exists, then it will be removed. This syntax is defined in ABNF form (RFC2234). VCHAR = %x21-7E ; visible (printing) characters ALPHA = %x41-5A | %x61-7A ; A-Z / a-z SP = %x20 HTAB = %x09 ; horizontal tab DIGIT = %x30-39 ; 0-9 ALNUM ALPHA I DIGIT float [- I +]? DIGIT+ ["." DIGIT+]? space SP j HTAB line_break CR j LF I CRLF | comment
WSP space I line_break allowed_policy 'ACCEPT' I 'RELAY' | 'CONTINUE' denied_policy 'REJECT' j 'TCPREFUSE' policy allowed_policy | denied_policy line_label [A-Za-z_] + [A-Za-z0-9_-] * behavior_label $ [A-Za-z_] + [A-Za-z0-9_-] * range DIGIT{l,3} "-" DIGIT{l,3} ; values from 0 to 255
Snum = DIGIT{1,3} representing a decimal integer value in the range 0 through 255 ip-addr = Snum [ " . " Snum] { 3 } ip-block = Snum [ " . " Snum] {0,3} [ " "] ip-range = [Snum "."] {0,3} range netsize = DIGIT{l,2} value in range 0 through 32 ip-cidr = Snum ["." Snum] {0,3} "/" netsize sub-domain = ALNUM [ALNUM | "-" | "_"]* ALNUM glob-hostname = ["." sub-domain] + fqdn = sub-domain ["." sub-domain] + ; Note: This is a loose ; specification of a fqdn senderbase_id = "sbo:" DIGIT+ ; SenderBase IDs are integers senderbase_rep = "sbrs[" space* float space* : space* float space* "] " host = ip-addr | ip-block | ip-range | ip-cidr | fqdn | glob-hostname | senderbase_id host_block = [host paren_comment? [[',' | WSP] WSP* host paren_comment?] *] ? 'ALL' definition = policy [space+ param_block] ? WSP* paren_comment? line_bπ policy_definition = policy [space-t- param_block] ? WSP* line_break rightside = definition | label WSP* paren_comment? line_break label_definition behavior_label WSP+ policy_definition host_line = [line_label : ] ? host_block WSP+ rightside unit = 'k' I 'M' I 'G' number = [0-9] + unit? quote = %0x27 dquote = %0x22 qchar = %x01-21 I %x23-%x26 | %x28-%x5b | %x5d-%xff ; Any characters except \ , " , and ' string = Any number of printable characters except quotes, which must be escaped if they match the quotes used to delimit the string. (How to best represent this?) comment = WSP* '#' string line_break paren_comment = WSP* '(' [%x01-%x28|%x29-%x5b|%x5d-%xff |\\|\)]* ')' ; Any characters except \ and ) , but allow \\ and ; \) as escape patterns for those characters squote_string = quote [qchar | dquote | line_break | escape quote] * quot dquote_string = dquote [qchar | quote | line_break | escape dquote] * dqu quoted_string = squote_string | dquote_string option = 'on' I 'off' I 'require' numerical_param = ' max_concurrency ' | 'max_message_size ' | 'max_msgs_per_session' | 'max_rcpts_per_msg' | ' smtp_banner_code ' | 'rate_limit' | 'max_rcpts_per_hour ' | 'max_rcpts_per_hour_code ' | 'netmask' string_param = ' smtp_banner_text ' | 'max_rcpts_per_hour_text ' | ' tis ' I ' use_sb ' param = numerical_param space* ' = ' space* number | string_param space* ' = ' space* quoted_string params = param [ [ ' , ' | WSP] WSP+ param] * param_block = ' { ' WSP* params WSP* ' } ' table = entry* entry = comment | label_def inition | host_line
D. Aggregated Time-Based Counters
[0129] Generally, the first step in managing connections and mail flow is determining what is happening, such as by counting the number of messages received per hour from a sender or the number of connections at a given time from a sender. Once the measurement is made, the system can determine what, if any, actions to take to control the flow of messages to the system.
[0130] Any number of attributes or events can be counted. For example, every connection to a MTA from another MTA has a connection event, and every connection event has one or more message events, and every message event has one or more recipient events. In one embodiment, a counter is based on the recipient events. For example, the number of messages for recipients from a sender over a specified time period is determined (e.g., the number of recipients from sender X per hour). This can be useful for dealing with spam, since spammers typically send each message with a large number of recipients, such as 50 recipients per message. Thus, counting recipients instead of messages can be desirable when controlling mail flow to deal with spam.
[0131] In another embodiment, a counter is based on the number of connection events. For example, the number of connections cuπently open to an MTA from a sender is determined. This can also be useful in controlling spam as spammers typically send many messages over many connections.
[0132] In yet another embodiment, a counter is based on the number of bounce messages due to invalid email addresses. For example, the number of bounce messages generated due to messages from a sender being addressed to invalid email addresses are counted. This can be useful in preventing directory harvest attacks.
[0133] A time based aggregate counter can be used for each parameter of interest, such as the key value for the entries in the HAT. For example, if the HAT includes two entries, 1.2.3.4 and 1.2.3/20, a connection from IP address 1.2.3.4 will start with a counter key of "1.2.3.4," whereas a connection from IP address 1.2.3.4 will start with a counter keyed by "1.2.3/20." In other implementations, multiple counters can be used and incremented if a connection matches on more than one entry.
[0134] If a HAT entry lists multiple values for the same behavior, each value can be treated separately. For example, if a HAT entry is for "1.2.3.4, 1.2.3.5," the appropriate key would be either of the two listed IP addresses instead of a string comprised of the whole HAT key entry. If the HAT includes the "ALL" catch-all entry, and the "ALL" entry is matched, the counter key can be initially set to the IP address of the incoming connection. [0135] In addition, other parameters can be used. For example, a "use sb" option can be used to apply SenderBase logic to the IP address, and the counter key can be modified based on the available SenderBase information. For example, the following rules can be applied: (1) If the SenderBase organization ID and subdivision mask are received from SenderBase, the subdivision mask can be applied to the IP address to generate a CIDR block, and the counter key is the thus generated CIDR block. (2) If the SenderBase organization ID is received, but not the subdivision mask, the organization ID can be used as the counter key. (3) If neither the SenderBase organization ID or subdivision mask are received, a user-supplied netmask can be used by default, and if the user has not specified a netmask, the system can be configured to use a default value of '724," and the resulting CIDR block is used for the counter key.
[0136] If the user has supplied a netmask, but has not chosen to use SenderBase, the user supplied netmask can be applied to the IP address to create a CIDR block that is used as the counter key.
[0137] Counters can be stored in a variety of ways, such as through the use of a data dictionary that is keyed off the HAT table criteria that is matched. When an incoming connection is made and the matching HAT criteria is determined, the thread processing the connection looks up a reference to the appropriate counter, which is held by the thread until the end of the connection session, thereby avoiding the need to perform key lookups every time a recipient is processed.
[0138] When a reference is retrieved from the data dictionary, the system determines if the counter dictionary is expired (e.g., over an hour old for an hourly based counter). If the counter is expired, a new counter object is returned and the old dictionary is deleted, such that all counters are reset to zero. Thus, the birth time of the data dictionary is set to the most recent hour's beginning. For example, if after a period of inactivity, a connection comes in at 4:15 PM, but the birth time of the dictionary is listed as 3:00 PM, the old dictionary is deleted and the new dictionary is retroactively given a birth date of 4:00 PM. [0139] One or more user options can be used with the techniques herein for controlling message flow. For example, the user can be given the option to turn the use of SenderBase with mail injection control on or off. The MTA can be configured with an appropriate default value, such as that the SenderBase option is set to "on" for a new public injector but set to "off for a new private injector.
[0140] A timeout variable can be used to determine the on/off state for using SenderBase. For example, a timeout of zero can specify that the user has turned off SenderBase support. A timeout of greater than zero specifies that SenderBase support is active, with the timeout value indicating how long the system will wait (e.g., the number of seconds) for a response from SenderBase before giving up. If SenderBase support is "off or a query to SenderBase fails, the system can be configured to not perform further queries to SenderBase for connections for the injector. If a HAT entry contains an "sbo:" host, that host does not match any incoming connections because the SenderBase Organization ID cannot be determined for the connection. If a HAT entry has the "use_sb" option, the netmask provided by the user for that entry (or '724" if none) can be used instead, just as if no data if received from SenderBase.
[0141] Another possible user option can be to enable a cache time for the SenderBase results. For example, a default time equal to the time to live (TTL) provided by SenderBase can be used, and the user can adjust the value to either zero to preclude caching any results or a non-zero value of the user's choosing, which is used in place of the TTL value from SenderBase.
[0142] Actions taken as part of mail flow control can be logged. For example, the actions taken against a connection can record the relevant parameters that supported the action, such as "ICID X from 1.2.3.4 limit N exceeded for HAT entry '1.2.3/24'". As another example, actions taken against an individual recipient can be logged to record the relevant parameters that support the action, such as "ICID X MID Y 'bob@example.com' limit N exceeded for HAT entry '1.2.3/24'". E. Example GUI for Managing Connections and Email Messages
[0143] FIG. 5 is a block diagram depicting an example of a graphical user interface (GUI) 500 for use in managing connections and email messages received by a server, according to an embodiment. GUI 500 can be displayed by an MTA, such as server 100 through display 130 to administrator 140. Note that FIG. 5 includes a representative sampling of the types of interface controls for several selected features of the approaches described herein, but in practice, any suitable interface control or widget for any number of the features described herein can be implemented.
[0144] GUI 500 includes several graphical widgets that include one or more options for the following features: rate limits 510, connection limits 540, directory harvest attack prevention 550, recipient limits 560, and policies 580. Each of these features is described further below. By selecting the various features and options, server 100 can automatically add or modify one or more rules in the HAT or RAT to implement the desired functionality, as described above. In addition, the HAT and RAT can be configured to be modified directly by a user instead of through the use of a GUI such as GUI 500.
[0145] GUI 500 also includes the following set of buttons: save 590, cancel 592, restore default settings 594, and save as default 596. Save 590 is a graphical button that can be selected by a user, such as administrator 140, to save the options and inputs entered by administrator 140 through GUI 500. Cancel 592 exits GUI 500 without saving any changes that may have been made to the options and inputs of GUI 500. Restore default settings 594 restores the options and inputs of GUI 500 to the specified default settings. Save as default 596 saves the current options and inputs as the specified default. [0146] Rate limits 510 includes a checkbox 512 for specifying whether or not the maximum recipients per hour should be limited. If checkbox 512 is checked, the rate at which recipients are accepted is limited by server 100, but if checkbox 512 is not checked, the rate at which recipients are accepted is not limited by server 100. Checkbox 512 is associated with a selection button 514 that specifies the rate to be unlimited and a selection button 516 that specifies the rate to be the value entered in the associated text input box. [0147] Rate limits 510 includes a checkbox 520 for specifying whether or not a maximum recipients per hour code should be used, with the notation illustrated that SMTP code 452 is recommended. Checkbox 520 is associated with a text input box 522 that allows administrator 140 to enter the SMTP code to be sent to the sender of an email message when the email message is rejected because the specified maximum number of recipients per hour is exceed.
[0148] Rate limits 510 includes a checkbox 524 for specifying whether or not a text string should be included when email messages are rejected for exceeding the specified injection rate. Checkbox 524 is associated with a text input box 526 that administrator 140 can use to provide a text message to be included with the SMTP response for rejected email messages based on the maximum number of recipients per hour being exceeded.
[0149] Rate limits 510 includes a checkbox 530 to specify whether or not SenderBase should be used when applying the rules in the HAT. Checkbox 530 is associated with selection buttons 532 that allow administrator to specify whether the SenderBase option is
"on" or "off." For example, if SenderBase is specified to be used by checking checkbox 530 and clicking the "on" button of buttons 532, server 100 will send a query to SenderBase using the incoming IP address of a sender, and then use the information returned by
SenderBase for the sender when identifying which rule in the HAT should be applied. While
FIG. 5 uses SenderBase, any type of information service can be used instead to provide information about senders.
[0150] Connection limits 540 includes a checkbox 542 to specify whether or not the maximum number of connections to the MTA should be limited. Checkbox 542 is associated with a selection button 544 to specify that the maximum number of connections is unlimited and a button 546 to specify the maximum number of connections in the associated text input box.
[0151] Directory harvest attack prevention 550 includes a checkbox 552 to specify whether or not the maximum number of invalid recipients per hour should be applied.
Checkbox 552 is associated with a selection button 554 to specify that the maximum number of invalid recipients is unlimited and a selection button 556 to specify a maximum number of invalid recipients per hour through the associated text input box.
[0152] Recipient limits 560 includes a checkbox 562 to specify whether or not to always allow email messages addressed to the "postmaster" username for the domain or domains served by the MTA. Checkbox 562 is associated with selection buttons 564 that allow administrator 140 to indicate that this option should or should not be used by checking "yes" or "no," respectively. [0153] Recipient limits 560 includes a checkbox 566 to specify whether or not the
"reject" action should be used as the default RAT rule for new public injectors.
Checkbox 566 is associated with selection buttons 568 that allow administrator 140 to indicate "yes" or "no" for using the "reject" action for new public injectors.
[0154] Recipient limits 560 includes a checkbox 570 to specify whether or not the
"reject" action should be used as the default RAT rule for new private injectors.
Checkbox 570 is associated with selection buttons 572 that allow administrator 140 to indicate "yes" or "no" for using the "reject" action for new private injectors.
[0155] Policies 580 includes a checkbox 582 to specify whether or not spam detection is to be used, along with selection buttons 584 that allow administrator 140 to turn spam detection "on" or "off."
[0156J Policies 580 includes a checkbox 586 to specify whether or not virus detection is to be used, along with selection buttons 584 that allow administrator 140 to turn virus detection "on" or "off." F. Collecting and Aggregating Message Information
(1) Introduction to Managing Message Information
[0157] Although some senders inject messages into an MGA that are desirable, many other senders are injecting messages into the MGA that are undesirable, such as spam messages or virus infected messages. An MGA administrator would like to be able to distinguish the flow of messages from different senders, such as IP addresses, domains, CIDR blocks, etc., and to easily see patterns among such observed message flows so that the administrator can control the flow of messages differently depending on who the sender is and what kind of messages are being sent to the MGA.
[0158] Techniques are provided for gathering data about the flow of messages into a system and generating graphical representations of the data to allow a user to identify patterns in the message flows and thereby take action based on the identified pattern. For example, the number of messages being received at an MGA from a particular IP address can be tracked and displayed on a graph that is part of a graphical user interface (GUI). The administrator of the mail server can inspect the graph to identify any patterns or abnormalities, such as a spike in the incoming flow of messages from the IP address. The administrator can then take action, such as throttling the rate at which e-mails are allowed to be received at the email server because of the unusual spike in the number of messages being received, which could indicate that the influx of emails are unsolicited commercial emails, such as spam.
[0159] The administrator takes the action by clicking on a button in the GUI, such as a "BLACKLIST" button or a "THROTTLE" button, that when selected by the administrator causes the email server to modify the server's configuration information to add the IP address to a blacklist or merely to be rate limited, respectively, that identifies IP addresses from which messages are to be controlled by either not accepting additional messages or by limiting the rate at which messages are accepted from the sender (e.g., by adding to or modifying the HAT). If an unusual mail flow pattern is desirable, such as a spike being caused at a large company when an outside contractor is sending all of the company's employees copies of a press release, the administrator can click on a "WHITELIST" button to allow all such messages to be accepted, thereby avoiding such messages from inadvertently being treated as spam.
[0160] In addition, approaches are described that track the application of policies to the flow of messages, such as actions specified in the HAT or RAT, by sender identifiers and generate reports based on the results. For example, the mail flow monitoring system can present the user with a graphical representation of the mail flow over time for one or more sender identifiers or for all mail flow into the system, along with a breakdown of how many of the messages were blacklisted, whitelisted, greylisted (e.g., subject to injection control), or other categories of treatment or lack thereof.
[0161] Mail flow monitoring functions can include a number of items. For example, detailed information can be provided about incoming messages, outgoing messages, and processing statistics. Other sources can be accessed for data, such as SenderBase that supplies network owner names and global information for a sender profile. Data can be aggregated and tabular results presented by grouping data on IP address, domain, network owner, or any other sender identifier, along with time series data by the same groupings. [0162] Mail flow monitoring can be implemented in a hierarchical fashion, such as a low level that interacts with a data store or real time data inputs, a middle level that composes tables and aggregates, and a high level interface that finalizes the data for presentation via a graphical user interface. (2) Collecting Data on Message Flows
[0163] Mail flow data can be collected by measuring inbound and outbound traffic flows, including bytes, recipients, messages, connections, success conditions, failure conditions, and actions taken, such as those specified in the HAT and the RAT. Typically, such measurements are collected by IP address over short time intervals (e.g., one minute intervals). The per measurement interval counters are aggregated over time to represent traffic over longer time intervals and over IP addresses to represent traffic and product reports by domain name, IP address, subnet, a range of IP addresses, a fully qualified domain name, any level domain, a CIDR block or portion of a CIDR block, a SenderBase organization ID or a SenderBase reputation score.
[0164] In one embodiment, a queue is used to collect data on message flows. For example, collecting data in real time as part of processing incoming messages can at time affect performance to an unacceptable degree, based on the user's needs. By using a queue into which information for each connection and/or message is placed, the data can be processed outside of the normal message processing, thereby avoiding processing impact from the data collection process. However, the delay in placing information into the queue and the offline processing of the queue is not great, typically on the order of seconds or a minute or two, and thus the data is generated and can be displayed and reported substantially in real time as the data is collected an processed.
[0165] As a specific example, the processing of the data in the queue can perform an aggregation of the information in periodic intervals, such as one minute snapshots. The aggregated data from the single minute snapshots can then be further aggregated over longer periods, such as to provide hourly summaries or daily reports. Any level of data, from the lowest level information from the smallest aggregation interval to all data collected, can be reported and displayed to the user.
[0166] Mail flow data can also be aggregated, displayed, and reported based on the concept of a "primary domain." For example, yahoo.com, aol.com and honda.co.jp are examples of primary domains that are affiliated with a particular organization, such as Yahoo!, America Online, and Honda of Japan, respectively. By associating individual IP addresses that connect to the system with the coπesponding domain name, mail flow data that is collected based on IP addresses can be aggregated based on the associated primary domains that based on some or all of the IP addresses associated with the primary domain. [0167] In addition, data can be aggregated, displayed, and reported based on the network owners for individual IP addresses based on a database that includes a mapping of IP addresses to network owners, such as the SenderBase service. For example, when a connection is received from an IP address at the MGA, the system can issue a query to SenderBase to obtain the information for the IP address, such as the network owner, SenderBase organization ID, and perhaps even a reputation score. As a result, a network owner that has a many IP addresses that are not otherwise organized in a manner that would allow for the IP addresses to be tacked back to the network owner without the user of such a database can have all of the network owner's IP addresses grouped together, and the system can aggregate, report, and display data for the network owner based on some or all of the IP addresses associated with the network owner. (3) Types of Counters for Collecting Data
[0168] Any of a number of different counters can be used for collecting data about the flow of messages through the system, and the counters can be based on any kind of sender identifier, such as those described herein. For example, counters can be used to track the actions taken based on rules in the HAT and RAT, such as a counter for the number of recipients that are blocked from a sending IP address based on injection control or the number of connections refused from a domain due to the maximum number of connections being exceeded. As another example, counters can track the number of messages identified by the system as spam, such as by the Brightmail anti-spam engine, or the number of messages determined to be infected with a virus, such as by Sophos anti-virus engine. [0169] Counters can be established for different actions taken based on sender identifiers. For example, one counter can track the number of messages rejected for a CIDR block that is listed for a rule in the HAT, while another counter can track the number of messages rejected for a specified domain name that is listed in the HAT. In general, a counter can be used for any sender identifier listed on the left side of the HAT and RAT and count the number of messages affected by the action or rule specified on the right side of the HAT and RAT. (4) Reporting and Displaying Data on Message Flows
[0170] A graph can display the number of recipients injected over the last day, along with the result of the connection attempts by connection policy (e.g., accepted, throttled, relayed, or blocked/rejected) over the same day. In addition, a mail flow summary can be provided that shows the total overall mail flow statistics as well as a breakdown by domain or other sender identifier. Furthermore, the display of the mail flow information via the GUI can include other functions, such as a quick search function that allows the user to specify an IP address for which the system generates a graphical display and/or report of mail flow information based on the specified search criteria. Finally, the display, can include a quick report function to generate a report based, such as the top IP addresses by the number of recipients blocked.
[0171] As another example, a cuπent mail flow graph can display the total rate at which recipients are being injected into the MGA, along with how many of the injected recipients are being blocked as spam, such as by using Brightmail, and how many of the injected recipients are being blocked based on a reputation filter, such as by comparing reputation scores, such as from SenderBase, for the senders of the messages to a specified limit. Also, a summary of the breakdown of the treatment of the recipients can be displayed, such as the percentage of recipients that have been blocked due to a blacklist, those that are allowed based on a whitelist, those that have been subject to injection control (e.g., throttling, or greylisted), and those whose disposition is otherwise unknown or not included in the other categories. In addition, the display of the mail flow information via the GUI can include other functions, such as a quick search function that allows the user to specify an IP address or sender type for which the system generates a graphical display and/or report of mail flow information based on the specified search criteria. Finally, the display, as illustrated in FIG. 6, can include a quick report function to generate a report based on a sender identifier based on one or more search criteria. (5) Identifying Patterns
[0172] The use of a GUI for displaying mail flow data, such as in the forms of graphs and tables, allows the user to identify patterns, such as that a virus attack is underway or a spam campaign has targeted the recipients for the MGA. For example, a mail flow graph can depict a large increase in the number of recipients blocked based on the reputation filter during Friday and Saturday. The user can then request a report on the IP addresses from which the reputation filter blocked messages were received, and then add some or all of the IP addresses thereby identified to the HAT with an appropriate rule, such as that the IP address is to be blacklisted or subject to mail injection rate limitations. (6) Alerts and Alarms
[0173] In some implementations, the mail flow monitoring portion of the system can compare mail flow data to thresholds, limits, or other specified values, and generate an alert message to the administrator of the MGA or present an alarm message on a display. For example, the system can compute a thirty day average, such as that the MGA is having 100 recipients/day injected from a particular IP address. The system can then compare the mail flow from the particular IP address for the cuπent day to the thirty day average. If the difference between the data for the cuπent day and the thirty day average exceeds a specified amount, such as a threshold level of a 500% increase, the system can send an alert message to one or more individuals associated with the MGA and/or display an alarm message on a display associated with the MGA. The alert or alarm allows the user of the MGA to review the mail flow data and take an action. For example, a 500% increase in the number of injected recipients from a particular IP address may indicate a hit and run type of spam campaign, and as a result, the user can take an appropriate action, such as using mail flow injection control to limit the number of recipients being injected to the MGA to a particular amount, such as the thirty day average, or such as blacklisting the IP address for the next several hours. (7) Taking Actions
[0174] In some implementations, the system for displaying mail flow monitoring data includes one or more graphical objects, such as buttons, that allow the user to take actions based on the information being displayed. For example, if the display includes a mail flow graph that depicts the number of messages being received over that last six hours from an IP address and that shows an unusually large spike in the number of messages received over the last thirty minutes, the user can click on one or more buttons that cause the system to take a specified action. As a specific example, if the user determines that the spike is likely the result of a virus attack or a hit and run spammer, the user can click on a button on the display labeled "BLACKLIST" to have the IP address showing the spike in messages blacklisted. Such a capability can be refeπed to as a "one button blacklist" feature, and can be implemented by making a change to the HAT.
[0175] As another specific example, the user can click on a button labeled "WHITELIST" to have the messages allowed, such as when the user determines the IP address is that of a trusted partner who is unlikely to be the source of virus infected messages or spam. As yet another example, the user can click on a button labeled "GREYLIST" to have the flow of messages from the IP address limited, such as by employing one of the mail injection control approaches described herein to limit the rate at which recipients are injected to the MGA by the IP address.
[0176] The system can implement the action represented by the user's use of such graphical objects, such as the buttons described above, by one of a number of approaches. For example, when a button is clicked by the user, the system can generate an appropriate rule and add the rule to the HAT or RAT, such as that the identified IP address be blacklisted, whitelisted, or greylisted. G. Managing Information Relating to Senders of Electronic Messages
(1) Overview
[0177] This section describes approaches and techniques for collecting, aggregating, and managing information relating to the senders of electronic messages. In one aspect, the techniques include obtaining a first set of data from a first source and related to one or more message senders each sending one or more electronic messages, obtaining a second set of data from a second source and related to the one or more message senders each sending one or more electronic messages, determining message volume information related to the one or more message senders based on the first set of data and the second set of data, and providing the message volume information related to the one or more message senders. [0178] In another aspect, the approaches include receiving one or more messages from a particular message sender, sending a request for message volume information related to the particular message sender, receiving the message volume information related to the particular message sender, where the message volume information related to the particular message sender was determined by obtaining a first set of data from a first source and related to one or more message senders each sending one or more electronic messages, obtaining a second set of data from a second source and related to the one or more message senders each sending one or more electronic messages, determining message volume information related to the one or more message senders based on the first set of data and the second set of data, and limiting delivery of messages from the particular message sender based on the message volume information related to the particular message sender. [0179] In another aspect, the approaches include receiving one or more messages from a particular message sender, sending a request for message volume information related to the particular message sender, receiving the message volume information related to the particular message sender, where the message volume information related to the particular message sender was determined by obtaining a first set of data from a first source and related to one or more message senders each sending one or more electronic messages, obtaining a second set of data from a second source and related to the one or more message senders each sending one or more electronic messages, determining message volume information related to the one or more message senders based on the first set of data and the second set of data, and blocking delivery of a particular message from the particular message sender based on the message volume information related to the particular message sender. (2) Example Information about an Email Sender
[0180] Example information that a data processing unit may collect for message senders are: time of the first request for information about that email sender, volume over time of requests for information about that email sender, percentage of total volume of all requests for information about that email sender, network owner of the IP address from which the message is sent, network topology information for the area of the network in which the IP address of the email sender is located, category of enterprise or organization to which the email sender belongs, time that the IP address of the sender last changed ownership, geographical location of the email sender, geographical information about the path the email message has taken, or any other appropriate information.
[0181] The time of the first request for information about a particular email sender may be obtained by keeping information related to each request for information for each sender about which information is requested. Whenever information is requested for a sender, a record or set of records related to the request for information may be recorded or modified. For example, if no information for that sender has been recorded previously, then a new record or set of records is created and the time of the first request is recorded. [0182] A data processing unit collects the volume over time of requests for information about an email sender or group of senders. The calculation of volume over time may be performed in any appropriate manner and for any appropriate time periods. For example, the volume over time may be calculated as the number of requests for information about a particular sender or group of senders over a day, week, month, 30-day period, or year. As another example, the volume over time is calculated as a percentage as follows: Percent volume over time T = (number of information requests for a particular sender or group of senders for time T) / (total number of information requests for all senders for time T) [0183] Alternatively, the volume over time may be calculated as an estimate of total number of messages a particular sender or group of senders has sent on the entire Internet as follows: Estimated Total Number of Messages over Time T = Estimated Total Number of Messages on Internet over time T * Percent volume over time T [0184] Alternatively, the volume over time may be calculated logarithmically to provide a magnitude value as follows: Magnitude value for time T= 10 + log10 (Percent volume over time T) [0185] Another example of a volume over time calculation is the fluctuation in volume over time. For example, one or more of the following can be used: determine the fluctuation in volume over time as a percentage or absolute change in any appropriate volume calculation over time Tl as compared to time T2, where Tl < T2; determine a percentage or absolute change in any appropriate volume calculation over time Tl as compared to time T2, where Tl and T2 do not overlap; determine a percentage or absolute change in any appropriate volume calculation over time Tl as compared to time T2, where Tl < T2 and T2 represents the entire time range for which information about a sender or group of senders has been collected; or any other appropriate calculation.
[0186] A data processing unit determines the network owner associated with a message sender based on the IP address from which the message is sent. Also, a network owner can be determined by geographical location, domain name, or any other appropriate identifier associated with the sender. In other implementations, a network owner is determined by querying a list or data structure of known network owners of IP addresses, or a determination of network owner may be based on domain name, geographical location, or any appropriate information.
[0187] Network owners are typically broken up into one or more groups, herein called network operators. For example, an Internet Service Provider (ISP) may be listed as the network owner for a large block of IP addresses. In such an example, the network operators of portions of the IP addresses owned by the network owner (the ISP) may be used by an email gateway or other server or application to indicate blocking a message, bouncing a message, throttling messages from a sender or group of senders, or displaying the information based on the network owner or network operator.
[0188] The network operators of IP addresses within a set of IP addresses owned by a single network owner are estimated by assigning separate blocks of IP addresses to separate operators, receiving information from the network owner indicating which IP addresses are operated by which network operators, or estimating network operators based on domain names associated with the IP addresses. For example, an ISP is a network owner and owns a block of IP addresses at "152.2.*.*". In such an example, the block of IP addresses may be broken up into blocks of 256 IP addresses: "152.2.1.*", "152.2.2.*", ..., "152.2.256.*" [0189] The decision whether to break up a network owner may be based on the number of IP addresses owned by the network owner or by the category of the ISP. For example, if an ISP owns 1024 IP addresses, it may be useful to divide the 1024 IP addresses into four sets of 256 IP addresses and assign a network operator to each. In such an example, any blocking, throttling, or other action taken based on the network operator will not effect all of the potential message senders with IP addresses owned by the ISP, but will effect only a portion of the senders. As another example, an email-marketing firm that owns 1024 IP addresses may not have its 1024 IP addresses divided into multiple network operators. In such an example, any and all messages may be considered to come from the same company and should be, if appropriate, blocked, throttled, or any appropriate action taken. Assigning a network operator to a set of IP addresses comprises assigning a new network owner coπesponding to the network operator for the set of IP addresses.
[0190] The data processing unit obtains network topology information for the area of the network in which the IP address of the email sender is located. In some implementations, network topology information that is associated with a particular sender includes network owners of IP addresses near the IP address of the particular sender, network owners of other IP addresses associated with the same geographical area, or any appropriate network topology information. For example, a particular sender has a particular IP address. If that IP address is near one or more other IP addresses that are suspected spam senders, then the IP address may be rated as more likely to produce spam. As a specific example, an IP address is near another if the two IP addresses have the same high-order significant bits, where the number of bits that are high-order significant bits may be any number of bits, including from 1 bit to 31 bits.
[0191] The data processing unit obtains the category of the enterprise or organization associated with the email sender. For example, the categories associated with email message senders can be airlines, Fortune 500 companies, Fortune 1000 companies, Fortune 1500 companies, ISPs, banks, or any appropriate category.
[0192] The data processing unit records the change of ownership of an IP address. In some implementations, the change of ownership is recorded by clearing previous information about the IP address or indicating that the owner of the IP address is unknown. Information that may be cleared about the IP address or other indicator may include the first recorded request about a message, volume of requests, or any other appropriate information. In one embodiment, the information request handler keeps track of the number of times that an IP address changes owners. The information about change of ownership combined with other information, such as message volume information, may be used to indicate that a sender may be sending spam.
[0193] The data processing unit records geographical location of the email sender. For example, the geographical location of the email sender is determined by the IP address, domain name, or a look up table indicating the geographical location of the email sender. Geographical information may be useful in determining which messages are valid. As another example, if a particular email recipient never receives email from China, then a message from China may be more likely to be spam.
[0194] The data processing unit obtains geographical information about the path the email message has traveled, or the geographical path, based on the header information in the email message. The header information in the email message may indicate a path the email message has taken since it was sent. Geographical information may be determined based on the header information in any appropriate manner, including determined by the IP address, domain name, or other look up table indicating the geographical location of gateways the email message has traversed.
[0195] The techniques described herein are in no way limited to using the types of information that are described herein. Any appropriate type of information related to the email sender, email messages, or email recipient may be used. For example, information related to email messages may include information in the content of the message, such as the existence of keywords or tokens. An example of email recipient information may be the amount of spam a particular email recipient receives. For example, if 90% of the email that a particular email recipient receives is spam, then that information may be used to aid in the estimation of whether an email directed to that recipient is spam. (3) Example Process for Managing Information Related to Electronic Messages
[0196] The following is an example of a process for collecting, processing, and making available information related to electronic messages.
[0197] First, data related to information about email senders is obtained. Various types of data that may be obtained from the following: an email gateway, an information request handler, an email client, or any other appropriate source. As a specific example, data is obtained by requesting the information from the information source. Alternatively, the infoπnation source may provide the information based on any appropriate event or based on any appropriate schedule instead of being provided in response to a request. The data may also be obtained by performing a DNS zone transfer. Additionally, multiple sets of data for one or more email senders may be obtained from multiple sources or from the same source at two or more different times.
[0198] Next, the data related to information about email senders is processed. For example, multiple sets of data related to email senders obtained from multiple sources or obtained from the same source at different times may be taken in aggregate and processed. As another example, processing the data includes determining one or more of the following: a volume of messages over time, the percentage of message sent by a message sender compared to all messages sent, a magnitude value, a change of absolute or percentage of total messages of a particular time period as compared to a different time period, a change of absolute or percentage of total messages during a particular time period as compared to absolute or percentage of total messages since the first request for information about the sender was received, or any other appropriate calculation. As another example, a data processing unit calculates a magnitude value for a particular network owner associated with a particular message sender and determines the change in the magnitude value as compared to the magnitude value for the previous day.
[0199] In some implementations, processing information related to a message sender includes storing information related to the message sender in a database, flat file, or other storage mechanism. For example, processing information related to a message sender includes determining the network owner or network operator associated with the message sender. As another example, the IP address, domain name, geographical location, or network topology of the message sender is used to determine the network owner or network operator associated with the message sender. The decision whether to associate a network owner or network operator with a message sender is based on whether the IP address or domain name of the message sender is in a set of IP addresses or domain names associated with the network owner or network operator.
[0200] The determination of which network operator to associate with a message sender is made by dividing the set of IP addresses for a network owner associated with a message sender into two or more network operators and determining which network operator to associate with a message sender based on which network operator is associated with a set of IP addresses containing the IP address of the message sender. A network owner is divided into network operators based on the category of the network owner, based on the number of IP addresses associated with the network owner, based on information about one or more network operators within the network operator, or any other appropriate decision. For example, a message sender is associated with an IP address, which is associated with a particular network owner. The particular network owner is an ISP that owns 1024 IP addresses. The network owner is split into four network operators, each coπesponding to 256 IP addresses. The message sender's IP address fall into the range associated with a particular network operator, and the message sender is associated with the particular network operator.
[0201] Processing the data related to information about email senders includes determining or storing category information for network owners and network operators. Determining the category information for network owners or network operators may include receiving the category information through a GUI, via an electronic interface, or from an email gateway, information request handler, email client, or any appropriate source. Alternatively, the category information may be determined automatically using an automatic categorizer based on keyword detection, Naive Bayes, or any other appropriate categorization mechanism. Determining the category information includes accessing a list containing category information and cross-referencing it to message senders, network owners, or network operators. The category information includes a list of airlines, Fortune 500 companies, Fortune 1000 companies, Fortune 1500 companies, ISP's, or any other appropriate category.
[0202] Processing the data related to information about email senders includes determining information related to the history of an IP address associated with the message sender. The information about the history of the of the IP address includes determining when a first request for information was made about the message sender, how many requests have been made about the sender, how many requests over time have been made about the sender, how often the IP address has changed network owners, when the IP address last changed ownership, and any other appropriate information. For example, a data processing unit processes data related to an IP address' history in order to determine and store when a request for information about the email sender was first made.
[0203] Processing the data related to information about email senders includes determining geographical information. An external electronic service is queried to determine the geographical location of a message sender. The geographical location of a message sender is determined by looking up the location of the IP address associated with the message sender in a lookup table or by querying an electronic service, and then the geographical path of a message is determined. The geographical locations of hubs, routers, or gateways through which the email traveled are determined. The information about hubs, routers, or gateways through which the email traveled is determined by parsing the message header. For example, a data processing unit parses the header of a message from a message sender in order to determine the geographical location of all hubs, routers, and gateways through which the email has traveled.
[0204] Next, information related to email senders is made available. The information is made available via a graphical user interface or an electronic interface, and the information is made available by responding to requests for information about message senders, by sending it to an interested party based on particular rules, or by making the data available in a public or private website.
[0205] The graphical user interface, by which the information related to email senders is made available, can be from a web site, a graphical interface to a computer program, or any other appropriate graphical interface. Single items or multiple data items as described herein are presented in the graphical user interface. [0206] The information related to email senders may also be made available via an electronic interface. For example, the electronic interface is a DNS-like interface. Alternatively, any appropriate electronic interface may be used, including a web service, a rsync gateway, a FTP server, a HTTP server, a HTTPS server, a defined remote procedure call interface, a TCP/IP sockets interface, a UDP interface, or any other appropriate interface. H. Determining a Reputation Score for a Sender
[0207] In some implementations, a reputation of a message sender is determined by obtaining two or more lists from two or more list providers, then determining which lists of the two or more lists indicate the message sender, and then determining a reputation score for the message sender based on which lists of the two or more lists indicate the message sender. [0208] In addition, an indication can be provided that a message is unsolicited based on a reputation score. Also, information from the two or more lists can be stored in an aggregate list data structure, and determining what lists indicate the message sender includes querying the aggregate list data structure. In a related feature, a particular list is one of the two or more lists and the particular list contains one or more entries, and storing information from the two or more lists in the aggregate list data structure includes determining the difference of the particular list with a previous version of the particular list, storing entries of the particular list that were not in the previous version of the particular list in the aggregate list data structure, and removing from the aggregate list data structure entries that are not in the particular list but were in the previous version of the particular list. [0209] In yet another related feature, determining the reputation score includes determining an individual score for each list of the two or more lists and determining an output score based on the individual score for each list in the two or more lists. Also, determining the output score includes determining an aggregate score based on the individual score for each list of the two or more lists, determining a normalized score based on the aggregate score, and determining the output score based on the normalized score. [0210] In some implementations, the individual score for each list in the two or more lists each includes an individual probability and a list of probabilities includes the individual probability for each list in the two or more lists, and determining the aggregate score based on the individual score for each list of the two or more lists includes performing a Chi Squared calculation on the list of probabilities. In related features, the approach includes one or more of the following: receiving a request for the reputation of the message sender; receiving the request for the reputation of the message sender by receiving a request formatted as a DNS request; the message sender is associated with a particular IP address; determining what lists of the two or more lists indicate the message sender includes determining for a particular list of the two or more lists whether the particular IP address of the message sender is contained in an IP address range indicated by the particular list; and if a particular list indicates an IP address range, setting a bit coπesponding to the particular list in a particular list bit mask data structure coπesponding to the IP address range. [0211] In some implementations, setting the bit coπesponding to the particular list is performed for each list of the two or more lists, and the sender coπesponds to a particular IP address, the particular IP address is contained within a first IP address range that has associated with it a first list bit mask, and the IP address is contained within a second IP address range associated with a second list bit mask. In addition, determining which lists of the two or more lists indicate the message sender can be accomplished by performing an "or" operation on the first list bit mask and second list bit mask to produce a third list bit mask and determining what bits are set in the third list bit mask.
[0212] Some implementations can include receiving a message from a message sender, obtaining a reputation score of the message sender, where the reputation score of the message sender was determined by obtaining two or more lists from two or more list providers, determining which lists of the two or more lists indicate the message sender, determining the reputation score for the message sender based on which lists of the two or more lists indicate the message sender, and if the reputation score is worse than a first predefined threshold, indicating that the message is unsolicited.
[0213] Related features include one or more of the following: if the reputation score is better than a second predefined threshold, an indication is made that the message is valid, where the first predefined threshold is different from the second predefined threshold; if the reputation score is better than the first predefined threshold and worse than the second predefined threshold, indicating that the message is not estimated as either valid or invalid; sending a request for the reputation score of the message sender; obtaining the reputation score of the message sender by receiving a response to the request for the reputation score of the message sender; and sending the request for the reputation score of the message sender includes sending a particular request formatted as a DNS request. [0214] The following example for determining a reputation score is described assuming that the sender is associated with an IP address. The techniques described herein, however, are in no way limited to use of IP address as an identifier of a sender. In other embodiments, the sender is identified by domain name, email address, geographical location, or any appropriate mechanism.
[0215] First, a score is obtained coπesponding to each list. For example, this score is obtained by determining, for each blacklist, whether the sender's IP address is in the particular list. If the IP address is indicated in the particular list, then the score for the list represents a certain percentage likelihood that the message is an unsolicited electronic message (often higher than 50%). If the IP address is not indicated in the particular list, then the score for the list still represents a certain percentage likelihood that the message is an unsolicited message (often less than 50%).
[0216] In another example, this score is obtained by determining, for each "white" list, whether the sender's IP address is in the particular list. A white list is a list of IP addresses and ranges that are believed to be associated with senders of legitimate electronic messages. If the IP address is indicated in the particular list, then the score for the list represents a certain percentage likelihood that the message is unsolicited (often less than 50%). If the IP address is not indicated in the particular list, then the score for the list represents a certain percentage likelihood that the message is unsolicited (often higher than 50%). [0217] In other examples, a white list or blacklist will contain ranges of IP addresses and exceptions to those IP addresses, thereby including all IP addresses in a range except those that are excluded. The white lists and blacklists contain integer or floating point values indicating scores for IP address ranges and IP addresses, and these scores are used to determine an aggregate score for an IP address with respect to the lists. Also, an aggregate list data structure is queried to determine which lists indicate the sender. [0218] Next, an aggregate score is generated based on the scores for each list determined above. For example, the score for each list is a percentage likelihood that a message is unsolicited and the aggregate score is an aggregate percentage likelihood that is generated based on the individual percentages likelihoods. As another example, this aggregate percentage likelihood is based on a weighted average of the individual percentages likelihoods, a sum or product of the individual percentages likelihoods, a polynomial of the individual percentages likelihoods, or any appropriate calculation. As yet another example, the aggregate percentage is based in part on the Chi Squared function over the probabilities, a Robinson calculation, a Bayes calculation, or any other appropriate mechanism. As a specific example, the Chi Squared function is depicted in the Python Programming Language (www.python.org) code.
[0219] Next, the aggregate score is mapped to a normalized score. For example, the aggregate score is an aggregate percentage, and the normalized score is a mapped percentage that has the range from 0% to 100%, and this step is performed by mapping the aggregate percentage to the normalized range from 0% to 100%. As another example, this mapping is linear, piecewise linear, cubic, polynomial, or uses any other appropriate function. As a specific example, a piecewise linear method of mapping the aggregate function is used and comprises determining the known lowest possible probability (LP), the known average probability (AP), the known highest possible probability (HP), and linearly mapping percentages from LP to AP to 0% to 50% and percentages from AP to HP to 50% to 100%. In equation form, with aggregate probability represented as P, this can be represented as follows: Mapped Percentage (MP) = { if (P < AP) ; (P - LP) * 50 / (AP - LP) { else; (P - AP) * 50 / (HP - AP) + 50.
[0220] For example, if LP is 30%, AP is 40% and HP is 80%, then percentages from 30% to 40% would map to 0% to 50% and percentages from 40% to 80% would map to 50% to 100%. In such an example, 35% would map to 25% and 60% would map to 75%. [0221] In related examples, LP is determined by performing the calculations of the previous step using the lowest possible score (e.g. percentage) for each of the lists, and HP is determined by performing the calculations of the previous step using the highest possible score (e.g. percentage) for each of the lists, and AP is determined by performing the calculations of the previous step using a random sample of possible values and averaging the result.
[0222] Next, the normalized score is mapped to an output score. In one embodiment, a mapped percentage is mapped to an output (mapped) score. In various embodiments, this mapping is linear, piecewise liner, cubic, piecewise cubic, polynomial, or piecewise polynomial, exponential, piecewise exponential, or any appropriate mapping. In one embodiment, this mapping is performed by using a piecewise function such as: Mapped Score (MS ) = { i f MP < . 5 ; ( - log (MP ) / log ( 2 ) - 1 ) / lo_k { else ; 1 . 0 /hi_k * ( 1 - l/ log ( 2 ) * ( log ( 1/ ( 1 -MP) ) ,
[0223] where lo k and hi_k are constants. It may be beneficial to use hi k and lo_k values approximately in the range of 0.5 and 2.0. It may be beneficial to use hi_k and lo_k values approximately in the range of 0.6 and 1.0. Hi k and lo_k may each have the same value or may have different values.
[0224] These examples of determining a reputation score for an electronic message sender are based on which lists indicate the IP address of the sender. A result of this example is the determination of a composite score for the sender of the email messages. I. Controlling Mail Injection
[0225] The most basic approach to controlling the injection of mail to a system from a sender is to either allow all messages from the sender or to reject all messages from the sender. Such an "all or nothing" approach is simple and easy to implement, but it may not be appropriate in all situations, and thus, it is desirable to have the ability to define a "grey" area between allowing everything and allowing nothing such that some messages will always be allowed, but at a certain point, messages will be rejected or limited. Allowing some but not all messages may be refeπed to as injection control because the rate at which senders can send or "inject" email messages to an MTA is limited or controlled. Other equivalent terminology includes "throttling" the flow of messages because some but not all messages are allowed in a given time, and thus the overall rate at which email messages are being accepted by the MTA from the sender is being limited or throttled to a specified rate. [0226] The ability to throttle mail injection, or to control the rate at which one or more senders can send messages to a recipient domain, can be useful for a number of reasons. For example, a high injection rate can be indicative of spam, which is generally undesirable. As a specific example, if a company with a mail gateway device that normally receives a few hundred email messages per hour suddenly begins to receive over a thousand message each hour from a particular IP domain, it is likely that the email messages are part of a spam campaign from the IP domain.
[0227] As another example, a large influx of otherwise desired messages over a short period of time can cause problems for the recipient domain, including crashing the recipient domains mail servers. As a specific example, if a large company works with an outside contractor to send press releases, copies of which are to be sent to all the employees of the large company, the mail servers at the large company could experience stability problems due to the large number of messages being sent in a short period of time. Since the large company wishes to have each employee receive the press release, but the large company also wants to avoid stability problems with its mail servers, the ability to control and limit the rate that the messages containing the press release are received can be beneficial. [0228] The threshold point at which a sender, or a remote injector, of email messages is to be controlled depends on the particular implementation and can be configured by the user of the system, such as the administrator of an MTA, although a default value can also be used even if the user has not specified a value. For example, a sender injecting 200 messages/hour may be indicative of a spammer at a small company having only 50 employees, but for a large company with 10,000 employees, such an injection rate may be perfectly normal for mail from non-spam sources.
[0229] Once the threshold limit is reached on the rate that a sender is injecting messages, one of a number of approaches can be taken to limit the rate at which subsequent messages are injected. For example, the injection of the messages can be artificially slowed over each connection. However, a spammer can circumvent this approach by opening more connections, although as described herein, the number of connections can also be limited. As another example, the recipients can be rejected by the recipient domain, such as be sending a 452 SMTP eπor code that indicates that the sender has injected too many recipients. This allows the system to continue to count recipients, which can be done after the message is accepted but prior to forwarding the message to the recipient. As additional examples, TCP REFUSE or accept then close can be used instead of sending a 4xx SMTP eπor code (e.g., a polite refusal, in contrast to the less polite TCP REFUSE or accept_then_close approaches).
[0230] Mail injection can be controlled based on one or more rules, such as one or more entries in the HAT. As data is accumulated via the counters, that measured data is compared to the parameters in the HAT to determine if any actions are to be taken. It is possible that more than one action will apply to a particular situation. For example, a HAT entry may exist specifically for IP address 1.2.3.4, plus another entry for the CIDR block of 1.2.3/24, both of which would apply to a connection from IP address 1.2.3.4. As a result, the system determines which of the two entries to apply. In some implementations, the HAT is order specific such that the first entry in the HAT that matches to the connection is used. Thus, if the entry for CIDR block 1.2.3/24 is listed before the entry for IP address 1.2.3.4, the action for the entry for CIDR block 1.2.3/24 is used. In other implementations, each entry in the HAT includes a priority identifier, and the entry with the highest priority identifier is used. [0231 ] Any of a number of attributes can be matched in the HAT, including but not limited to, one or more of the following: a network address, an IP address, an IP address range, a CIDR block, an exact FQDN match, a partial FQDN match, and a SenderBase organization ID. As a catch-all or default entry, a default value, such as "ALL," can be used for controlling the injection rate when no other HAT entry matches, and thus the "ALL" entry can catch senders that are otherwise unclassified (e.g., not matched by any other HAT entries).
[0232] For limiting injection and providing injection control, the HAT can include a parameter that specifies the maximum number of recipients in a particular time period, such as the maximum number of recipients per hour (e.g., max_rcpts_per_hour). For example, once the specified limit is reached, the system does not accept any more recipients for the remainder of the time period (e.g., until the end of the hour for an hour-based counter). The HAT can also include a parameter (e.g., max_rcpts_per_hour_text) for the user to specify a custom SMTP response message to be used if a recipient is rejected due to such a rate limitation, as well as the SMTP code that should be returned (e.g., max_rcpts_per_hour_code for which the default can be set to SMTP code 452). The system can be configured to use a default text response if the user does not specify a custom response. For example, the default text response can be "Too many recipients injected this hour" for an hourly based injection rate counter/limitation.
[0233] In the situation in which the catch-all HAT entry "ALL" is used, and it is that entry that is matched on the counter that exceeds the specified limit, additional handling can be performed if the system is configured to work with SenderBase. For example, if SenderBase has supplied a Flow Control Coefficient, the rate limit specified for the "ALL" entry in the HAT can be multiplied by the coefficient prior to comparison to the counter. Thus, the coefficient is a positive floating point number that is greater than zero and can typically is less than or equal to one. However, it is possible that the coefficient could be greater than one, depending on the output from SenderBase and approach used to determine the coefficient. [0234] Typically, the counter used for controlling mail injection is the rate at which recipients are accepted by the recipient host domain. A recipient is considered to be "accepted" if the recipient is not rejected due to rate limiting of the mail flow. As a result, if the recipient is rejected due to improper email address format or because the system is not supporting relaying, the counter is not incremented. However, in other implementations, the counter is incremented regardless of the reason for the recipient being rejected. J. Controlling the Number of Connections Made to a Recipient Domain
[0235] Techniques are described for controlling the number of connections to a recipient domain or recipient host. For example, the system establishes a counter for the number of connections to a recipient host, such as an MTA, and when the number of connections exceeds a specified number, no further connections are allowed until the number of cuπent connections drops below the specified number. As a specific example, a mail server may have a limit of 50 connections at any given time, so that when the 51 st connection is attempted, the mail server refuses to establish the connection with the sending host. [0236] In some implementations, the number of allowed connections is counted based on one or more sender identifiers. For example, the number of connections from an IP address can be limited to a specified number, and the number of connections from another IP address can be limited to another specified number. In general, any type of sender identifier can be used, including but not limited to, one or more of the following: a network address, an IP address, a range of IP addresses, a list of IP addresses, a domain, a fully qualified domain name, a SenderBase organization ID, and a reputation score, such as a SenderBase reputation score.
[0237] In one embodiment, the maximum number of connections is specified by a parameter in the HAT. For example, a variable called "max concuπency" is used to specify the number of connections for the associated sender identifier. In general, any type or combination of sender identifiers can be used on the left side of the HAT so that the system aggregates connections from all of the coπesponding sender IP addresses and compares the aggregate number of connections to the specified maximum number of connections, and when the limit is exceeded, each connection is treated with the REJECT action. [0238] In addition, in some implementations, one or more sender identifiers can be excluded from the counter that is compared to the maximum number of allowable connections. For example, the user can add an entry to the RAT to specify one or more IP addresses or other sender identifiers that are not to be counted against the maximum number of connections for the sender identifier that is specified in the HAT. K. Limiting Directory Harvest Attacks
[0239] Techniques are described that allow the system to track the number of invalid recipient addresses, and when a specified number of invalid recipient addresses have been received, the system no longer sends a bounce message to the sender. For example, a spammer can use a directory harvest attack to generate a list of valid email addresses for a host domain. Because the recipient host typically generates a bounce message when a message is addressed to an invalid email address, the spammer can determine valid email addresses based on the lack of a bounce message, thereby constructing a directory of valid email addresses at the recipient host. While directory harvest attacks can be prevented by never sending bounce messages, there will be messages that include invalid addresses, due to typographical eπors in entering the address for example, for which a bounce message should be desired. The approach described herein allows a limited number of bounce messages, but at a certain point, bounce messages are no longer returned to the sender of the emails having invalid email addresses, based on the assumption that when the specified limit is reached, the likely cause of so many invalid recipient addresses is that a directory harvest attack is occurring.
[0240] For example, the HAT can include a rule that associates a sender identifier with a variable, such as max_invalid_rcpts_per_hour, that specifies the maximum allowed number of invalid email recipient addresses in a given time period, such as one hour. A counter is used to track the number of invalid email addresses from the sender. So long as the counter does not exceed the specified limit, invalid addresses are treated in the typical fashion, with an SMTP response being sent back to inform the sender that the email address is invalid (e.g., a bounce message). However, when the counter exceeds the specified maximum number of invalid email addresses during the time period, bounce messages are no longer sent to the sender and the messages are dropped. At the end of the time period, the counter is reset to zero and begins tracking the number of invalid recipients from the sender once again. [0241] As a result, when a directory harvest attack occurs, some of the initial messages sent by the sender are treated in the normal fashion with bounce messages generated and sent for any invalid addresses. The spammer can determine based on the initial messages some valid and invalid email addresses. However, after the limit is reached and the invalid recipient address messages begin to simply be dropped, the spammer no longer receives any bounce messages, and thus the spammer is incoπectly led to believe that all the messages are addressed to valid email addresses, when in fact many or perhaps even most are not. When the spammer uses the subsequently created list of allegedly valid email addresses, most will then bounce at a later time during a spam mailing campaign, or will be treated again as a subsequent directory harvest attack.
[0242] The specified limit on the number of invalid recipient addresses can be set by the user, such as the administrator for the MTA, and the MTA can be configured with a default value and whether to have directory harvest attack prevention enabled or not. A limit of zero can be used to disable the limit. As an example, a typical recommended value for the maximum number of invalid recipients can be 10 invalid recipients per hour per sender identifier (e.g., HAT entry).
[0243] Sender identifiers for directory harvest prevention work in the same manner as for mail flow injection control and limiting the number of connections. Thus, the sender is keyed off of the string value in the HAT host entry that matches the incoming connection, or the constructed string value if the use SenderBase (e.g., "use_sb") option is active. [0244] In some implementations, the analysis of whether recipient addresses is performed outside of the SMTP conversation. Thus, whether the recipient address is invalid is determined after the SMTP conversation. Any bounce messages generated for invalid recipient addresses must be sorted by the spammer to determine why the attempted delivery failed, which servers to further deter the directory harvest attack. [0245] For purposes of designating the start of a directory harvest attack, some implementations may use the time at which the first invalid recipient email address that exceeds the specified limit occurs. The detection of a directory harvest attack can be logged and reported to SenderBase, if desired. The identification of a directory harvest attack can include additional information, such as the IP address of the sender from which the invalidly addressed messages originate, the reversed DNS results for the sender's IP address, the HAT entry that matched the sender, and the threshold limit for the number of invalid recipients. [0246] Optionally, an alert message can be sent to the user or administrator of the recipient host, and the mail flow monitoring system can track the number of recipients being rejected after the start of a directory harvest attack. For the alert sent to the user, one or more of the following items of information can be included: notification of a potential directory harvest attack, the fact that a message has been dropped (instead of bounced), the IP address of the sender of the dropped message, the reversed DNS results of the sender's IP address, the HAT entry that matched the sender, the threshold/limit set for the number of invalid recipients per period of time, the Envelope Sender from the message envelope, the Envelope Recipient(s) from the message envelope, and the Message Headers [0247] The following is a CLI example for establishing the parameters for directory harvest attack prevention. Enter the maximum number of recipients per message Type DEFAULT to inherit the value from the default settings [ 1000] > Would you like to specify a custom SMTP response? [N] > Do you want to enable rate limiting per hosf (Yes/No/Default ) [Y] > Yes Enter the maximum number of recipients per hour from a remote host . [100 ] > 1000 Would you like to specify a custom SMTP limit exceeded response? [Y] > Enter the SMTP code to use in the response . 452 is the standard code . [452 ] > Enter your custom SMTP response . Press Enter on a blank line to finish Too many recipients received this hour Would you like to enable Directory Harvest Attack Prevention per host (Yes/No/Default ) [ ] > Y Enter the maximum number of invalid recipients per hour from a remote host . [10] >
[0248] In addition, an optional web interface can be used by the user to configure directory harvest attack prevention, along with other features as described herein. L. Command Line Interface Examples
[0249] The following is an example of using the CLI to allow a user to setup a SenderBase caching strategy. gator ironport com> mj ectorconf lg
Currently configured inj ectors : 1 maιn_qmqp (on mam, 10 1 1 71 ) QMQP Port 8628 Private 2. main_smtp (on main, 10.1.1.71) SMTP Port 8025 Private Enter "NEW" to create a new injector, "EDIT" to modify, "DELETE" to remove , or "SETUP" to change global settings. [] > setup Enter the global max injector concurrency. [600] > Choose a SenderBase data cache option: 1. Allow SenderBase to determine cache time, (recommended) 2. Don't cache SenderBase data. 3. Specify your own cache time. [1]> 3 Enter the time, in seconds, to cache SenderBase data: [300]> 3600 Currently configured injectors: 1. main_qmqp (on main, 10.1.1.71) QMQP Port 8628 Private 2. main_smtp (on main, 10.1.1.71) SMTP Port 8025 Private Enter "NEW" to create a new injector, "EDIT" to modify, "DELETE" to remove , or "SETUP" to change global settings. []>
[0250] The following CLI example illustrates additional setup options for the user to specify for controlling the flow ofmessages.
Name : main_smtp Type: Private Interface: main (10.1.1.71/24) Port 8025 Protocol : SMTP Default Domain: Max Concurrency: 600 (TCP Queue: 1000) Max Message Size: 100M Bounce Profile: Default IPMM: off Enter one of the following commands to change this injector's settings: NAME, INTERFACE, LIMITS, HOSTACCESΞ , SETUP, BOUNCECONFIG, MASQUERADE, SETTLS, SETIPMM [] > setup Enter the default domain for email addresses without a fully qualified domain name . Enter the word "DELETE" to clear the setting and disable the addition of a default domain. []> Would you like the system to add a received header to each message received on this injector? [Y] > Would you like to enable SenderBase IP verification support? [N] > y Enter a timeout, in seconds, for SenderBase queries. Enter '0' to disable SenderBase IP verification. [5]> 3 Name : main_smtp Type: Private Interface: main (10.1.1.71/24) Port 8025 Protocol : SMTP Default Domain: Max Concurrency: 600 (TCP Queue: 1000) Max Message Size: 100M Bounce Profile: Default IPMM: off Enter one of the following commands to change this injector's settings : NAME, INTERFACE, LIMITS, HOSTACCESS , SETUP, BOUNCECONFIG, MASQUERADE, SETTLS, SETIPMM []> V. HARDWARE OVERVIEW A. General Hardware Overview
[0251] The approaches for managing connections and messages at a server by associating different actions for both different senders and different recipients described herein may be implemented in a variety of ways and the invention is not limited to any particular implementation. The approach may be integrated into an electronic mail system or a mail transport agent, or may be implemented as a stand-alone mechanism. Furthermore, the approach may be implemented in computer software, hardware, or a combination thereof. [0252] FIG. 6 is a block diagram that depicts a computer system 600 upon which an embodiment may be implemented. Computer system 600 includes a bus 602 or other communication mechanism for communicating information, and a processor 604 coupled with bus 602 for processing information. Computer system 600 also includes a main memory 606, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 602 for storing information and instructions to be executed by processor 604. Main memory 606 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 604. Computer system 600 further includes a read only memory (ROM) 608 or other static storage device coupled to bus 602 for storing static information and instructions for processor 604. A storage device 610, such as a magnetic disk or optical disk, is provided and coupled to bus 602 for storing information and instructions.
[0253] Computer system 600 may be coupled via bus 602 to a display 612, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 614, including alphanumeric and other keys, is coupled to bus 602 for communicating information and command selections to processor 604. Another type of user input device is cursor control 616, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 604 and for controlling cursor movement on display 612. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
[0254] The invention is related to the use of computer system 600 for implementing the techniques described herein. According to one embodiment, those techniques are performed by computer system 600 in response to processor 604 executing one or more sequences of one or more instructions contained in main memory 606. Such instructions may be read into main memory 606 from another machine-readable medium, such as storage device 610. Execution of the sequences of instructions contained in main memory 606 causes processor 604 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
[0255] The term "machine-readable medium" as used herein refers to any medium that participates in providing instructions to processor 604 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 610. Volatile media includes dynamic memory, such as main memory 606. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 602. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications. [0256] Common forms of machine-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read. [0257] Various forms of computer readable media may be involved in caπying one or more sequences of one or more instructions to processor 604 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 600 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data caπied in the infra-red signal and appropriate circuitry can place the data on bus 602. Bus 602 carries the data to main memory 606, from which processor 604 retrieves and executes the instructions. The instructions received by main memory 606 may optionally be stored on storage device 610 either before or after execution by processor 604.
[0258] Computer system 600 also includes a communication interface 618 coupled to bus 602. Communication interface 618 provides a two-way data communication coupling to a network link 620 that is connected to a local network 622. For example, communication interface 618 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a coπesponding type of telephone line. As another example, communication interface 618 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 618 sends and receives electrical, electromagnetic or optical signals that caπy digital data streams representing various types of information.
[0259] Network link 620 typically provides data communication through one or more networks to other data devices. For example, network link 620 may provide a connection through local network 622 to a host computer 624 or to data equipment operated by an Internet Service Provider (ISP) 626. ISP 626 in turn provides data communication services through the world wide packet data communication network now commonly refeπed to as the "Internet" 628. Local network 622 and Internet 628 both use electrical, electromagnetic or optical signals that caπy digital data streams. The signals through the various networks and the signals on network link 620 and through communication interface 618, which caπy the digital data to and from computer system 600, are exemplary forms of caπier waves transporting the information.
[0260] Computer system 600 can send messages and receive data, including program code, through the network(s), network link 620 and communication interface 618. In the Internet example, a server 630 might transmit a requested code for an application program through Internet 628, ISP 626, local network 622 and communication interface 618. [0261] The received code may be executed by processor 604 as it is received, and/or stored in storage device 610, or other non-volatile storage for later execution. In this manner, computer system 600 may obtain application code in the form of a carrier wave. B. Hardware Examples
[0262] The techniques disclosed herein can be implemented on devices that are used as a mail server between one network and another, such as between the network of a company and the Internet. Such devices may be refeπed to as mail gateway appliances (MGA's) or more generally as mail transfer agents (MTA's) because they act as a gateway between the networks and act as a mail server for sending and receiving email messages. As examples, the IronPort A-Series Appliances and C-Series Appliances produced by IronPort Systems, Inc., of San Bruno, California, can be used to implement one or more of the techniques described herein. These appliances are described in more detail below. However, the techniques described herein can be used with any suitable mechanism, not just IronPort' s MTA's or any other manufacturer's MTA's.
[0263] The IronPort A-Series family includes two mail transport agents, the A30 and A60, which provide high performance email delivery to a large number of recipients, such as for commercial email delivery of transaction confirmations or customer newsletters. The A30 can deliver 600,000 email messages per hour, and the A60 can deliver 1,000,000 messages per hour, both of which are much greater than can be achieved by traditional open- source mail transport agents (MTAs), such as general-purpose servers running sendmail or qmail. Mail transport agents such as the IronPort A-Series family of Messaging Gateway Appliances™ are sometimes refeπed to as "injectors" because such mail transport agents inject messages into another mail transport agents, such as by sending email through the Internet from a sender that is associated with one mail transport agent to a recipient that is associated with another mail transport agent. [0264] The IronPort C-Series family includes three email security appliances, the CIO, C30 and C60, which provide threat protection, block spam and viruses, and enable coφorate email policy enforcement. The email security appliances in the C-Series family are deployed between an organization's firewall and groupware servers, such as Exchange™, Notes™, and Group Wise™, to power and protect email flowing in from or out to the Internet. [0265] The different A-Series and C-Series appliances include some or all of the following IronPort technologies: Stackless Threads™, I/O-Driven Scheduling ™, AsyncFS™, Reputation Filters™, and SenderBase™.
[0266] The IronPort Stackless Threads™ technology allows a C-series email security appliance to handle up to 10,000 simultaneous connections. With Stackless Threads, each thread is allocated memory as needed, in contrast to traditional approaches in which each thread is allocated a fixed and dedicated memory stack that is typically very generous to avoid stack overflow eπors. The allocation of memory on an as needed basis with Stackless Threads more efficiently uses memory and increases concuπency while eliminating the risk of security holes and system crashes from stack overflows.
[0267] The IronPort I/O-Driven Scheduling ™ technology optimally schedules service for each connection. As with Stackless Threads, IronPort' s I/O Driven Scheduling allocates system resources as needed. Tasks are scheduled around the availability of transmission control protocol (TCP) connections for reading or writing, so that when a TCP connection becomes available, I/O-Driven Scheduling grants system resources to the associated task until such time as the connection is no longer capable of I/O. This approach avoids the needless rotation through multiple tasks that is characteristic of traditional preemptive multitasking operating systems in which a scheduler cycles through each task to ensure that no task is starved and to allocate a predetermined time slice of the CPU. Such traditional approaches are inefficient for Internet message delivery that is typically not bound by CPU processing, and thus the traditional approaches incur a substantial performance decrease due to excessive context switching. In addition, with I/O-Driven Scheduling, the thread switches happen at the completion of an I/O read or write, so that threads are not left hanging in the middle of an operation and the memory management in each thread is simplified. [0268] The IronPort AsyncFS™ technology provides an asynchronous file system, which is optimized for message queuing. In traditional messaging systems, each message is allocated a separate and unique file that must be written, read, and deleted. Managing these files in traditional approaches becomes prohibitive when receiving hundreds of thousands of messages per hour, and in addition, modifying any file involves multiple disk accesses to update data within a file and multiple disk accesses to update inodes (e.g., maps of pointers to each bloc of data within a file that are stored on disk). With AsyncFS, messages are stored in batches, not individual files, which reduces the number of basic read/write operations. Furthermore, each queue data structure, which governs the order of message delivery, doubles as an inode that maps where messages are stored on disk. These "inode queues" are stored in RAM instead of on disk, further reducing the read/write operations. In the event of a system disruption or failure that removes the inode queues from RAM, AsyncFS reads message data from disk as it rebuilds the inode queues in RAM and resume message delivery.
[0269] IronPort' s Reputation Filters™ are used to intelligently throttle, or even block, suspicious senders. The appliance receives inbound mail and performs a threat assessment of the sender, resulting in a reputation score generated by SenderBase, as described below. The appliance then applies mail flow policies that are specified by an administrator to the inbound mail based on the reputation score. More suspicious senders are automatically throttled or blocked, and recognized senders (e.g., customers or coφorate partners) are granted more generous policies, such as bypassing spam filters, larger message sizes, and TLS encryption. Reputation Filters™ allow for a flexible response, thereby minimizing the effects of denial of service attacks, directory harvest attacks, and fraudulent mail, along with reducing false positives.
[0270] IronPort' s Reputation Filters™ work with SenderBase™, a sender reputation service created by IronPort, and Bonded Sender™, an email certification program created by IronPort. SenderBase provides objective data about the identity of email senders to allow email administrators to identify and block IP addresses from which unsolicited commercial email originates or to verify the authenticity of legitimate incoming email from business partners, customers, or other important sources. SenderBase includes an open database that has been adopted by more than 13,000 ISPs, coφorations, and universities. SenderBase processes queries for more than 500 million messages per day to provide a real-time view into the global volume of mail being sent by any given IP address. SenderBase measures other parameters, such as whether an IP address is an open proxy, if mail receivers are sending spam complaints about the IP address, if its DNS resolves properly and accepts return mail, its country of origin, and its presence on a variety of blacklists. The parameters are used as input to a statistical algorithm that scores the reputation of the sender on a scale of-lO to +10.
[0271] The different A-Series and C-Series appliances include one or both of the following nonlronPort technologies: the Sophos™ anti- virus technology and the Brightmail™ anti-spam technology. The C-Series appliances and optionally the A60 appliance include the Sophos™ anti-virus technology. Sophos employs multiple techniques to detect and clean all major forms of viruses, including advanced emulation technology to detect polymoφhic viruses and an on-line decompressor for scanning multi-layer attachments. Administrators can take any of several actions to handle messages that are identified as being infection by Sophos. For example, actions include cleaning the message, dropping the attachment, modifying the subject header, deleting the entire infected message, sending an optional notification, or a combination of these actions. The Sophos engine shares information with the IronPort C-Series Mail Flow Monitor to provide real-time and historical reports. During a virus outbreak, the period from the start of the outbreak until an anti-virus identify file is deployed can be covered by IronPort' s content scanning technology to identify viruses based on known patterns, or messages can be deleted or archived until new identity files are updated.
[0272] The C-Series IronPort appliances include the Brightmail™ anti-spam technology, which is optimized to work with IronPort's AsyncOS™. Brightmail uses real-time methods to identify spam through Brightmail's Probe Network™ and generates approximately 30,000 new rules a day. Automatic rule updates are used, with rules automatically downloaded from the Brightmail servers typically every ten minutes to provide real-time protection. Administrators can take any of several actions to handle messages that are flagged as spam by Brightmail. The actions include sending the messages to a per-recipient web quarantine, marking up the subject header, adding an additional "X-header," sending the message to an alternate folder in the user's mailbox, deleting or bouncing the message, or a combination of these actions. The Brightmail system shares information with the IronPort C-Series Mail Flow Monitor to provide real-time and historical reports that are available at any time. VI. EXTENSIONS AND ALTERNATIVES [0273] In the foregoing description, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. For example, although examples have illustrated the use of network addresses and IP addresses as a particular type of network address, these types of sender identifiers are used for explanation puφoses only and embodiments of the invention are not limited to any particular type of network address or more generally any type of sender identifier. As another example, while the examples are described with reference to email or email messages, the approaches described herein can be applied to any type of electronic message, not just email messages. Thus, the specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. The invention includes other contexts and applications in which the mechanisms and processes described herein are available to other mechanisms, methods, programs, and processes.
[0274] Certain process steps are set forth herein in a particular order, and alphabetic and alphanumeric labels are used to identify steps. Unless specifically stated herein, the approaches herein are not limited to any particular order of caπying out such steps. The labels are used merely for convenient identification of steps, and are not intended to imply, specify or require a particular order of caπying out such steps. Other implementations may use more or fewer steps than those discussed herein.

Claims

CLAIMSWhat is claimed is:
1. A method for managing connections from different senders and email messages for different recipients at a message transfer agent (MTA), comprising: receiving at said server a first incoming connection from a first sender and a second incoming connection from a second sender, wherein said first sender is different than said second sender; based on said first incoming connection, determining a first sender identifier of a plurality of sender identifiers; based on said second incoming connection, determining a second sender identifier of said plurality of sender identifiers; based on said first sender identifier, inspecting a first mapping to identify a first accept action of a first plurality of actions, wherein said first mapping associates said plurality of sender identifiers with said first plurality of actions; based on said second sender identifier, inspecting said first mapping to identify a first reject action of said first plurality of actions; based on said first accept action, receiving one or more email messages over a first connection based on said first incoming connection; based on said first reject action, terminating a second connection based on said second incoming connection without receiving any email messages over said second connection; receiving at said MTA a first email message for a first recipient and a second email message for a second recipient, wherein said first recipient is different than said second recipient; based on said first email message, determining a first recipient identifier of a plurality of recipient identifiers; based on said second email message, determining a second recipient identifier of said plurality of recipient identifiers; based on said first recipient identifier, inspecting a second mapping to identify a second accept action of a second plurality of actions, wherein said second mapping associates said plurality of recipient identifiers with said second plurality of actions ; based on said second recipient identifier, inspecting said second mapping to identify a second reject action of said second plurality of actions; based on said second accept action, accepting said first email message for delivery to said first recipient; and based on said second reject action, rejecting said second email message for delivery to said second recipient.
2. A method for managing connections for receiving electronic messages at a server from different senders, comprising: receiving at said server a first incoming connection from a first sender and a second incoming connection from a second sender, wherein said first sender is different than said second sender; based on said first incoming connection, determining a first sender identifier of a plurality of sender identifiers; based on said second incoming connection, determining a second sender identifier of said plurality of sender identifiers; based on said first sender identifier, inspecting a mapping to identify a first action of a plurality of actions, wherein said mapping is stored on said server and associates said plurality of sender identifiers with said plurality of actions; based on said second sender identifier, inspecting said mapping to identify a second action of said plurality of actions; applying said first action to said first incoming connection; and applying said second action to said second incoming connection.
3. A method as recited in Claim 2, wherein said first sender identifier and said second sender identifier are each selected from the group consisting of a first set of two or more network addresses, a second set of two or more Internet Protocol (IP) addresses, a partial IP address, a first range of IP addresses, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, a network owner, an organization identifier, a reputation score, and a second range of reputation scores.
4. A method as recited in Claim 2, wherein: said first sender identifier is a first group sender identifier that is associated with a first individual sender identifier and a second individual sender identifier; and said second sender identifier is a second group sender identifier that is associated with a third individual sender identifier and a fourth individual sender identifier; and said first individual sender identifier, said second individual sender identifier, said third individual sender identifier, and said fourth individual sender identifier are each selected from the group consisting of a network address, an Internet Protocol (IP) address, a partial IP address, a first range of IP addresses, a primary domain, a subdomain, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, an organization identifier, a network owner, a reputation score, and a second range of reputation scores.
5. A method as recited in Claim 2, wherein: said mapping is an ordered listing of two or more rules, wherein: each rule of said two or more rules associates a particular sender identifier of the plurality of sender identifiers with a particular action of the plurality of actions; and said first sender identifier is included in both a first rule and a second rule rules of said two or more rules, wherein said first rule is listed before said second rule in said ordered listing of said two or more rules; inspecting said mapping to identify said first action comprises: based on said first sender identifier, searching said ordered listing to identify said first rule; and identifying said first action as said particular action associated with said first sender identifier in said first rule.
6. A method as recited in Claim 2, wherein: said first action is associated with a parameter that is selected from the group consisting of a first rate of recipients to be accepted for said first sender identifier, a second rate of electronic messages to be accepted for said first sender identifier, an electronic message size for said first sender identifier, and a number recipients per electronic message for said first sender identifier; and the method further comprises: based on said first incoming connection, establishing a first connection; receiving an electronic message over said first connection; identifying a recipient of said electronic message; based on said recipient matching a specified recipient, delivering said electronic message to said recipient even though said electronic message would otherwise not be delivered based said parameter.
7. A method as recited in Claim 2, wherein said first action and said second action are each selected from the group consisting of an accept action, a relay action, a reject action, and a refuse action.
8. A method for managing electronic messages received at a server for different recipients, comprising: receiving at said server a first electronic message for a first recipient and a second electronic message for a second recipient, wherein said first recipient is different than said second recipient; based on said first electronic message, determining a first recipient identifier of a plurality of recipient identifiers; based on said second electronic message, determining a second recipient identifier of said plurality of recipient identifiers; based on said first recipient identifier, inspecting a mapping to identify a first action of a plurality of actions, wherein said mapping is stored on said server and associates said plurality of recipient identifiers with said plurality of actions; based on said second recipient identifier, inspecting said mapping to identify a second action of said plurality of actions; applying said first action to said first electronic message; and applying said second action to said second electronic message.
9. A method as recited in Claim 8, wherein said first recipient identifier and said second recipient identifier are each selected from the group consisting of a first set of two or more full electronic addresses, a partial electronic address, a fully qualified domain name (FQDN), a partial FQDN, a second set of two or more usernames, and a partial username.
10. A method as recited in Claim 8, wherein: said mapping is an ordered listing of two or more rules, wherein: each rule of said two or more rules associates a particular recipient identifier of the plurality of recipient identifiers with a particular action of the plurality of actions; and said first recipient identifier is included in at least a first rule and a second rule of said two or more rules, wherein said first rule is listed before said second rule in said ordered listing of two or more rules; inspecting said mapping to identify said first action comprises: based on said first recipient identifier, searching said ordered listing to identify said first rule based on said first rule being listed before said second rule; and identifying said first action as said particular action associated with said first recipient identifier in said first rule.
11. A method as recited in Claim 8, wherein: said first action is associated with a parameter that is selected from the group consisting of a response code, a response text, and a banner text; and the method further comprises: based on said parameter, sending a response.
12. A method as recited in Claim 8, wherein said first action and said second action are each selected from the group consisting of an accept action and a reject action.
13. A machine-readable medium caπying one or more sequences of instructions for managing connections for receiving electronic messages at a server from different senders, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of: receiving at said server a first incoming connection from a first sender and a second incoming connection from a second sender, wherein said first sender is different than said second sender; based on said first incoming connection, determining a first sender identifier of a plurality of sender identifiers; based on said second incoming connection, determining a second sender identifier of said plurality of sender identifiers; based on said first sender identifier, inspecting a mapping to identify a first action of a plurality of actions, wherein said mapping is stored on said server and associates said plurality of sender identifiers with said plurality of actions; based on said second sender identifier, inspecting said mapping to identify a second action of said plurality of actions; applying said first action to said first incoming connection; and applying said second action to said second incoming connection.
14. A machine-readable medium as recited in Claim 13, wherein said first sender identifier and said second sender identifier are each selected from the group consisting of a first set of two or more network addresses, a second set of two or more Internet Protocol (IP) addresses, a partial IP address, a first range of IP addresses, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, a network owner, an organization identifier, a reputation score, and a second range of reputation scores.
15. A machine-readable medium as recited in Claim 13, wherein: said first sender identifier is a first group sender identifier that is associated with a first individual sender identifier and a second individual sender identifier; and said second sender identifier is a second group sender identifier that is associated with a third individual sender identifier and a fourth individual sender identifier; and said first individual sender identifier, said second individual sender identifier, said third individual sender identifier, and said fourth individual sender identifier are each selected from the group consisting of a network address, an Internet Protocol (IP) address, a partial IP address, a first range of IP addresses, a primary domain, a subdomain, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, an organization identifier, a network owner, a reputation score, and a second range of reputation scores.
16. A machine-readable medium as recited in Claim 13, wherein: said mapping is an ordered listing of two or more rules, wherein: each rule of said two or more rules associates a particular sender identifier of the plurality of sender identifiers with a particular action of the plurality of actions; and said first sender identifier is included in both a first rule and a second rule rules of said two or more rules, wherein said first rule is listed before said second rule in said ordered listing of said two or more rules; wherein the instructions for inspecting said mapping to identify said first action further comprise instructions which, when executed by the one or more processors, cause the one or more processors to perform the steps of: based on said first sender identifier, searching said ordered listing to identify said first rule; and identifying said first action as said particular action associated with said first sender identifier in said first rule.
17. A machine-readable medium as recited in Claim 13, wherein: said first action is associated with a parameter that is selected from the group consisting of a first rate of recipients to be accepted for said first sender identifier, a second rate of electronic messages to be accepted for said first sender identifier, an electronic message size for said first sender identifier, and a number recipients per electronic message for said first sender identifier; and the machine-readable medium further comprises instructions which, when executed by the one or more processors, cause the one or more processors to perform the steps of: based on said first incoming connection, establishing a first connection; receiving an electronic message over said first connection; identifying a recipient of said electronic message; based on said recipient matching a specified recipient, delivering said electronic message to said recipient even though said electronic message would otherwise not be delivered based said parameter.
18. A machine-readable medium as recited in Claim 13, wherein said first action and said second action are each selected from the group consisting of an accept action, a relay action, a reject action, and a refuse action.
19. A machine-readable medium caπying one or more sequences of instructions for managing electronic messages received at a server for different recipients, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of: receiving at said server a first electronic message for a first recipient and a second electronic message for a second recipient, wherein said first recipient is different than said second recipient; based on said first electronic message, determining a first recipient identifier of a plurality of recipient identifiers; based on said second electronic message, determining a second recipient identifier of said plurality of recipient identifiers; based on said first recipient identifier, inspecting a mapping to identify a first action of a plurality of actions, wherein said mapping is stored on said server and associates said plurality of recipient identifiers with said plurality of actions; based on said second recipient identifier, inspecting said mapping to identify a second action of said plurality of actions; applying said first action to said first electronic message; and applying said second action to said second electronic message.
20. A machine-readable medium as recited in Claim 19, wherein said first recipient identifier and said second recipient identifier are each selected from the group consisting of a first set of two or more full electronic addresses, a partial electronic address, a fully qualified domain name (FQDN), a partial FQDN, a second set of two or more usernames, and a partial username.
21. A machine-readable medium as recited in Claim 19, wherein: said mapping is an ordered listing of two or more rules, wherein: each rule of said two or more rules associates a particular recipient identifier of the plurality of recipient identifiers with a particular action of the plurality of actions; and said first recipient identifier is included in at least a first rule and a second rule of said two or more rules, wherein said first rule is listed before said second rule in said ordered listing of two or more rules; wherein the instructions for inspecting said mapping to identify said first action further comprise instructions which, when executed by the one or more processors, cause the one or more processors to perform the steps of: based on said first recipient identifier, searching said ordered listing to identify said first rule based on said first rule being listed before said second rule; and identifying said first action as said particular action associated with said first recipient identifier in said first rule.
22. A machine-readable medium as recited in Claim 19, wherein: said first action is associated with a parameter that is selected from the group consisting of a response code, a response text, and a banner text; and the machine-readable medium further comprises instructions which, when executed by the one or more processors, cause the one or more processors to perform the step of: based on said parameter, sending a response.
23. A machine-readable medium as recited in Claim 19, wherein said first action and said second action are each selected from the group consisting of an accept action and a reject action.
24. An apparatus comprising: a processor; and a memory coupled to the processor, the memory containing one or more sequences of instructions for managing connections for receiving electronic messages at a server from different senders, wherein execution of the one or more sequences of instructions by the processor causes the processor to perform the steps of: receiving at said server a first incoming connection from a first sender and a second incoming connection from a second sender, wherein said first sender is different than said second sender; based on said first incoming connection, determining a first sender identifier of a plurality of sender identifiers; based on said second incoming connection, determining a second sender identifier of said plurality of sender identifiers; based on said first sender identifier, inspecting a mapping to identify a first action of a plurality of actions, wherein said mapping is stored on said server and associates said plurality of sender identifiers with said plurality of actions; based on said second sender identifier, inspecting said mapping to identify a second action of said plurality of actions; applying said first action to said first incoming connection; and applying said second action to said second incoming connection.
25. An apparatus as recited in Claim 24, wherein said first sender identifier and said second sender identifier are each selected from the group consisting of a first set of two or more network addresses, a second set of two or more Intemet Protocol (IP) addresses, a partial IP address, a first range of IP addresses, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, a network owner, an organization identifier, a reputation score, and a second range of reputation scores.
26. An apparatus as recited in Claim 24, wherein: said first sender identifier is a first group sender identifier that is associated with a first individual sender identifier and a second individual sender identifier; and said second sender identifier is a second group sender identifier that is associated with a third individual sender identifier and a fourth individual sender identifier; and said first individual sender identifier, said second individual sender identifier, said third individual sender identifier, and said fourth individual sender identifier are each selected from the group consisting of a network address, an Internet Protocol (IP) address, a partial IP address, a first range of IP addresses, a primary domain, a subdomain, a fully qualified domain name (FQDN), a partial FQDN, a classless inter-domain routing (CIDR) block, a partial CIDR block, a subnet, an organization identifier, a network owner, a reputation score, and a second range of reputation scores.
27. An apparatus as recited in Claim 24, wherein: said mapping is an ordered listing of two or more rules, wherein: each rule of said two or more rules associates a particular sender identifier of the plurality of sender identifiers with a particular action of the plurality of actions; and said first sender identifier is included in both a first rule and a second rule rules of said two or more rules, wherein said first rule is listed before said second rule in said ordered listing of said two or more rules; wherein the instructions for inspecting said mapping to identify said first action further comprise instructions which, when executed by the processor, cause the processor to perform the steps of: based on said first sender identifier, searching said ordered listing to identify said first rule; and identifying said first action as said particular action associated with said first sender identifier in said first mle.
28. An apparatus as recited in Claim 24, wherein: said first action is associated with a parameter that is selected from the group consisting of a first rate of recipients to be accepted for said first sender identifier, a second rate of electronic messages to be accepted for said first sender identifier, an electronic message size for said first sender identifier, and a number recipients per electronic message for said first sender identifier; and the memory further contains further contains one or more sequences of instructions which, when executed by the processor, cause the processor to perform the steps of: based on said first incoming connection, establishing a first connection; receiving an electronic message over said first connection; identifying a recipient of said electronic message; based on said recipient matching a specified recipient, delivering said electronic message to said recipient even though said electronic message would otherwise not be delivered based said parameter.
29. An apparatus as recited in Claim 24, wherein said first action and said second action are each selected from the group consisting of an accept action, a relay action, a reject action, and a refuse action.
30. An apparatus comprising: a processor; and a memory coupled to the processor, the memory containing one or more sequences of instructions for managing electronic messages received at a server for different recipients, wherein execution of the one or more sequences of instructions by the processor causes the processor to perform the steps of: receiving at said server a first electronic message for a first recipient and a second electronic message for a second recipient, wherein said first recipient is different than said second recipient; based on said first electronic message, determining a first recipient identifier of a plurality of recipient identifiers; based on said second electronic message, determining a second recipient identifier of said plurality of recipient identifiers; based on said first recipient identifier, inspecting a mapping to identify a first action of a plurality of actions, wherein said mapping is stored on said server and associates said plurality of recipient identifiers with said plurality of actions; based on said second recipient identifier, inspecting said mapping to identify a second action of said plurality of actions; applying said first action to said first electronic message; and applying said second action to said second electronic message.
31. An apparatus as recited in Claim 30, wherein said first recipient identifier and said second recipient identifier are each selected from the group consisting of a first set of two or more full electronic addresses, a partial electronic address, a fully qualified domain name (FQDN), a partial FQDN, a second set of two or more usernames, and a partial username.
32. An apparatus as recited in Claim 30, wherein: said mapping is an ordered listing of two or more rules, wherein: each rule of said two or more rules associates a particular recipient identifier of the plurality of recipient identifiers with a particular action of the plurality of actions; and said first recipient identifier is included in at least a first rule and a second rule of said two or more rules, wherein said first rule is listed before said second rule in said ordered listing of two or more rules; wherein the instructions for inspecting said mapping to identify said first action further comprise instructions which, when executed by the processor, cause the processor to perform the steps of: based on said first recipient identifier, searching said ordered listing to identify said first rule based on said first rule being listed before said second rule; and identifying said first action as said particular action associated with said first recipient identifier in said first rule.
33. An apparatus as recited in Claim 30, wherein: said first action is associated with a parameter that is selected from the group consisting of a response code, a response text, and a banner text; and the memory further contains one or more sequences of instructions which, when executed by the processor, cause the processor to perform the step of: based on said parameter, sending a response.
34. An apparatus as recited in Claim 30, wherein said first action and said second action are each selected from the group consisting of an accept action and a reject action.
PCT/US2005/018999 2004-05-29 2005-05-31 Method and apparatus for managing connections and electronic messages WO2005119484A2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US57565804P 2004-05-29 2004-05-29
US60/575,658 2004-05-29
US11/140,314 2005-05-27
US11/140,314 US7873695B2 (en) 2004-05-29 2005-05-27 Managing connections and messages at a server by associating different actions for both different senders and different recipients

Publications (2)

Publication Number Publication Date
WO2005119484A2 true WO2005119484A2 (en) 2005-12-15
WO2005119484A3 WO2005119484A3 (en) 2007-04-05

Family

ID=35463555

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2005/018999 WO2005119484A2 (en) 2004-05-29 2005-05-31 Method and apparatus for managing connections and electronic messages

Country Status (2)

Country Link
US (1) US7873695B2 (en)
WO (1) WO2005119484A2 (en)

Families Citing this family (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219620B2 (en) * 2001-02-20 2012-07-10 Mcafee, Inc. Unwanted e-mail filtering system including voting feedback
JP4541848B2 (en) * 2004-11-22 2010-09-08 株式会社日立製作所 User terminal connection control method and apparatus
US7610344B2 (en) * 2004-12-13 2009-10-27 Microsoft Corporation Sender reputations for spam prevention
US20060224673A1 (en) * 2005-03-30 2006-10-05 Microsoft Corporation Throttling inbound electronic messages in a message processing system
US8103868B2 (en) * 2005-04-20 2012-01-24 M-Qube, Inc. Sender identification system and method
US8312074B2 (en) * 2005-05-26 2012-11-13 Bytemobile, Inc. Method for multipart encoding
US7610345B2 (en) 2005-07-28 2009-10-27 Vaporstream Incorporated Reduced traceability electronic message system and method
US9282081B2 (en) 2005-07-28 2016-03-08 Vaporstream Incorporated Reduced traceability electronic message system and method
US20070143409A1 (en) * 2005-12-16 2007-06-21 Microsoft Corporation Email transport rule recipient tree condition
US8219623B2 (en) * 2005-12-16 2012-07-10 Microsoft Corporation Email transport rule per-recipient condition
US20070143413A1 (en) * 2005-12-16 2007-06-21 Microsoft Corporation Email transport rule recipient flat declaration condition
US8646025B2 (en) * 2005-12-21 2014-02-04 Mcafee, Inc. Automated local exception rule generation system, method and computer program product
US8601160B1 (en) * 2006-02-09 2013-12-03 Mcafee, Inc. System, method and computer program product for gathering information relating to electronic content utilizing a DNS server
US8601064B1 (en) * 2006-04-28 2013-12-03 Trend Micro Incorporated Techniques for defending an email system against malicious sources
US7849502B1 (en) 2006-04-29 2010-12-07 Ironport Systems, Inc. Apparatus for monitoring network traffic
US20080082662A1 (en) * 2006-05-19 2008-04-03 Richard Dandliker Method and apparatus for controlling access to network resources based on reputation
US20070297408A1 (en) * 2006-06-22 2007-12-27 Jooyong Kim Message control system in a shared hosting environment
WO2008008408A2 (en) * 2006-07-12 2008-01-17 Spectrarep System and method for managing emergency notifications over a network
US20080028029A1 (en) * 2006-07-31 2008-01-31 Hart Matt E Method and apparatus for determining whether an email message is spam
JP2008123318A (en) * 2006-11-14 2008-05-29 Sony Ericsson Mobilecommunications Japan Inc Communication terminal, and destination right/wrong determining method and program thereof
US8583731B1 (en) 2006-11-17 2013-11-12 Open Invention Network Llc System and method for analyzing and filtering journaled electronic mail
US7818343B1 (en) * 2007-03-29 2010-10-19 Trend Micro Inc. Apparatus and methods for reputation-based filtering on a communication network
US20080270544A1 (en) * 2007-04-27 2008-10-30 Howe Anthony C Greylisting optimizations for electronic mail filtering
CA2597377C (en) * 2007-08-15 2010-11-16 Primus Telecommunications Canada Inc. Call screening system and method
US8060569B2 (en) * 2007-09-27 2011-11-15 Microsoft Corporation Dynamic email directory harvest attack detection and mitigation
US8381262B2 (en) * 2008-02-20 2013-02-19 Yahoo! Inc. Blocking of spoofed E-mail
US8826450B2 (en) * 2008-09-19 2014-09-02 Yahoo! Inc. Detecting bulk fraudulent registration of email accounts
US8321516B2 (en) * 2008-09-30 2012-11-27 Aol Inc. Systems and methods for creating and updating reputation records
US20110252043A1 (en) * 2008-10-01 2011-10-13 Network Box Corporation Limited Electronic communication control
US8856376B1 (en) * 2008-12-18 2014-10-07 Bank Of America Corporation Stabilization tool for a high-capacity network infrastructure
US20100161737A1 (en) * 2008-12-23 2010-06-24 Microsoft Corporation Techniques to manage electronic mail personal archives
US20100235915A1 (en) * 2009-03-12 2010-09-16 Nasir Memon Using host symptoms, host roles, and/or host reputation for detection of host infection
US9258269B1 (en) * 2009-03-25 2016-02-09 Symantec Corporation Methods and systems for managing delivery of email to local recipients using local reputations
US8521908B2 (en) * 2009-04-07 2013-08-27 Verisign, Inc. Existent domain name DNS traffic capture and analysis
US8468220B2 (en) * 2009-04-21 2013-06-18 Techguard Security Llc Methods of structuring data, pre-compiled exception list engines, and network appliances
US8495151B2 (en) * 2009-06-05 2013-07-23 Chandra Bodapati Methods and systems for determining email addresses
US8635683B2 (en) * 2009-12-04 2014-01-21 International Business Machines Corporation Method to improve fraud detection on conference calling systems by detecting re-use of conference moderator passwords
US20120078727A1 (en) * 2009-12-30 2012-03-29 Wei-Yeh Lee Facilitation of user management of unsolicited server operations via modification thereof
US20120084348A1 (en) * 2009-12-30 2012-04-05 Wei-Yeh Lee Facilitation of user management of unsolicited server operations
US20120084349A1 (en) * 2009-12-30 2012-04-05 Wei-Yeh Lee User interface for user management and control of unsolicited server operations
US20110161172A1 (en) * 2009-12-30 2011-06-30 Wei-Yeh Lee System and method for providing user control of the user's network usage data and personal profile information
US20120084151A1 (en) * 2009-12-30 2012-04-05 Kozak Frank J Facilitation of user management of unsolicited server operations and extensions thereto
US8706822B2 (en) * 2010-06-23 2014-04-22 Microsoft Corporation Delivering messages from message sources to subscribing recipients
US8990316B1 (en) * 2010-11-05 2015-03-24 Amazon Technologies, Inc. Identifying message deliverability problems using grouped message characteristics
US8503925B2 (en) 2011-02-02 2013-08-06 Tv Band Service Llc Flexibly targeting information sent over a broadcast communications medium
US10742591B2 (en) 2011-07-06 2020-08-11 Akamai Technologies Inc. System for domain reputation scoring
US11201848B2 (en) 2011-07-06 2021-12-14 Akamai Technologies, Inc. DNS-based ranking of domain names
US9843601B2 (en) 2011-07-06 2017-12-12 Nominum, Inc. Analyzing DNS requests for anomaly detection
US9141887B2 (en) 2011-10-31 2015-09-22 Hewlett-Packard Development Company, L.P. Rendering permissions for rendering content
US20130185364A1 (en) * 2012-01-18 2013-07-18 Rajesh Bhatia Email applications
US20130275532A1 (en) * 2012-04-17 2013-10-17 Vaporstream Incorporated Electronic Message Content Party Restriction System and Method
US9462080B2 (en) 2012-04-27 2016-10-04 Hewlett-Packard Development Company, L.P. Management service to manage a file
US9253124B2 (en) 2012-05-15 2016-02-02 TV Band Service, LLC Techniques for sending and relaying information over broadcast and non-broadcast communications media
US8938511B2 (en) 2012-06-12 2015-01-20 International Business Machines Corporation Method and apparatus for detecting unauthorized bulk forwarding of sensitive data over a network
US9537706B2 (en) 2012-08-20 2017-01-03 Plentyoffish Media Ulc Apparatus, method and article to facilitate matching of clients in a networked environment
US8667074B1 (en) * 2012-09-11 2014-03-04 Bradford L. Farkas Systems and methods for email tracking and email spam reduction using dynamic email addressing schemes
US8918473B1 (en) * 2012-10-09 2014-12-23 Whatsapp Inc. System and method for detecting unwanted content
CN103078752B (en) * 2012-12-27 2016-03-30 华为技术有限公司 A kind of method, device and equipment detecting e-mail attack
US11568008B2 (en) 2013-03-13 2023-01-31 Plentyoffish Media Ulc Apparatus, method and article to identify discrepancies between clients and in response prompt clients in a networked environment
US10430894B2 (en) 2013-03-21 2019-10-01 Khoros, Llc Gamification for online social communities
US20140324987A1 (en) * 2013-04-28 2014-10-30 Xiao Long Zhang Method for communicating with a public id and public id assistant device
US9672289B1 (en) 2013-07-23 2017-06-06 Plentyoffish Media Ulc Apparatus, method and article to facilitate matching of clients in a networked environment
US10742584B2 (en) * 2013-09-30 2020-08-11 Rakuten, Inc. Email-transmission setting device, email-transmission setting method, program for email-transmission setting device, and storage medium
US9870465B1 (en) 2013-12-04 2018-01-16 Plentyoffish Media Ulc Apparatus, method and article to facilitate automatic detection and removal of fraudulent user information in a network environment
US10540607B1 (en) 2013-12-10 2020-01-21 Plentyoffish Media Ulc Apparatus, method and article to effect electronic message reply rate matching in a network environment
US8949283B1 (en) 2013-12-23 2015-02-03 Google Inc. Systems and methods for clustering electronic messages
US9542668B2 (en) 2013-12-30 2017-01-10 Google Inc. Systems and methods for clustering electronic messages
US9767189B2 (en) 2013-12-30 2017-09-19 Google Inc. Custom electronic message presentation based on electronic message category
US9152307B2 (en) 2013-12-31 2015-10-06 Google Inc. Systems and methods for simultaneously displaying clustered, in-line electronic messages in one display
US9306893B2 (en) 2013-12-31 2016-04-05 Google Inc. Systems and methods for progressive message flow
US9124546B2 (en) * 2013-12-31 2015-09-01 Google Inc. Systems and methods for throttling display of electronic messages
US10033679B2 (en) 2013-12-31 2018-07-24 Google Llc Systems and methods for displaying unseen labels in a clustering in-box environment
US9509682B2 (en) * 2014-01-10 2016-11-29 The Board Of Regents Of The Nevada System Of Higher Education On Behalf Of The University Of Nevada, Las Vegas Obscuring usernames during a login process
US20150220997A1 (en) * 2014-02-03 2015-08-06 Go Daddy Operating Company, LLC Reputation Tiers for a Marketing Campaign
US9264418B1 (en) * 2014-02-20 2016-02-16 Amazon Technologies, Inc. Client-side spam detection and prevention
US10108968B1 (en) * 2014-03-05 2018-10-23 Plentyoffish Media Ulc Apparatus, method and article to facilitate automatic detection and removal of fraudulent advertising accounts in a network environment
US9237426B2 (en) * 2014-03-25 2016-01-12 Location Labs, Inc. Device messaging attack detection and control system and method
US10387795B1 (en) 2014-04-02 2019-08-20 Plentyoffish Media Inc. Systems and methods for training and employing a machine learning system in providing service level upgrade offers
US10044629B1 (en) * 2014-09-22 2018-08-07 Amazon Technologies, Inc. Dynamic TTL based on endpoint health checking
US9843570B2 (en) * 2014-11-05 2017-12-12 Datawatch Systems, Inc. System and method for providing security monitoring
US20160156579A1 (en) * 2014-12-01 2016-06-02 Google Inc. Systems and methods for estimating user judgment based on partial feedback and applying it to message categorization
RU2610584C2 (en) * 2015-05-25 2017-02-13 Общество С Ограниченной Ответственностью "Яндекс" Electronic message processing method and server used therein
US20180018703A1 (en) * 2016-07-14 2018-01-18 Facebook, Inc. User privacy in an electronic message campaign
US20180077204A1 (en) * 2016-09-15 2018-03-15 Takeru Inoue Information processing terminal, communication system, information processing method, and recording medium
US10855635B2 (en) * 2016-11-14 2020-12-01 Microsoft Technology Licensing, Llc Electronic mail (e-mail) system support for messages with different traffic types
US10902462B2 (en) 2017-04-28 2021-01-26 Khoros, Llc System and method of providing a platform for managing data content campaign on social networks
US11726822B2 (en) 2017-06-05 2023-08-15 Umajin Inc. Systems and methods for providing digital twin-enabled applications
US11922564B2 (en) 2017-06-05 2024-03-05 Umajin Inc. Generative content system that supports location-based services and methods therefor
US11570128B2 (en) 2017-10-12 2023-01-31 Spredfast, Inc. Optimizing effectiveness of content in electronic messages among a system of networked computing device
US10785222B2 (en) 2018-10-11 2020-09-22 Spredfast, Inc. Credential and authentication management in scalable data networks
US10999278B2 (en) 2018-10-11 2021-05-04 Spredfast, Inc. Proxied multi-factor authentication using credential and authentication management in scalable data networks
US11470161B2 (en) 2018-10-11 2022-10-11 Spredfast, Inc. Native activity tracking using credential and authentication management in scalable data networks
US11050704B2 (en) 2017-10-12 2021-06-29 Spredfast, Inc. Computerized tools to enhance speed and propagation of content in electronic messages among a system of networked computing devices
US10346449B2 (en) 2017-10-12 2019-07-09 Spredfast, Inc. Predicting performance of content and electronic messages among a system of networked computing devices
US10601937B2 (en) * 2017-11-22 2020-03-24 Spredfast, Inc. Responsive action prediction based on electronic messages among a system of networked computing devices
US10505871B1 (en) * 2017-11-30 2019-12-10 Sandeep Jain Future messaging maximizing contextual relevancy and minimizing information overload based distractions
US11061900B2 (en) 2018-01-22 2021-07-13 Spredfast, Inc. Temporal optimization of data operations using distributed search and server management
US10594773B2 (en) 2018-01-22 2020-03-17 Spredfast, Inc. Temporal optimization of data operations using distributed search and server management
US10742595B2 (en) 2018-04-20 2020-08-11 Pulse Secure, Llc Fully qualified domain name-based traffic control for virtual private network access control
CN110611723B (en) * 2018-06-15 2021-05-11 华为技术有限公司 Scheduling method and device of service resources
US10855657B2 (en) 2018-10-11 2020-12-01 Spredfast, Inc. Multiplexed data exchange portal interface in scalable data networks
US11477028B2 (en) 2019-04-15 2022-10-18 Pulse Secure, Llc Preventing account lockout through request throttling
US10931540B2 (en) 2019-05-15 2021-02-23 Khoros, Llc Continuous data sensing of functional states of networked computing devices to determine efficiency metrics for servicing electronic messages asynchronously
US11128589B1 (en) 2020-09-18 2021-09-21 Khoros, Llc Gesture-based community moderation
US11438289B2 (en) 2020-09-18 2022-09-06 Khoros, Llc Gesture-based community moderation
US11627100B1 (en) 2021-10-27 2023-04-11 Khoros, Llc Automated response engine implementing a universal data space based on communication interactions via an omnichannel electronic data channel
US11438282B2 (en) 2020-11-06 2022-09-06 Khoros, Llc Synchronicity of electronic messages via a transferred secure messaging channel among a system of various networked computing devices
US11924375B2 (en) 2021-10-27 2024-03-05 Khoros, Llc Automated response engine and flow configured to exchange responsive communication data via an omnichannel electronic communication channel independent of data source
CN112199865B (en) * 2020-11-11 2022-03-22 西南科技大学 SBR-based ray tracking method for multilayer closed cabin, storage medium and terminal
US11714629B2 (en) 2020-11-19 2023-08-01 Khoros, Llc Software dependency management
US11792224B2 (en) 2021-05-26 2023-10-17 Bank Of America Corporation Information security system and method for phishing threat detection using tokens
US20230199022A1 (en) * 2021-12-16 2023-06-22 Paypal, Inc. Security engine audit rules to prevent incorrect network address blocking

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052709A (en) * 1997-12-23 2000-04-18 Bright Light Technologies, Inc. Apparatus and method for controlling delivery of unsolicited electronic mail
US6072942A (en) * 1996-09-18 2000-06-06 Secure Computing Corporation System and method of electronic mail filtering using interconnected nodes
US6321267B1 (en) * 1999-11-23 2001-11-20 Escom Corporation Method and apparatus for filtering junk email
US6330590B1 (en) * 1999-01-05 2001-12-11 William D. Cotten Preventing delivery of unwanted bulk e-mail
US6421709B1 (en) * 1997-12-22 2002-07-16 Accepted Marketing, Inc. E-mail filter and method thereof
US6546416B1 (en) * 1998-12-09 2003-04-08 Infoseek Corporation Method and system for selectively blocking delivery of bulk electronic mail
US20030167402A1 (en) * 2001-08-16 2003-09-04 Stolfo Salvatore J. System and methods for detecting malicious email transmission
US20030172291A1 (en) * 2002-03-08 2003-09-11 Paul Judge Systems and methods for automated whitelisting in monitored communications
US20030191969A1 (en) * 2000-02-08 2003-10-09 Katsikas Peter L. System for eliminating unauthorized electronic mail
US6654787B1 (en) * 1998-12-31 2003-11-25 Brightmail, Incorporated Method and apparatus for filtering e-mail
US20040054741A1 (en) * 2002-06-17 2004-03-18 Mailport25, Inc. System and method for automatically limiting unwanted and/or unsolicited communication through verification
US6732149B1 (en) * 1999-04-09 2004-05-04 International Business Machines Corporation System and method for hindering undesired transmission or receipt of electronic messages

Family Cites Families (160)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319776A (en) * 1990-04-19 1994-06-07 Hilgraeve Corporation In transit detection of computer virus with safeguard
GB2283341A (en) * 1993-10-29 1995-05-03 Sophos Plc Central virus checker for computer network.
US5715466A (en) * 1995-02-14 1998-02-03 Compuserve Incorporated System for parallel foreign language communication over a computer network
US5805810A (en) 1995-04-27 1998-09-08 Maxwell; Robert L. Apparatus and methods for converting an electronic mail to a postal mail at the receiving station
JP3590143B2 (en) 1995-07-28 2004-11-17 株式会社東芝 Email transfer device
US5889943A (en) * 1995-09-26 1999-03-30 Trend Micro Incorporated Apparatus and method for electronic mail virus detection and elimination
US5623600A (en) * 1995-09-26 1997-04-22 Trend Micro, Incorporated Virus detection and removal apparatus for computer networks
US5828881A (en) 1995-11-09 1998-10-27 Chromatic Research, Inc. System and method for stack-based processing of multiple real-time audio tasks
US5926462A (en) * 1995-11-16 1999-07-20 Loran Network Systems, Llc Method of determining topology of a network of objects which compares the similarity of the traffic sequences/volumes of a pair of devices
US6453327B1 (en) 1996-06-10 2002-09-17 Sun Microsystems, Inc. Method and apparatus for identifying and discarding junk electronic mail
US5802178A (en) 1996-07-30 1998-09-01 Itt Industries, Inc. Stand alone device for providing security within computer networks
US5832208A (en) 1996-09-05 1998-11-03 Cheyenne Software International Sales Corp. Anti-virus agent for use with databases and mail servers
US6003084A (en) 1996-09-13 1999-12-14 Secure Computing Corporation Secure network proxy for connecting entities
US5983350A (en) 1996-09-18 1999-11-09 Secure Computing Corporation Secure firewall supporting different levels of authentication based on address or encryption status
US5915087A (en) * 1996-12-12 1999-06-22 Secure Computing Corporation Transparent security proxy for unreliable message exchange protocols
US6408336B1 (en) * 1997-03-10 2002-06-18 David S. Schneider Distributed administration of access to information
US5983270A (en) 1997-03-11 1999-11-09 Sequel Technology Corporation Method and apparatus for managing internetwork and intranetwork activity
US6539430B1 (en) * 1997-03-25 2003-03-25 Symantec Corporation System and method for filtering data received by a computer system
US6212558B1 (en) * 1997-04-25 2001-04-03 Anand K. Antur Method and apparatus for configuring and managing firewalls and security devices
US6341309B1 (en) * 1997-05-27 2002-01-22 Novell, Inc. Firewall system for quality of service management
US6578077B1 (en) 1997-05-27 2003-06-10 Novell, Inc. Traffic monitoring tool for bandwidth management
US5968176A (en) 1997-05-29 1999-10-19 3Com Corporation Multilayer firewall system
US7778877B2 (en) * 2001-07-09 2010-08-17 Linkshare Corporation Enhanced network based promotional tracking system
US6073142A (en) * 1997-06-23 2000-06-06 Park City Group Automated post office based rule analysis of e-mail messages and other data objects for controlled distribution in network environments
US6389534B1 (en) * 1997-06-30 2002-05-14 Taher Elgamal Cryptographic policy filters and policy control method and apparatus
US6131110A (en) 1997-07-11 2000-10-10 International Business Machines Corporation System and method for predicting user interest in unaccessed site by counting the number of links to the unaccessed sites in previously accessed sites
US5958005A (en) 1997-07-17 1999-09-28 Bell Atlantic Network Services, Inc. Electronic mail security
US7117358B2 (en) 1997-07-24 2006-10-03 Tumbleweed Communications Corp. Method and system for filtering communication
ATE444614T1 (en) 1997-07-24 2009-10-15 Axway Inc EMAIL FIREWALL
US7127741B2 (en) 1998-11-03 2006-10-24 Tumbleweed Communications Corp. Method and system for e-mail message transmission
US6073165A (en) * 1997-07-29 2000-06-06 Jfax Communications, Inc. Filtering computer network messages directed to a user's e-mail box based on user defined filters, and forwarding a filtered message to the user's receiver
US6006268A (en) * 1997-07-31 1999-12-21 Cisco Technology, Inc. Method and apparatus for reducing overhead on a proxied connection
US5999967A (en) 1997-08-17 1999-12-07 Sundsted; Todd Electronic mail filtering by electronic stamp
US6591291B1 (en) * 1997-08-28 2003-07-08 Lucent Technologies Inc. System and method for providing anonymous remailing and filtering of electronic mail
US6266664B1 (en) * 1997-10-01 2001-07-24 Rulespace, Inc. Method for scanning, analyzing and rating digital information content
US6393568B1 (en) * 1997-10-23 2002-05-21 Entrust Technologies Limited Encryption and decryption system and method with content analysis provision
US7418731B2 (en) * 1997-11-06 2008-08-26 Finjan Software, Ltd. Method and system for caching at secure gateways
US6393465B2 (en) * 1997-11-25 2002-05-21 Nixmail Corporation Junk electronic mail detector and eliminator
US6484261B1 (en) 1998-02-17 2002-11-19 Cisco Technology, Inc. Graphical network security policy management
JPH11261627A (en) * 1998-03-09 1999-09-24 Fujitsu Ltd Electronic mail distributor
US6233618B1 (en) * 1998-03-31 2001-05-15 Content Advisor, Inc. Access control of networked data
US6161130A (en) 1998-06-23 2000-12-12 Microsoft Corporation Technique which utilizes a probabilistic classifier to detect "junk" e-mail by automatically updating a training and re-training the classifier based on the updated training set
JP3225924B2 (en) * 1998-07-09 2001-11-05 日本電気株式会社 Communication quality control device
US6192114B1 (en) * 1998-09-02 2001-02-20 Cbt Flint Partners Method and apparatus for billing a fee to a party initiating an electronic mail communication when the party is not on an authorization list associated with the party to whom the communication is directed
US6321264B1 (en) 1998-08-28 2001-11-20 3Com Corporation Network-performance statistics using end-node computer systems
US6587550B2 (en) * 1998-09-02 2003-07-01 Michael O. Council Method and apparatus for enabling a fee to be charged to a party initiating an electronic mail communication when the party is not on an authorization list associated with the party to whom the communication is directed
US6434600B2 (en) * 1998-09-15 2002-08-13 Microsoft Corporation Methods and systems for securely delivering electronic mail to hosts having dynamic IP addresses
US6324569B1 (en) * 1998-09-23 2001-11-27 John W. L. Ogilvie Self-removing email verified or designated as such by a message distributor for the convenience of a recipient
US6687732B1 (en) * 1998-09-28 2004-02-03 Inktomi Corporation Adaptive traffic bypassing in an intercepting network driver
US6321338B1 (en) 1998-11-09 2001-11-20 Sri International Network surveillance
US6266692B1 (en) * 1999-01-04 2001-07-24 International Business Machines Corporation Method for blocking all unwanted e-mail (SPAM) using a header-based password
US6499081B1 (en) 1999-02-23 2002-12-24 Netlogic Microsystems, Inc. Method and apparatus for determining a longest prefix match in a segmented content addressable memory device
US6507866B1 (en) * 1999-07-19 2003-01-14 At&T Wireless Services, Inc. E-mail usage pattern detection
AU6932200A (en) * 1999-08-23 2001-03-19 Webmiles.Com Corporation On-line registration system and method
US6460010B1 (en) 1999-09-22 2002-10-01 Alcatel Canada Inc. Method and apparatus for statistical compilation
US7184971B1 (en) * 1999-11-20 2007-02-27 Advertising.Com Method and apparatus for an E-mail affiliate program
US6460050B1 (en) 1999-12-22 2002-10-01 Mark Raymond Pace Distributed content identification system
US7072942B1 (en) * 2000-02-04 2006-07-04 Microsoft Corporation Email filtering methods and systems
KR100316812B1 (en) 2000-03-09 2001-12-22 박춘우 Electronic stamp providing system for online advertisement and method of operating thereof
US6931437B2 (en) * 2000-04-27 2005-08-16 Nippon Telegraph And Telephone Corporation Concentrated system for controlling network interconnections
US7428576B2 (en) * 2000-05-16 2008-09-23 Hoshiko Llc Addressee-defined mail addressing system and method
US20040073617A1 (en) * 2000-06-19 2004-04-15 Milliken Walter Clark Hash-based systems and methods for detecting and preventing transmission of unwanted e-mail
GB2357939B (en) * 2000-07-05 2002-05-15 Gfi Fax & Voice Ltd Electronic mail message anti-virus system and method
US6721749B1 (en) * 2000-07-06 2004-04-13 Microsoft Corporation Populating a data warehouse using a pipeline approach
US20020059418A1 (en) * 2000-07-17 2002-05-16 Alan Bird Method of and system for recording and displaying electronic mail statistics
TW569106B (en) * 2000-07-29 2004-01-01 Hai Lin A method preventing spam
US7225246B2 (en) * 2000-08-21 2007-05-29 Webtrends, Inc. Data tracking using IP address filtering over a wide area network
US7149778B1 (en) 2000-08-24 2006-12-12 Yahoo! Inc. Unsolicited electronic mail reduction
US6785732B1 (en) 2000-09-11 2004-08-31 International Business Machines Corporation Web server apparatus and method for virus checking
US6886099B1 (en) * 2000-09-12 2005-04-26 Networks Associates Technology, Inc. Computer virus detection
US6785712B1 (en) 2000-09-21 2004-08-31 Rockwell Collins, Inc. Airborne e-mail data transfer protocol
WO2002025464A1 (en) 2000-09-21 2002-03-28 Omega Web Inc. E-mail spam elimination method and system
US6650890B1 (en) 2000-09-29 2003-11-18 Postini, Inc. Value-added electronic messaging services and transparent implementation thereof using intermediate server
US6802012B1 (en) 2000-10-03 2004-10-05 Networks Associates Technology, Inc. Scanning computer files for unwanted properties
US6748422B2 (en) * 2000-10-19 2004-06-08 Ebay Inc. System and method to control sending of unsolicited communications relating to a plurality of listings in a network-based commerce facility
US7072943B2 (en) 2000-11-01 2006-07-04 Buyerleverage Email Solutions Llc System and method for granting deposit-contingent E-mailing rights
US7023852B1 (en) * 2000-11-24 2006-04-04 Redback Networks, Inc. Policy verification methods and apparatus
US6925605B2 (en) * 2000-12-28 2005-08-02 International Business Machines Corporation Collating table for email
EP1360597A4 (en) * 2001-02-15 2005-09-28 Suffix Mail Inc E-mail messaging system
US8219620B2 (en) * 2001-02-20 2012-07-10 Mcafee, Inc. Unwanted e-mail filtering system including voting feedback
US20020120600A1 (en) * 2001-02-26 2002-08-29 Schiavone Vincent J. System and method for rule-based processing of electronic mail messages
US7647411B1 (en) * 2001-02-26 2010-01-12 Symantec Corporation System and method for controlling distribution of network communications
GB2373130B (en) * 2001-03-05 2004-09-22 Messagelabs Ltd Method of,and system for,processing email in particular to detect unsolicited bulk email
US6928465B2 (en) 2001-03-16 2005-08-09 Wells Fargo Bank, N.A. Redundant email address detection and capture system
US20020133469A1 (en) 2001-03-19 2002-09-19 Patton Charles M. Electronic mail filtering system
US7249195B2 (en) * 2001-03-30 2007-07-24 Minor Ventures, Llc Apparatus and methods for correlating messages sent between services
US20020165902A1 (en) 2001-05-03 2002-11-07 Robb Mary Thomas Independent log manager
WO2002097629A1 (en) * 2001-05-30 2002-12-05 Fox Paul D System and method for providing network security policy enforcement
US7380126B2 (en) 2001-06-01 2008-05-27 Logan James D Methods and apparatus for controlling the transmission and receipt of email messages
US6826500B2 (en) * 2001-06-29 2004-11-30 General Electric Company Method and system for automated maintenance and training instruction generation and validation
US7146402B2 (en) * 2001-08-31 2006-12-05 Sendmail, Inc. E-mail system providing filtering methodology on a per-domain basis
US7107316B2 (en) * 2001-09-20 2006-09-12 International Business Machines Corporation Controlling throughput of message requests in a messaging system
WO2003044617A2 (en) * 2001-10-03 2003-05-30 Reginald Adkins Authorized email control system
JP3717829B2 (en) * 2001-10-05 2005-11-16 日本デジタル株式会社 Junk mail repelling system
JP3590936B2 (en) * 2001-10-06 2004-11-17 テラス テクノロジーズ,インコーポレイテッド E-mail service system having dynamic IP filtering module and dynamic IP address filtering method
US20030079142A1 (en) * 2001-10-22 2003-04-24 Aladdin Knowledge Systems Ltd. Classifying digital object security category
US20030093689A1 (en) * 2001-11-15 2003-05-15 Aladdin Knowledge Systems Ltd. Security router
US20030097591A1 (en) * 2001-11-20 2003-05-22 Khai Pham System and method for protecting computer users from web sites hosting computer viruses
US20030110224A1 (en) * 2001-12-12 2003-06-12 Cazier Robert Paul Message auto-routing for electronic mail
AU2002351409A1 (en) * 2001-12-19 2003-07-09 Secluda Technologies, Inc. Message processor
US7054907B1 (en) * 2001-12-26 2006-05-30 Bellsouth Intellectual Property Corporation Systems and methods for blocking delivery of an electronic communication
US20030149726A1 (en) * 2002-02-05 2003-08-07 At&T Corp. Automating the reduction of unsolicited email in real time
EP1476819B1 (en) 2002-02-19 2009-04-01 Postini, Inc. E-mail management services
US20030172050A1 (en) 2002-03-06 2003-09-11 Decime Jerry B. System and method for monitoring a network site for linked content
US7093018B1 (en) 2002-03-06 2006-08-15 Novell, Inc. Methods, systems, and data structures to connect services
AUPS193202A0 (en) 2002-04-23 2002-05-30 Pickup, Robert Barkley Mr A method and system for authorising electronic mail
JP2005528052A (en) * 2002-05-28 2005-09-15 ティーギュ,アラン,エイチ. Message processing and contact alias control based on address patterns and automatic management
US7516182B2 (en) * 2002-06-18 2009-04-07 Aol Llc Practical techniques for reducing unsolicited electronic messages by identifying sender's addresses
US20040054742A1 (en) * 2002-06-21 2004-03-18 Shimon Gruper Method and system for detecting malicious activity and virus outbreak in email
US20040003255A1 (en) * 2002-06-28 2004-01-01 Storage Technology Corporation Secure email time stamping
US7539726B1 (en) * 2002-07-16 2009-05-26 Sonicwall, Inc. Message testing
US20040019651A1 (en) * 2002-07-29 2004-01-29 Andaker Kristian L. M. Categorizing electronic messages based on collaborative feedback
US20040024632A1 (en) * 2002-08-05 2004-02-05 Avenue A, Inc. Method of determining the effect of internet advertisement on offline commercial activity
US20050015456A1 (en) * 2002-08-30 2005-01-20 Martinson John Robert System and method for eliminating unsolicited junk or spam electronic mail
US7490128B1 (en) * 2002-09-09 2009-02-10 Engate Technology Corporation Unsolicited message rejecting communications processor
US7716351B1 (en) * 2002-09-09 2010-05-11 Engate Technology Corporation Unsolicited message diverting communications processor
US7072944B2 (en) * 2002-10-07 2006-07-04 Ebay Inc. Method and apparatus for authenticating electronic mail
US20040083230A1 (en) * 2002-10-24 2004-04-29 Caughey David A. Method and system for automatically managing an address database
US6732157B1 (en) * 2002-12-13 2004-05-04 Networks Associates Technology, Inc. Comprehensive anti-spam system, method, and computer program product for filtering unwanted e-mail messages
US7373664B2 (en) * 2002-12-16 2008-05-13 Symantec Corporation Proactive protection against e-mail worms and spam
US7171450B2 (en) * 2003-01-09 2007-01-30 Microsoft Corporation Framework to enable integration of anti-spam technologies
US7533148B2 (en) * 2003-01-09 2009-05-12 Microsoft Corporation Framework to enable integration of anti-spam technologies
US7302553B2 (en) * 2003-01-23 2007-11-27 International Business Machines Corporation Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
JP4344922B2 (en) 2003-01-27 2009-10-14 富士ゼロックス株式会社 Evaluation apparatus and method
US8266215B2 (en) 2003-02-20 2012-09-11 Sonicwall, Inc. Using distinguishing properties to classify messages
US7249162B2 (en) 2003-02-25 2007-07-24 Microsoft Corporation Adaptive junk message filtering system
US7277936B2 (en) 2003-03-03 2007-10-02 Hewlett-Packard Development Company, L.P. System using network topology to perform fault diagnosis to locate fault between monitoring and monitored devices based on reply from device at switching layer
US7543053B2 (en) 2003-03-03 2009-06-02 Microsoft Corporation Intelligent quarantining for spam prevention
US7206814B2 (en) * 2003-10-09 2007-04-17 Propel Software Corporation Method and system for categorizing and processing e-mails
US20050091319A1 (en) * 2003-10-09 2005-04-28 Kirsch Steven T. Database for receiving, storing and compiling information about email messages
US20050080857A1 (en) * 2003-10-09 2005-04-14 Kirsch Steven T. Method and system for categorizing and processing e-mails
US7366761B2 (en) * 2003-10-09 2008-04-29 Abaca Technology Corporation Method for creating a whitelist for processing e-mails
US20040177120A1 (en) * 2003-03-07 2004-09-09 Kirsch Steven T. Method for filtering e-mail messages
US20040181581A1 (en) 2003-03-11 2004-09-16 Michael Thomas Kosco Authentication method for preventing delivery of junk electronic mail
US20060168006A1 (en) * 2003-03-24 2006-07-27 Mr. Marvin Shannon System and method for the classification of electronic communication
US7346700B2 (en) 2003-04-07 2008-03-18 Time Warner Cable, A Division Of Time Warner Entertainment Company, L.P. System and method for managing e-mail message traffic
US7320020B2 (en) * 2003-04-17 2008-01-15 The Go Daddy Group, Inc. Mail server probability spam filter
US20040221016A1 (en) 2003-05-01 2004-11-04 Hatch James A. Method and apparatus for preventing transmission of unwanted email
US7653698B2 (en) * 2003-05-29 2010-01-26 Sonicwall, Inc. Identifying e-mail messages from allowed senders
US7404205B2 (en) * 2003-06-03 2008-07-22 Hewlett-Packard Development Company, L.P. System for controlling client-server connection requests
US7272853B2 (en) 2003-06-04 2007-09-18 Microsoft Corporation Origination/destination features and lists for spam prevention
US20050108518A1 (en) 2003-06-10 2005-05-19 Pandya Ashish A. Runtime adaptable security processor
US20040254990A1 (en) 2003-06-13 2004-12-16 Nokia, Inc. System and method for knock notification to an unsolicited message
US7406503B1 (en) * 2003-08-28 2008-07-29 Microsoft Corporation Dictionary attack e-mail identification
US20050071485A1 (en) * 2003-09-26 2005-03-31 Arun Ramagopal System and method for identifying a network resource
US7577736B1 (en) 2003-10-15 2009-08-18 Nortel Networks Limited Network accounting statistics collection
US7181498B2 (en) * 2003-10-31 2007-02-20 Yahoo! Inc. Community-based green list for antispam
US7543052B1 (en) * 2003-12-22 2009-06-02 Packeteer, Inc. Automatic network traffic discovery and classification mechanism including dynamic discovery thresholds
US20050198518A1 (en) * 2004-01-20 2005-09-08 Aladdin Knowledge Systems Ltd. Method for blocking Spam
US20050193429A1 (en) 2004-01-23 2005-09-01 The Barrier Group Integrated data traffic monitoring system
US7554974B2 (en) * 2004-03-09 2009-06-30 Tekelec Systems and methods of performing stateful signaling transactions in a distributed processing environment
US7631044B2 (en) 2004-03-09 2009-12-08 Gozoom.Com, Inc. Suppression of undesirable network messages
US20050204005A1 (en) 2004-03-12 2005-09-15 Purcell Sean E. Selective treatment of messages based on junk rating
DK1733532T3 (en) 2004-03-30 2008-11-03 Imencro Software Sa Filters and methods for filtering electronic messages
US7647321B2 (en) 2004-04-26 2010-01-12 Google Inc. System and method for filtering electronic messages using business heuristics
US7627670B2 (en) * 2004-04-29 2009-12-01 International Business Machines Corporation Method and apparatus for scoring unsolicited e-mail
US7917588B2 (en) 2004-05-29 2011-03-29 Ironport Systems, Inc. Managing delivery of electronic messages using bounce profiles
US7748038B2 (en) 2004-06-16 2010-06-29 Ironport Systems, Inc. Method and apparatus for managing computer virus outbreaks
US20060149726A1 (en) * 2004-12-30 2006-07-06 Thomas Ziegert Segmentation of web pages
US7475118B2 (en) * 2006-02-03 2009-01-06 International Business Machines Corporation Method for recognizing spam email

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6072942A (en) * 1996-09-18 2000-06-06 Secure Computing Corporation System and method of electronic mail filtering using interconnected nodes
US6421709B1 (en) * 1997-12-22 2002-07-16 Accepted Marketing, Inc. E-mail filter and method thereof
US6052709A (en) * 1997-12-23 2000-04-18 Bright Light Technologies, Inc. Apparatus and method for controlling delivery of unsolicited electronic mail
US6546416B1 (en) * 1998-12-09 2003-04-08 Infoseek Corporation Method and system for selectively blocking delivery of bulk electronic mail
US6654787B1 (en) * 1998-12-31 2003-11-25 Brightmail, Incorporated Method and apparatus for filtering e-mail
US6330590B1 (en) * 1999-01-05 2001-12-11 William D. Cotten Preventing delivery of unwanted bulk e-mail
US6732149B1 (en) * 1999-04-09 2004-05-04 International Business Machines Corporation System and method for hindering undesired transmission or receipt of electronic messages
US6321267B1 (en) * 1999-11-23 2001-11-20 Escom Corporation Method and apparatus for filtering junk email
US20030191969A1 (en) * 2000-02-08 2003-10-09 Katsikas Peter L. System for eliminating unauthorized electronic mail
US20030167402A1 (en) * 2001-08-16 2003-09-04 Stolfo Salvatore J. System and methods for detecting malicious email transmission
US20030172291A1 (en) * 2002-03-08 2003-09-11 Paul Judge Systems and methods for automated whitelisting in monitored communications
US20040054741A1 (en) * 2002-06-17 2004-03-18 Mailport25, Inc. System and method for automatically limiting unwanted and/or unsolicited communication through verification

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KLENSIN J.: 'Request for Comments (RFC) 2821: Simple Mail Transfer Protocol' NETWORK WORKING GROUP XP003010059 *

Also Published As

Publication number Publication date
WO2005119484A3 (en) 2007-04-05
US20060010215A1 (en) 2006-01-12
US7873695B2 (en) 2011-01-18

Similar Documents

Publication Publication Date Title
US7873695B2 (en) Managing connections and messages at a server by associating different actions for both different senders and different recipients
US7849142B2 (en) Managing connections, messages, and directory harvest attacks at a server
US7870200B2 (en) Monitoring the flow of messages received at a server
US8583787B2 (en) Zero-minute virus and spam detection
US8725889B2 (en) E-mail management services
US7206814B2 (en) Method and system for categorizing and processing e-mails
US7366761B2 (en) Method for creating a whitelist for processing e-mails
US8527592B2 (en) Reputation-based method and system for determining a likelihood that a message is undesired
US20050198159A1 (en) Method and system for categorizing and processing e-mails based upon information in the message header and SMTP session
US20050080857A1 (en) Method and system for categorizing and processing e-mails
US20050091319A1 (en) Database for receiving, storing and compiling information about email messages
US20040177120A1 (en) Method for filtering e-mail messages
US20050091320A1 (en) Method and system for categorizing and processing e-mails
US20060265459A1 (en) Systems and methods for managing the transmission of synchronous electronic messages
WO2004081734A2 (en) Method for filtering e-mail messages
US7958187B2 (en) Systems and methods for managing directory harvest attacks via electronic messages
Kawbunjun et al. Advertising Email Management Using Multi-Level Reputation System

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

122 Ep: pct application non-entry in european phase