sisimai 4.25.14-java → 4.25.16-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.md +51 -0
- data/README-JA.md +2 -2
- data/README.md +2 -2
- data/lib/sisimai/address.rb +1 -1
- data/lib/sisimai/data.rb +7 -3
- data/lib/sisimai/lhost/facebook.rb +10 -6
- data/lib/sisimai/lhost/googlegroups.rb +1 -2
- data/lib/sisimai/lhost/imailserver.rb +1 -1
- data/lib/sisimai/message.rb +15 -2
- data/lib/sisimai/mime.rb +1 -1
- data/lib/sisimai/reason/blocked.rb +2 -1
- data/lib/sisimai/reason/contenterror.rb +1 -0
- data/lib/sisimai/reason/filtered.rb +1 -0
- data/lib/sisimai/reason/networkerror.rb +1 -0
- data/lib/sisimai/reason/notaccept.rb +1 -0
- data/lib/sisimai/reason/policyviolation.rb +2 -0
- data/lib/sisimai/reason/rejected.rb +5 -0
- data/lib/sisimai/reason/spamdetected.rb +4 -0
- data/lib/sisimai/reason/userunknown.rb +8 -1
- data/lib/sisimai/rfc3464.rb +1 -1
- data/lib/sisimai/rfc3834.rb +0 -2
- data/lib/sisimai/rhost/exchangeonline.rb +711 -142
- data/lib/sisimai/rhost/googleapps.rb +239 -104
- data/lib/sisimai/rhost/mimecast.rb +290 -0
- data/lib/sisimai/rhost/nttdocomo.rb +118 -0
- data/lib/sisimai/rhost.rb +3 -1
- data/lib/sisimai/string.rb +2 -2
- data/lib/sisimai/version.rb +1 -1
- data/set-of-emails/maildir/bsd/rhost-mimecast-01.eml +88 -0
- data/set-of-emails/maildir/bsd/rhost-mimecast-02.eml +90 -0
- data/set-of-emails/maildir/bsd/rhost-nttdocomo-01.eml +62 -0
- data/set-of-emails/maildir/bsd/rhost-nttdocomo-02.eml +89 -0
- data/set-of-emails/maildir/bsd/rhost-nttdocomo-03.eml +79 -0
- metadata +9 -2
@@ -3,117 +3,700 @@ module Sisimai
|
|
3
3
|
# Sisimai::Rhost detects the bounce reason from the content of Sisimai::Data
|
4
4
|
# object as an argument of get() method when the value of "rhost" of the object
|
5
5
|
# is "*.protection.outlook.com". This class is called only Sisimai::Data class.
|
6
|
+
#
|
7
|
+
# https://technet.microsoft.com/en-us/library/bb232118
|
8
|
+
# https://learn.microsoft.com/en-us/Exchange/mail-flow-best-practices/non-delivery-reports-in-exchange-online/non-delivery-reports-in-exchange-online
|
9
|
+
# https://learn.microsoft.com/en-us/Exchange/mail-flow/non-delivery-reports-and-bounce-messages/non-delivery-reports-and-bounce-messages
|
6
10
|
module ExchangeOnline
|
7
11
|
class << self
|
8
|
-
# Imported from p5-Sisimail/lib/Sisimai/Rhost/ExchangeOnline.pm
|
9
|
-
|
10
|
-
# https://technet.microsoft.com/en-us/library/bb232118
|
11
|
-
StatusList = {
|
12
|
-
'4.3.1' => [{ reason: 'systemfull', string: 'Insufficient system resources' }],
|
13
|
-
'4.3.2' => [{ reason: 'notaccept', string: 'System not accepting network messages' }],
|
14
|
-
'4.4.2' => [{ reason: 'blocked', string: 'Connection dropped' }],
|
15
|
-
'4.7.26' => [{
|
16
|
-
reason: 'securityerror',
|
17
|
-
string: 'must pass either SPF or DKIM validation, this message is not signed'
|
18
|
-
}],
|
19
|
-
'5.0.0' => [{ reason: 'blocked', string: 'HELO / EHLO requires domain address' }],
|
20
|
-
'5.1.4' => [{ reason: 'systemerror', string: 'Destination mailbox address ambiguous' }],
|
21
|
-
'5.2.1' => [{ reason: 'suspend', string: 'Mailbox cannot be accessed' }],
|
22
|
-
'5.2.2' => [{ reason: 'mailboxfull', string: 'Mailbox full' }],
|
23
|
-
'5.2.3' => [{ reason: 'exceedlimit', string: 'Message too large' }],
|
24
|
-
'5.2.4' => [{ reason: 'systemerror', string: 'Mailing list expansion problem' }],
|
25
|
-
'5.2.14' => [{ reason: 'systemerror', string: 'misconfigured forwarding address' }],
|
26
|
-
'5.2.122' => [{ reason: 'toomanyconn' ,string: 'The recipient has exceeded their limit for' }],
|
27
|
-
'5.3.3' => [{ reason: 'systemfull', string: 'Unrecognized command' }],
|
28
|
-
'5.3.4' => [{ reason: 'mesgtoobig', string: 'Message too big for system' }],
|
29
|
-
'5.3.5' => [{ reason: 'systemerror', string: 'System incorrectly configured' }],
|
30
|
-
'5.4.1' => [{ reason: 'rejected', string: 'Recipient address rejected: Access denied' }],
|
31
|
-
'5.4.11' => [{ reason: 'contenterror',string: 'Agent generated message depth exceeded' }],
|
32
|
-
'5.4.14' => [{ reason: 'networkerror',string: 'Hop count exceeded' }],
|
33
|
-
'5.4.310' => [{ reason: 'systemerror', string: 'does not exist' }], # DNS domain * does not exist
|
34
|
-
'5.5.2' => [{ reason: 'syntaxerror', string: 'Send hello first' }],
|
35
|
-
'5.5.3' => [{ reason: 'syntaxerror', string: 'Too many recipients' }],
|
36
|
-
'5.5.4' => [{ reason: 'filtered', string: 'Invalid domain name' }],
|
37
|
-
'5.5.6' => [{ reason: 'contenterror',string: 'Invalid message content' }],
|
38
|
-
'5.7.1' => [
|
39
|
-
{ reason: 'securityerror', string: 'Delivery not authorized' },
|
40
|
-
{ reason: 'securityerror', string: 'Client was not authenticated' },
|
41
|
-
{ reason: 'norelaying', string: 'Unable to relay' },
|
42
|
-
],
|
43
|
-
'5.7.25' => [{ reason: 'blocked', string: 'must have a reverse DNS record' }],
|
44
|
-
'5.7.51' => [{ reason: 'blocked', string: 'RestrictDomainsToIPAddresses or RestrictDomainsToCertificate' }],
|
45
|
-
'5.7.506' => [{ reason: 'blocked', string: 'Bad HELO' }],
|
46
|
-
'5.7.508' => [{ reason: 'toomanyconn', string: 'has exceeded permitted limits within ' }],
|
47
|
-
'5.7.509' => [{ reason: 'rejected', string: 'does not pass DMARC verification' }],
|
48
|
-
'5.7.510' => [{ reason: 'notaccept', string: 'does not accept email over IPv6' }],
|
49
|
-
'5.7.511' => [{ reason: 'blocked', string: 'banned sender' }],
|
50
|
-
'5.7.512' => [{ reason: 'contenterror', string: 'message must be RFC 5322' }],
|
51
|
-
}.freeze
|
52
|
-
ReStatuses = {
|
53
|
-
%r/\A4[.]4[.][17]\z/ => [
|
54
|
-
{ reason: 'expired', string: ['Connection timed out', 'Message expired'] }
|
55
|
-
],
|
56
|
-
%r/\A4[.]7[.][568]\d\d\z/ => [
|
57
|
-
{ reason: 'securityerror', string: ['Access denied, please try again later'] }
|
58
|
-
],
|
59
|
-
%r/\A5[.]1[.][07]\z/ => [
|
60
|
-
{ reason: 'rejected', string: ['Sender denied', 'Invalid address'] }
|
61
|
-
],
|
62
|
-
%r/\A5[.]1[.][123]\z/ => [{
|
63
|
-
reason: 'userunknown',
|
64
|
-
string: [
|
65
|
-
'Bad destination mailbox address',
|
66
|
-
'Invalid X.400 address',
|
67
|
-
'Invalid recipient address',
|
68
|
-
]
|
69
|
-
}],
|
70
|
-
%r/\A5[.]4[.][46]\z/ => [{
|
71
|
-
reason: 'networkerror',
|
72
|
-
string: ['Invalid arguments', 'Routing loop detected'],
|
73
|
-
}],
|
74
|
-
%r/\A5[.]7[.][13]\z/ => [{
|
75
|
-
reason: 'securityerror',
|
76
|
-
string: ['Delivery not authorized', 'Not Authorized'],
|
77
|
-
}],
|
78
|
-
%r/\A5[.]7[.]50[1-3]\z/ => [{
|
79
|
-
reason: 'spamdetected',
|
80
|
-
string: ['Access denied, spam abuse detected', 'Access denied, banned sender'],
|
81
|
-
}],
|
82
|
-
%r/\A5[.]7[.]50[457]\z/ => [{
|
83
|
-
reason: 'filtered',
|
84
|
-
string: [
|
85
|
-
'Recipient address rejected: Access denied',
|
86
|
-
'Access denied, banned recipient',
|
87
|
-
'Access denied, rejected by recipient'
|
88
|
-
]
|
89
|
-
}],
|
90
|
-
%r/\A5[.]7[.]6\d\d\z/ => [
|
91
|
-
{ reason: 'blocked', string: ['Access denied, banned sending IP '] }
|
92
|
-
],
|
93
|
-
%r/\A5[.]7[.]7\d\d\z/ => [
|
94
|
-
{ reason: 'toomanyconn', string: ['Access denied, tenant has exceeded threshold'] }
|
95
|
-
],
|
96
|
-
}.freeze
|
97
12
|
MessagesOf = {
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
'
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
'
|
114
|
-
|
115
|
-
|
116
|
-
|
13
|
+
'blocked' => [
|
14
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
15
|
+
# - Transient network issues or server problems that might eventually correct them-
|
16
|
+
# selves. The sending server will retry delivery of the message, and will generate
|
17
|
+
# further status reports. The message size limit for the connection has been reached,
|
18
|
+
# or the message submission rate for the source IP address has exceeded the configur-
|
19
|
+
# ed limit. For more information, see Message rate limits and throttling. Antispam,
|
20
|
+
# SMTP proxy, or firewall configuration issues are blocking email from the Exchange
|
21
|
+
# server.
|
22
|
+
['4.4.2', 0, 0, 'connection dropped'],
|
23
|
+
|
24
|
+
# Exchange Online ---------------------------------------------------------------------
|
25
|
+
# - Suspicious activity has been detected on the IP in question, and it has been tempo-
|
26
|
+
# rarily restricted while it's being further evaluated.
|
27
|
+
# - If this activity is valid, this restriction will be lifted shortly.
|
28
|
+
['4.7.', 850, 899, 'access denied, please try again later'],
|
29
|
+
|
30
|
+
# - Access denied, the sending IPv6 address [2a01:111:f200:2004::240] must have a re-
|
31
|
+
# verse DNS record
|
32
|
+
# - The sending IPv6 address must have a reverse DNS record in order to send email over
|
33
|
+
# IPv6.
|
34
|
+
['5.7.25', 0, 0, 'must have a reverse dns record'],
|
35
|
+
|
36
|
+
# - Your server is attempting to introduce itself (HELO according to RFC 821) as the
|
37
|
+
# server it's trying to connect to, rather than its own fully qualified domain name.
|
38
|
+
# - This isn't allowed, and it's characteristic of typical spambot behavior.
|
39
|
+
['5.7.506', 0, 0, 'access denied, bad helo'],
|
40
|
+
|
41
|
+
# - The IP that you're attempting to send from has been blocked by the recipient's or-
|
42
|
+
# ganization.
|
43
|
+
# - Contact the recipient in order to resolve this issue.
|
44
|
+
['5.7.507', 0, 0, 'access denied, rejected by recipient'],
|
45
|
+
|
46
|
+
# - Access denied, [contoso.com] does not accept email over IPv6
|
47
|
+
# - The sender is attempting to transmit a message to the recipient over IPv6, but the
|
48
|
+
# recipient doesn't accept email messages over IPv6.
|
49
|
+
['5.7.510', 0, 0, 'does not accept email over ipv6'],
|
50
|
+
|
51
|
+
# - The IP that you're attempting to send from has been banned.
|
52
|
+
# - To delist the address, email delist@messaging.microsoft.com and provide the full
|
53
|
+
# NDR code and IP address to delist. For more information, see Use the delist portal
|
54
|
+
# to remove yourself from the blocked senders list.
|
55
|
+
['5.7.511', 0, 0, 'access denied, banned sender'],
|
56
|
+
|
57
|
+
# - Service unavailable, Client host [$ConnectingIP] blocked by $recipientDomain using
|
58
|
+
# Customer Block list (AS16012607)
|
59
|
+
# - The recipient domain has added your sending IP address to its custom blocklist.
|
60
|
+
# - The domain that received the email has blocked your sender's IP address. If you
|
61
|
+
# think your IP address has been added to the recipient domain's custom blocklist in
|
62
|
+
# error, you need to contact them directly and ask them to remove it from the block-
|
63
|
+
# list.
|
64
|
+
['5.7.513', 0, 0, 'using customer block list'],
|
65
|
+
|
66
|
+
# - 5.7.606-649 Access denied, banned sending IP [IP1.IP2.IP3.IP4]
|
67
|
+
# - The IP that you're attempting to send from has been banned.
|
68
|
+
# - Verify that you're following the best practices for email deliverability, and en-
|
69
|
+
# sure your IPs' reputations haven't been degraded as a result of compromise or mali-
|
70
|
+
# cious traffic. If you believe you're receiving this message in error, you can use
|
71
|
+
# the self-service portal to request to be removed from this list.
|
72
|
+
# - For more information, see Use the delist portal to remove yourself from the blocked
|
73
|
+
# senders list.
|
74
|
+
['5.7.', 606, 649, 'access denied, banned sending ip '],
|
75
|
+
|
76
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
77
|
+
# - Suspicious activity has been detected and sending has been temporarily restricted
|
78
|
+
# for further evaluation.
|
79
|
+
# - If this activity is valid, this restriction will be lifted shortly.
|
80
|
+
['4.7.', 500, 699, 'access denied, please try again later'],
|
81
|
+
|
82
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
83
|
+
['5.5.4', 0, 0, 'invalid domain name'],
|
84
|
+
['5.7.51', 0, 0, 'restrictdomainstoipaddresses or restrictdomainstocertificate'],
|
85
|
+
|
86
|
+
# Undocumented error messages ---------------------------------------------------------
|
87
|
+
# - 550 5.7.1 Unfortunately, messages from [10.0.2.5] weren't sent. Please contact your
|
88
|
+
# Internet service provider since part of their network is on our block list (S3150).
|
89
|
+
['5.7.1', 0, 0, 'part of their network is on our block list (s3150)'],
|
90
|
+
|
91
|
+
# - Access denied, a message sent over IPv6 [2a01:111:f200:2004::240] must pass either
|
92
|
+
# SPF or DKIM validation, this message is not signed
|
93
|
+
# - The sending message sent over IPv6 must pass either SPF or DKIM.
|
94
|
+
['4.7.26', 0, 0, 'must pass either spf or dkim validation, this message is not signed'],
|
95
|
+
|
96
|
+
# - Records are DNSSEC authentic, but one or multiple of these scenarios occurred:
|
97
|
+
# - The destination mail server's certificate doesn't match with what is expected per
|
98
|
+
# the authentic TLSA record.
|
99
|
+
# - Authentic TLSA record is misconfigured.
|
100
|
+
# - Destination domain is being attacked.
|
101
|
+
# - Any other DANE failure.
|
102
|
+
# - This message usually indicates an issue on the destination email server. Check the
|
103
|
+
# validity of recipient address and determine if the destination server is configured
|
104
|
+
# correctly to receive messages.
|
105
|
+
# - For more information about DANE, see: https://datatracker.ietf.org/doc/html/rfc7671
|
106
|
+
['4.7.323', 0, 0, 'tlsa-invalid: The domain failed dane validation'],
|
107
|
+
['5.7.323', 0, 0, 'tlsa-invalid: The domain failed dane validation'],
|
108
|
+
|
109
|
+
# - The destination domain indicated it was DNSSEC-authentic, but Exchange Online was
|
110
|
+
# not able to verify it as DNSSEC-authentic.
|
111
|
+
['4.7.324', 0, 0, 'dnssec-invalid: destination domain returned invalid dnssec records'],
|
112
|
+
['5.7.324', 0, 0, 'dnssec-invalid: destination domain returned invalid dnssec records'],
|
113
|
+
|
114
|
+
# - This happens when the presented certificate identities (CN and SAN) of a destina-
|
115
|
+
# tion SMTP target host don't match any of the domains or MX host.
|
116
|
+
# - This message usually indicates an issue on the destination email server. Check the
|
117
|
+
# validity of recipient address and determine if the destination server is configured
|
118
|
+
# correctly to receive messages. For more information, see How SMTP DNS-based Authen-
|
119
|
+
# tication of Named Entities (DANE) works to secure email communications.
|
120
|
+
['4.7.325', 0, 0, 'certificate-host-mismatch: remote certificate must have a common name or subject alternative name matching the hostname (dane)'],
|
121
|
+
['5.7.325', 0, 0, 'certificate-host-mismatch: remote certificate must have a common name or subject alternative name matching the hostname (dane)'],
|
122
|
+
|
123
|
+
# - The destination email system uses SPF to validate inbound mail, and there's a prob-
|
124
|
+
# lem with your SPF configuration.
|
125
|
+
['5.7.23', 0, 0, 'the message was rejected because of sender policy framework violation'],
|
126
|
+
|
127
|
+
# - DNSSEC checks have passed, yet upon establishing the connection the destination
|
128
|
+
# mail server provides a certificate that is expired.
|
129
|
+
# - A valid X.509 certificate that isn't expired must be presented. X.509 certificates
|
130
|
+
# must be renewed after their expiration, commonly annually.
|
131
|
+
['5.7.322', 0, 0, "certificate-expired: destination mail server's certificate is expired"],
|
132
|
+
|
133
|
+
# - Access denied, sending domain [$SenderDomain] does not pass DMARC verification
|
134
|
+
# - The sender's domain in the 5322.From address doesn't pass DMARC.
|
135
|
+
['5.7.509', 0, 0, 'does not pass dmarc verification'],
|
136
|
+
# Undocumented error messages ---------------------------------------------------------
|
137
|
+
# - status=deferred (host outlook-com.olc.protection.outlook.com[192.0.2.255] said:
|
138
|
+
# 451 4.7.650 The mail server [192.0.2.5] has been temporarily rate limited due to IP
|
139
|
+
# reputation. For e-mail delivery information, see https://postmaster.live.com (S775)
|
140
|
+
# [***.prod.protection.outlook.com] (in reply to MAIL FROM command))
|
141
|
+
['4.7.650', 0, 0, 'has been temporarily rate limited due to ip reputation'],
|
142
|
+
],
|
143
|
+
'contenterror' => [
|
144
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
145
|
+
# - The message was determined to be malformed, and was moved to the poison message
|
146
|
+
# queue. For more information, see Types of queues.
|
147
|
+
['5.3.0', 0, 0, 'too many related errors'],
|
148
|
+
|
149
|
+
# Exchange Online ---------------------------------------------------------------------
|
150
|
+
# - Your email program added invalid characters (bare line feed characters) into a mes-
|
151
|
+
# sage you sent.
|
152
|
+
['5.6.11', 0, 0, 'invalid characters'],
|
153
|
+
|
154
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
155
|
+
['5.4.11', 0, 0, 'agent generated message depth exceeded'],
|
156
|
+
['5.5.6', 0, 0, 'invalid message content'],
|
157
|
+
],
|
158
|
+
'exceedlimit' => [
|
159
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
160
|
+
# - The message is too large. Send the message again without any attachments, or confi-
|
161
|
+
# gure a larger message size limit for the recipient. For more information, see Re-
|
162
|
+
# cipient limits.
|
163
|
+
['5.2.3', 0, 0, 'resolver.rst.recipsizelimit; message too large for this recipient'],
|
164
|
+
],
|
165
|
+
'expired' => [
|
166
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
167
|
+
# - Transient network issues that might eventually correct themselves. The Exchange
|
168
|
+
# server periodically tries to connect to the destination server to deliver the mes-
|
169
|
+
# sage. After multiple failures, the message is returned to the sender in an NDR with
|
170
|
+
# a permanent failure code.
|
171
|
+
# For more information about configuring the queue retry and failure intervals, see
|
172
|
+
# Configure message retry, resubmit, and expiration intervals. To manually retry a
|
173
|
+
# queue, see Retry queues. Firewall or Internet service provider (ISP) restrictions
|
174
|
+
# on TCP port 25.
|
175
|
+
['4.4.1', 0, 0, 'connection timed out'],
|
176
|
+
|
177
|
+
# - Send connector configuration issues. For example:
|
178
|
+
# - The Send connector is configured to use DNS routing when it should be using smart
|
179
|
+
# host routing, or vice-versa. Use nslookup to verify that the destination domain
|
180
|
+
# is reachable from the Exchange server.
|
181
|
+
# - The FQDN that the Send connector provides to HELO or EHLO requests doesn't match
|
182
|
+
# the host name in your MX record (for example, mail.contoso.com). Some messaging
|
183
|
+
# systems are configured to compare these values in an effort to reduce spam. The
|
184
|
+
# default value on a Send connector is blank, which means the FQDN of the Exchange
|
185
|
+
# server is used (for example, exchange01.contoso.com).
|
186
|
+
# - The Mailbox Transport Delivery service isn't started on the destination server
|
187
|
+
# (which prevents the delivery of the message to the mailbox).
|
188
|
+
# - The destination messaging system has issues with Transport Neutral Encryption For-
|
189
|
+
# mat (TNEF) messages (also known as rich text format or RTF in Outlook). For exam-
|
190
|
+
# ple, meeting requests or messages with images embedded in the message body.
|
191
|
+
# - If the destination domain uses the Sender Policy Framework (SPF) to check message
|
192
|
+
# sources, there may be SPF issues with your domain (for example, your SPF record
|
193
|
+
# doesn't include all email sources for your domain).
|
194
|
+
['4.4.7', 0, 0, 'message delayed'],
|
195
|
+
['4.4.7', 0, 0, 'queue expired; message expired'],
|
196
|
+
|
197
|
+
# Exchange Online ---------------------------------------------------------------------
|
198
|
+
# - The message in the queue has expired. The sending server tried to relay or deliver
|
199
|
+
# the message, but the action wasn't completed before the message expiration time oc-
|
200
|
+
# curred. This message can also indicate that a message header limit has been reached
|
201
|
+
# on a remote server, or some other protocol time-out occurred while communicating
|
202
|
+
# with the remote server.
|
203
|
+
# - This message usually indicates an issue on the receiving server. Check the validity
|
204
|
+
# of the recipient address, and determine if the receiving server is configured cor-
|
205
|
+
# rectly to receive messages. You might have to reduce the number of recipients in
|
206
|
+
# the message header for the host about which you're receiving this error. If you
|
207
|
+
# send the message again, it's placed in the queue again. If the receiving server is
|
208
|
+
# available, the message is delivered.
|
209
|
+
['4.4.7', 0, 0, 'message expired'],
|
210
|
+
|
211
|
+
# - The email took too long to be successfully delivered, either because the destina-
|
212
|
+
# tion server never responded or the sent message generated an NDR error and that NDR
|
213
|
+
# couldn't be delivered to the original sender.
|
214
|
+
['5.4.300', 0, 0, 'message expired'],
|
215
|
+
],
|
216
|
+
'mailboxfull' => [
|
217
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
218
|
+
# - The recipient's mailbox has exceeded its storage quota and is no longer able to ac-
|
219
|
+
# cept new messages. For more information about configuring mailbox quotas, see Con-
|
220
|
+
# figure storage quotas for a mailbox.
|
221
|
+
['5.2.2', 0, 0, 'mailbox full'],
|
222
|
+
],
|
223
|
+
'mesgtoobig' => [
|
224
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
225
|
+
# - The message is too large. This error can be generated by the source or destination
|
226
|
+
# messaging system. Send the message again without any attachments, or configure a
|
227
|
+
# larger message size limit. For more information, see Message size and recipient
|
228
|
+
# limits in Exchange Server.
|
229
|
+
['5.3.4', 0, 0, 'message size exceeds fixed maximum message size'],
|
230
|
+
|
231
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
232
|
+
['5.3.4', 0, 0, 'message too big for system'],
|
233
|
+
],
|
234
|
+
'networkerror' => [
|
235
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
236
|
+
# - There's a DNS or network adapter configuration issue on the Exchange server. Verify
|
237
|
+
# the internal and external DNS lookup settings for the Exchange by running this com-
|
238
|
+
# mand in the Exchange Management Shell:
|
239
|
+
# - Get-TransportService | Format-List Name,ExternalDNS*,InternalDNS*;
|
240
|
+
# - Get-FrontEndTransportService | Format-List Name,ExternalDNS*,InternalDNS*`
|
241
|
+
# You can configure these settings by using the InternalDNS* and ExternalDNS* parame-
|
242
|
+
# ters on the Set-TransportService and Set-FrontEndTransportService cmdlets.
|
243
|
+
# By default, these settings are used by Send connectors (the default value of the
|
244
|
+
# UseExternalDNSServersEnabled parameter value is $false). Check the priority (order)
|
245
|
+
# of the network adapters in the operating system of the Exchange server.
|
246
|
+
['5.4.4', 0, 0, 'smtpsend.dns.nonexistentdomain; nonexistent domain'],
|
247
|
+
|
248
|
+
# - A configuration error has caused an email loop. By default, after 20 iterations of
|
249
|
+
# an email loop, Exchange interrupts the loop and generates an NDR. Verify that Inbox
|
250
|
+
# rules for the recipient and sender, or forwarding rules on the recipient's mailbox
|
251
|
+
# aren't causing this (the message generates a message, which generates another mes-
|
252
|
+
# sage, and the process continues indefinitely).
|
253
|
+
# Verify the mailbox doesn't have a targetAddress property value in Active Directory
|
254
|
+
# (this property corresponds to the ExternalEmailAddress parameter for mail users in
|
255
|
+
# Exchange). If you remove Exchange servers, or modify settings related to mail rout-
|
256
|
+
# ing an mail flow, be sure to restart the Microsoft Exchange Transport and Exchange
|
257
|
+
# Frontend Transport services.
|
258
|
+
['5.4.6', 0, 0, 'hop count exceeded - possible mail loop'],
|
259
|
+
|
260
|
+
# Exchange Online ---------------------------------------------------------------------
|
261
|
+
# - Microsoft 365 or Office 365 is trying to send a message to an email server outside
|
262
|
+
# of Microsoft 365 or Office 365, but attempts to connect to it are failing due to a
|
263
|
+
# network connection issue at the external server's location.
|
264
|
+
# - This error almost always indicates an issue with the receiving server or network
|
265
|
+
# outside of Microsoft 365 or Office 365. The error should also include the IP ad-
|
266
|
+
# dress of the server or service that's generating the error, which you can use to
|
267
|
+
# identify the party responsible for fixing this.
|
268
|
+
['4.4.316', 0, 0, 'connection refused'], # [Message=Socket error code 10061]
|
269
|
+
|
270
|
+
# - A configuration error has caused an email loop. 5.4.6 is generated by on-premises
|
271
|
+
# Exchange server (you'll see this code in hybrid environments). 5.4.14 is generated
|
272
|
+
# by Exchange Online. By default, after 20 iterations of an email loop, Exchange in-
|
273
|
+
# terrupts the loop and generates an NDR to the sender of the message.
|
274
|
+
# - This error occurs when the delivery of a message generates another message in re-
|
275
|
+
# sponse. That message then generates a third message, and the process is repeated,
|
276
|
+
# creating a loop. To help protect against exhausting system resources, Exchange in-
|
277
|
+
# terrupts the mail loop after 20 iterations. Mail loops are typically created be-
|
278
|
+
# cause of a configuration error on the sending mail server, the receiving mail serv-
|
279
|
+
# er, or both. Check the sender's and the recipient's mailbox rules configuration to
|
280
|
+
# determine whether automatic message forwarding is enabled.
|
281
|
+
['5.4.4', 0, 0, 'invalid arguments'],
|
282
|
+
['5.4.6', 0, 0, 'routing loop detected'],
|
283
|
+
['5.4.14', 0, 0, 'routing loop detected'],
|
284
|
+
],
|
285
|
+
'norelaying' => [
|
286
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
287
|
+
# - You have an application server or device that's trying to relay messages through
|
288
|
+
# Exchange. For more information, see Allow anonymous relay on Exchange servers. The
|
289
|
+
# recipient is configured to only accept messages from authenticated (typically, in-
|
290
|
+
# ternal) senders. For more information, see Configure message delivery restrictions
|
291
|
+
# for a mailbox.
|
292
|
+
['5.7.1', 0, 0, 'unable to relay'],
|
293
|
+
['5.7.1', 0, 0, 'client was not authenticated'],
|
294
|
+
|
295
|
+
# Exchange Online ---------------------------------------------------------------------
|
296
|
+
# - The mail server that's generating the error doesn't accept mail for the recipient's
|
297
|
+
# domain. This error is caused by mail server or DNS misconfiguration.
|
298
|
+
['5.4.1', 0, 0, 'relay access denied'],
|
299
|
+
|
300
|
+
# - The sending email system isn't allowed to send a message to an email system where
|
301
|
+
# that email system isn't the final destination of the message.
|
302
|
+
# - This error occurs when the sending email system tries to send an anonymous message
|
303
|
+
# to a receiving email system, and the receiving email system doesn't accept messages
|
304
|
+
# for the domain or domains specified in one or more of the recipients. The following
|
305
|
+
# are the most common reasons for this error:
|
306
|
+
# - A third party tries to use a receiving email system to send spam, and the receiv-
|
307
|
+
# ing email system rejects the attempt. By the nature of spam, the sender's email
|
308
|
+
# address might have been forged, and the resulting NDR could have been sent to the
|
309
|
+
# unsuspecting sender's email address. It's difficult to avoid this situation.
|
310
|
+
# - An MX record for a domain points to a receiving email system where that domain is
|
311
|
+
# not accepted. The administrator responsible for the specific domain name must
|
312
|
+
# correct the MX record or configure the receiving email system to accept messages
|
313
|
+
# sent to that domain, or both.
|
314
|
+
# - A sending email system or client that should use the receiving email system to
|
315
|
+
# relay messages doesn't have the correct permissions to do this.
|
316
|
+
['5.7.1', 0, 0, 'unable to relay'],
|
317
|
+
|
318
|
+
# - You use an inbound connector to receive messages from your on-premises email envi-
|
319
|
+
# ronment, and something has changed in your on-premises environment that makes the
|
320
|
+
# inbound connector's configuration incorrect.
|
321
|
+
['5.7.64', 0, 0, 'tenantattribution; relay access denied'],
|
322
|
+
|
323
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
324
|
+
['5.4.310', 0, 0, 'does not exist'], # DNS domain * does not exist
|
325
|
+
],
|
326
|
+
'notaccept' => [
|
327
|
+
['4.3.2', 0, 0, 'system not accepting network messages'],
|
328
|
+
|
329
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
330
|
+
# - You're using the ABP Routing agent, and the recipient isn't a member of the global
|
331
|
+
# address list that's specified in their address book policy (ABP). For more infor-
|
332
|
+
# mation, see Use the Exchange Management Shell to install and configure the Address
|
333
|
+
# Book Policy Routing Agent and Address book policies in Exchange Server.
|
334
|
+
['5.3.2', 0, 0, 'storedrv.deliver: missing or bad storedriver mdb properties'],
|
335
|
+
],
|
336
|
+
'policyviolation' => [
|
337
|
+
# - 5.0.350 is a generic catch-all error code for a wide variety of non-specific errors
|
338
|
+
# lfrom the recipient's email organization. The specific x-dg-ref header is too long
|
339
|
+
# message is related to Rich Text formatted messages. The specific Requested action
|
340
|
+
# not taken: policy violation detected (AS345) message is related to nested attach-
|
341
|
+
# ments.
|
342
|
+
['5.0.350', 0, 0, 'x-dg-ref header is too long'],
|
343
|
+
['5.0.350', 0, 0, 'requested action not taken: policy violation detected (as345)'],
|
344
|
+
|
345
|
+
# - The message was rejected by a mail flow rule (also known as a transport rule). This
|
346
|
+
# enhanced status code range is available when the rule is configured to reject mes-
|
347
|
+
# sages (otherwise, the default code that's used is 5.7.1). For more information, see
|
348
|
+
# Mail flow rule actions in Exchange Server.
|
349
|
+
['5.7.', 900, 999, 'delivery not authorized, message refused'],
|
350
|
+
],
|
351
|
+
'rejected' => [
|
352
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
353
|
+
# - There's a problem with the sender's email address. Verify the sender's email ad-
|
354
|
+
# dress.
|
355
|
+
['5.1.7', 0, 0, 'invalid address'],
|
356
|
+
['5.1.7', 0, 0, 'unknown sender address'],
|
357
|
+
|
358
|
+
# - A common cause of this NDR is when you use Microsoft Outlook to save an email mes-
|
359
|
+
# sage as a file, and then someone opened the message offline and replied to it. The
|
360
|
+
# message property only preserves the legacyExchangeDN attribute when Outlook deliv-
|
361
|
+
# ers the message, and therefore the lookup could fail.
|
362
|
+
# - Either the recipient address is incorrectly formatted, or the recipient couldn't be
|
363
|
+
# correctly resolved. The first step in resolving this error is to check the recipi-
|
364
|
+
# ent address, and send the message again.
|
365
|
+
['5.1.0', 0, 0, 'sender denied'],
|
366
|
+
|
367
|
+
# - The account has been blocked for sending too much spam. Typically, this problem oc-
|
368
|
+
# curs because the account has been compromised (hacked) by phishing or malware.
|
369
|
+
['5.1.8', 0, 0, 'access denied, bad outbound sender'],
|
370
|
+
|
371
|
+
# Exchange Online ---------------------------------------------------------------------
|
372
|
+
# - The sender of the message isn't allowed to send messages to the recipient.
|
373
|
+
# - This error occurs when the sender tries to send a message to a recipient but the
|
374
|
+
# sender isn't authorized to do this. This frequently occurs when a sender tries to
|
375
|
+
# send messages to a distribution group that has been configured to accept messages
|
376
|
+
# only from members of that distribution group or other authorized senders. The send-
|
377
|
+
# er must request permission to send messages to the recipient. This error can also
|
378
|
+
# occur if an Exchange transport rule rejects a message because the message matched
|
379
|
+
# conditions that are configured on the transport rule.
|
380
|
+
['5.7.1', 0, 0, 'delivery not authorized'],
|
381
|
+
|
382
|
+
# - The sender's message is rejected because the recipient address is set up to reject
|
383
|
+
# messages sent from outside of its organization. Only an email admin for the recipi-
|
384
|
+
# ent's organization can change this.
|
385
|
+
['5.7.12', 0, 0, 'sender was not authenticated by organization'],
|
386
|
+
|
387
|
+
# - The sender doesn't have permission to send to the distribution group because the
|
388
|
+
# sender isn't in the group's allowed-senders list. Depending how the group is set
|
389
|
+
# up, even the group's owner might need to be added to the allowed sender list in or-
|
390
|
+
# der to send messages to the group.
|
391
|
+
['5.7.124', 0, 0, 'sender not in allowed-senders list'],
|
392
|
+
|
393
|
+
# - The recipient address is a group distribution list that is set up to reject mes-
|
394
|
+
# sages sent from outside of its organization. Only an email admin for the recipi-
|
395
|
+
# ent's organization or the group owner can change this.
|
396
|
+
['5.7.133', 0, 0, 'sender not authenticated for group'],
|
397
|
+
|
398
|
+
# - The recipient address is a mailbox that is set up to reject messages sent from out-
|
399
|
+
# side of its organization. Only an email admin for the recipient's organization can
|
400
|
+
# change this.
|
401
|
+
['5.7.134', 0, 0, 'sender was not authenticated for mailbox'],
|
402
|
+
|
403
|
+
# - The recipient address is a public folder that is set up to reject messages sent
|
404
|
+
# from outside of its organization. Only an email admin for the recipient's organiza-
|
405
|
+
# tion can change this.
|
406
|
+
['5.7.13', 0, 0, 'sender was not authenticated for public folder'],
|
407
|
+
['5.7.135', 0, 0, 'sender was not authenticated for public folder'],
|
408
|
+
|
409
|
+
# - The recipient address is a mail user that is set up to reject messages sent from
|
410
|
+
# outside of its organization. Only an email admin for the recipient's organization
|
411
|
+
# can change this.
|
412
|
+
['5.7.136', 0, 0, 'sender was not authenticated'],
|
413
|
+
|
414
|
+
# - The sending account has been banned due to detected spam activity.
|
415
|
+
# - For details, see Fix email delivery issues for error code 451 5.7.500-699 (ASxxx)
|
416
|
+
# in Exchange Online.
|
417
|
+
# - Verify that any account issues have been resolved, and reset its credentials. To
|
418
|
+
# restore this account's ability to send mail, contact support through your regular
|
419
|
+
# channel.
|
420
|
+
['5.7.', 501, 503, 'access denied, spam abuse detected'],
|
421
|
+
|
422
|
+
# - Message was sent without a valid "From" email address.
|
423
|
+
# - Office 365 only. Each message must contain a valid email address in the "From"
|
424
|
+
# header field. Proper formatting of this address includes angle brackets around the
|
425
|
+
# email address, for example, <security@contoso.com>. Without this address Microsoft
|
426
|
+
# 365 or Office 365 will reject the message.
|
427
|
+
['5.7.512', 0, 0, 'access denied, message must be rfc 5322 section 3.6.2 compliant'],
|
428
|
+
|
429
|
+
# - A suspicious number of messages from unprovisioned domains is coming from this ten-
|
430
|
+
# ant.
|
431
|
+
# - Add and validate any and all domains that you use to send email from Microsoft 365
|
432
|
+
# or Office 365. For more information, see Fix email delivery issues for error codes
|
433
|
+
# 5.7.700 through 5.7.750 in Exchange Online.
|
434
|
+
['5.7.750', 0, 0, 'service unavailable. client blocked from sending from unregistered domains'],
|
435
|
+
|
436
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
437
|
+
['5.7.', 501, 503, 'access denied, banned sender'],
|
438
|
+
],
|
439
|
+
'securityerror' => [
|
440
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
441
|
+
# - A firewall or other device is blocking the Extended SMTP command that's required
|
442
|
+
# for Exchange Server authentication (X-EXPS). Internal email traffic is flowing
|
443
|
+
# through connectors that aren't configured to use the Exchange Server authentication
|
444
|
+
# method . Verify the remote IP address ranges on any custom Receive connectors.
|
445
|
+
['5.7.3', 0, 0, 'cannot achieve exchange server authentication'],
|
446
|
+
['5.7.3', 0, 0, 'not authorized'],
|
447
|
+
|
448
|
+
# Exchange Online ---------------------------------------------------------------------
|
449
|
+
# - DNSSEC checks have passed, yet upon connection, destination mail server doesn't re-
|
450
|
+
# spond to the STARTTLS command. The destination server responds to the STARTTLS com-
|
451
|
+
# mand, but the TLS handshake fails.
|
452
|
+
# - This message usually indicates an issue on the destination email server. Check the
|
453
|
+
# validity of the recipient address. Determine if the destination server is configur-
|
454
|
+
# ed correctly to receive the messages.
|
455
|
+
['4.7.321', 0, 0, 'starttls-not-supported: destination mail server must support tls to receive mail'],
|
456
|
+
['5.7.321', 0, 0, 'starttls-not-supported: destination mail server must support tls to receive mail'],
|
457
|
+
|
458
|
+
# - The sending email system didn't authenticate with the receiving email system. The
|
459
|
+
# receiving email system requires authentication before message submission.
|
460
|
+
# - This error occurs when the receiving server must be authenticated before message
|
461
|
+
# submission, and the sending email system hasn't authenticated with the receiving e-
|
462
|
+
# mail system. The sending email system administrator must configure the sending e-
|
463
|
+
# mail system to authenticate with the receiving email system for delivery to be suc-
|
464
|
+
# cessful.
|
465
|
+
['5.7.1', 0, 0, 'client was not authenticated'],
|
466
|
+
|
467
|
+
# - You configured an application or device to send (relay) email messages in Microsoft
|
468
|
+
# 365 or Office 365 using the smtp.office365.com endpoint, and there's a problem with
|
469
|
+
# the configuration of the application or device.
|
470
|
+
['5.7.57', 0, 0, 'client was not authenticated to send anonymous mail during mail from'],
|
471
|
+
],
|
472
|
+
'spamdetected' => [
|
473
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
474
|
+
# - The message was quarantined by content filtering. To configure exceptions to con-
|
475
|
+
# tent filtering, see Use the Exchange Management Shell to configure recipient and
|
476
|
+
# sender exceptions for content filtering.
|
477
|
+
['5.2.1', 0, 0, 'content filter agent quarantined this message'],
|
478
|
+
],
|
479
|
+
'speeding' => [
|
480
|
+
],
|
481
|
+
'suspend' => [
|
482
|
+
# Exchange Online ---------------------------------------------------------------------
|
483
|
+
# - The recipient address that you're attempting to contact isn't valid.
|
484
|
+
# - Verify the recipient's email address, and try again.
|
485
|
+
# - If you feel this is in error, contact support.
|
486
|
+
['5.7.504', 0, 0, 'recipient address rejected: access denied'],
|
487
|
+
['5.7.505', 0, 0, 'access denied, banned recipient'],
|
488
|
+
|
489
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
490
|
+
['5.2.1', 0, 0, 'mailbox cannot be accessed'],
|
491
|
+
],
|
492
|
+
'syntaxerror' => [
|
493
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
494
|
+
# - Receive connectors that are used for internal mail flow are missing the required
|
495
|
+
# Exchange Server authentication mechanism. For more information about authentication
|
496
|
+
# on Receive connectors, see Receive connector authentication mechanisms.
|
497
|
+
['5.3.3', 0, 0, 'unrecognized command'],
|
498
|
+
|
499
|
+
# - SMTP commands are sent out of sequence (for example, a server sends an SMTP command
|
500
|
+
# like AUTH or MAIL FROM before identifying itself with the EHLO command). After es-
|
501
|
+
# tablishing a connection to a messaging server, the first SMTP command must always
|
502
|
+
# be EHLO or HELO.
|
503
|
+
['5.5.2', 0, 0, 'send hello first'],
|
504
|
+
],
|
505
|
+
'systemerror' => [
|
506
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
507
|
+
# - You've configured a custom Receive connector in the Transport (Hub) service on a
|
508
|
+
# Mailbox server that listens on port 25. Typically, custom Receive connectors that
|
509
|
+
# listen on port 25 belong in the Front End Transport service on the Mailbox server.
|
510
|
+
# Important Exchange server components are inactive. You can confirm this by running
|
511
|
+
# the following command in the Exchange Management Shell:
|
512
|
+
# Get-ServerComponent -Identity <ServerName>.
|
513
|
+
# To restart all inactive components, run the following command:
|
514
|
+
# Set-ServerComponentState -Identity <ServerName> -Component ServerWideOffline
|
515
|
+
# -State Active -Requester Maintenance.
|
516
|
+
# Incompatible transport agents (in particular, after an Exchange update). After you
|
517
|
+
# identify the transport agent, disable it or uninstall it. For more information, see
|
518
|
+
# Troubleshoot transport agents.
|
519
|
+
['4.3.2', 0, 0, 'service not available'],
|
520
|
+
['4.3.2', 0, 0, 'service not active'],
|
521
|
+
|
522
|
+
# - A mail loop was detected. Verify that the FQDN property on the Receive connector
|
523
|
+
# doesn't match the FQDN of another server, service, or device that's used in mail
|
524
|
+
# flow in your organization (by default, the Receive connector uses the FQDN of the
|
525
|
+
# Exchange server).
|
526
|
+
['5.3.5', 0, 0, 'system incorrectly configured'],
|
527
|
+
|
528
|
+
# Exchange Online ---------------------------------------------------------------------
|
529
|
+
# - Journaling on-premises messages to Microsoft 365 or Office 365 isn't supported for
|
530
|
+
# this organization because they haven't turned on Journaling Archive in their set-
|
531
|
+
# tings.
|
532
|
+
# - A journaling rule is configured in the organization's on-premises environment to
|
533
|
+
# journal on-premises messages to Microsoft 365 or Office 365, but Journaling Archive
|
534
|
+
# is disabled. For this scenario to work, the organization's Office 365 administrator
|
535
|
+
# should either enable Journaling Archive or change the journaling rule to journal
|
536
|
+
# messages to a different location.
|
537
|
+
['5.3.190', 0, 0, 'journaling on-premises messages to microsoft 365 or office 365 not supported when journaling archive is disabled'],
|
538
|
+
|
539
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
540
|
+
['5.0.0', 0, 0, 'helo / ehlo requires domain address'],
|
541
|
+
['5.1.4', 0, 0, 'destination mailbox address ambiguous'],
|
542
|
+
['5.2.4', 0, 0, 'mailing list expansion problem'],
|
543
|
+
['5.2.14', 0, 0, 'misconfigured forwarding address'],
|
544
|
+
|
545
|
+
# Undocumented error messages ---------------------------------------------------------
|
546
|
+
['4.4.3', 0, 0, 'temporary server error. please try again later attr18'],
|
547
|
+
['4.7.0', 0, 0, 'temporary server error. please try again later. prx4 nexthop:'],
|
548
|
+
['4.4.24', 0, 0, 'message failed to be replicated: insufficient system resource:'],
|
549
|
+
['4.4.25', 0, 0, 'message failed to be replicated: no healthy secondary server available to accept replica at this time.'],
|
550
|
+
['4.4.28', 0, 0, 'message failed to be replicated: the operation was canceled'],
|
551
|
+
|
552
|
+
# - status=deferred (host hotmail-com.olc.protection.outlook.com[192.0.2.1] said:
|
553
|
+
# 451 4.7.500 Server busy. Please try again later from [192.0.2.2]. (AS761) (in reply
|
554
|
+
# to RCPT TO command))
|
555
|
+
['4.7.500', 0, 0, 'server busy. please try again later from '],
|
556
|
+
|
557
|
+
# - status=deferred (host apc.olc.protection.outlook.com[192.0.2.1] said:
|
558
|
+
# 451 4.7.700 PFA agent busy, please try again. [***.***.prod.protection.outlook.com]
|
559
|
+
# (in reply to MAIL FROM command))
|
560
|
+
['4.7.700', 0, 0, 'pfa agent busy, please try again.'],
|
561
|
+
],
|
562
|
+
'systemfull' => [
|
563
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
564
|
+
# - Free disk space is low (for example, the disk that holds the queue database doesn't
|
565
|
+
# have the required amount of free space). For more information, see Understanding
|
566
|
+
# back pressure. To move the queue database to a different disk, see Change the loca-
|
567
|
+
# tion of the queue database.
|
568
|
+
# - Available memory is low (for example, Exchange installed on a virtual machine that
|
569
|
+
# is configured to use dynamic memory). Always use static memory on Exchange virtual
|
570
|
+
# machines.
|
571
|
+
['4.3.1', 0, 0, 'insufficient system resources'],
|
572
|
+
],
|
573
|
+
'toomanyconn' => [
|
574
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
575
|
+
# - The combined total of recipients on the To, Cc, and Bcc lines of the message ex-
|
576
|
+
# ceeds the total number of recipients allowed in a single message for the organiza-
|
577
|
+
# tion, Receive connector, or sender. For more information, see Message size and re-
|
578
|
+
# cipient limits in Exchange Server.
|
579
|
+
['5.5.3', 0, 0, 'too many recipients'],
|
580
|
+
|
581
|
+
# Exchange Online ---------------------------------------------------------------------
|
582
|
+
# - The message has more than 200 SMTP envelope recipients from the same domain.
|
583
|
+
# - An envelope recipient is the original, unexpanded recipient that's used in the RCPT
|
584
|
+
# TO command to transmit the message between SMTP servers. When this error is return-
|
585
|
+
# ed by Microsoft 365 or Office 365, the sending server must break up the number of
|
586
|
+
# envelope recipients into smaller chunks (chunking) and resend the message.
|
587
|
+
['4.5.3', 0, 0, 'too many recipients'],
|
588
|
+
|
589
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
590
|
+
['5.2.122', 0, 0, 'the recipient has exceeded their limit for'],
|
591
|
+
|
592
|
+
# Exchange Online ---------------------------------------------------------------------
|
593
|
+
# - The recipient mailbox's ability to accept messages is being throttled because it's
|
594
|
+
# receiving too many messages too quickly. This is done so a single recipient's mail
|
595
|
+
# processing doesn't unfairly impact other recipients sharing the same mailbox data-
|
596
|
+
# base.
|
597
|
+
['4.3.2', 0, 0, 'storedrv.deliver; recipient thread limit exceeded'],
|
598
|
+
|
599
|
+
# - The sender has exceeded the recipient rate limit as described in Sending limits.
|
600
|
+
# - This could indicate the account has been compromised and is being used to send
|
601
|
+
# spam.
|
602
|
+
['5.1.90', 0, 0, "your message can't be sent because you've reached your daily limit for message recipients"],
|
603
|
+
|
604
|
+
# - The sender has exceeded the recipient rate limit or the message rate limit as de-
|
605
|
+
# scribed in Sending limits.
|
606
|
+
# - This could indicate the account has been compromised and is being used to send
|
607
|
+
# spam.
|
608
|
+
['5.2.2', 0, 0, 'submission quota exceeded'],
|
609
|
+
|
610
|
+
# - The sender has exceeded the maximum number of messages they're allowed to send per
|
611
|
+
# hour to a specific recipient in Exchange Online.
|
612
|
+
# - The automated mailer or sender should try again later, and reduce the number of
|
613
|
+
# messages they send per hour to a specific recipient. This limit helps protect
|
614
|
+
# Microsoft 365 or Office 365 users from rapidly filling their inboxes with a large
|
615
|
+
# number of messages from errant automated notification systems or other single-send-
|
616
|
+
# er mail storms.
|
617
|
+
['5.2.121', 0, 0, "recipient's per hour message receive limit from specific sender exceeded"],
|
618
|
+
|
619
|
+
# - The Microsoft 365 or Office 365 recipient has exceeded the number of messages they
|
620
|
+
# can receive per hour from all senders.
|
621
|
+
# - The automated mailer or sender should try again later, and reduce the number of
|
622
|
+
# messages they send per hour to a specific recipient. This limit helps protect
|
623
|
+
# Microsoft 365 and Office 365 users from rapidly filling their inboxes with a large
|
624
|
+
# number of messages from errant automated notification systems or other mail storms.
|
625
|
+
['5.2.122', 0, 0, "recipient's per hour message receive limit exceeded"],
|
626
|
+
|
627
|
+
# - Access denied, [$SenderIPAddress] has exceeded permitted limits within $range range
|
628
|
+
# - The sender's IPv6 range has attempted to send too many messages in too short a time
|
629
|
+
# period.
|
630
|
+
['5.7.508', 0, 0, 'has exceeded permitted limits within'],
|
631
|
+
|
632
|
+
# - The majority of traffic from this tenant has been detected as suspicious and has
|
633
|
+
# resulted in a ban on sending ability for the tenant.
|
634
|
+
# - Ensure that any compromises or open relays have been resolved, and then contact
|
635
|
+
# support through your regular channel. For more information, see Fix email delivery
|
636
|
+
# issues for error codes 5.7.700 through 5.7.750 in Exchange Online.
|
637
|
+
['5.7.', 700, 749, 'access denied, tenant has exceeded threshold'],
|
638
|
+
['5.7.', 700, 749, 'access denied, traffic not accepted from this ip'],
|
639
|
+
],
|
640
|
+
'userunknown' => [
|
641
|
+
# Exchange Server 2019 ----------------------------------------------------------------
|
642
|
+
# - The recipient's email address is incorrect (the recipient doesn't exist in the des-
|
643
|
+
# tination messaging system). Verify the recipient's email address. You recreated a
|
644
|
+
# deleted mailbox, and internal users are addressing email messages in Outlook or
|
645
|
+
# Outlook on the web using old entries in their autocomplete cache (the X.500 values
|
646
|
+
# or LegacyExchangeDN values for the recipient are now different). Tell users to de-
|
647
|
+
# lete the entry from their autocomplete cache and select the recipient again.
|
648
|
+
['5.1.1', 0, 0, 'resolver.adr.exrecipnotfound; not found'],
|
649
|
+
['5.1.1', 0, 0, 'user unknown'],
|
650
|
+
|
651
|
+
# - The recipient's email address is incorrect (for example, it contains unsupported
|
652
|
+
# characters or invalid formatting).
|
653
|
+
['5.1.3', 0, 0, 'storedrv.submit; invalid recipient address'],
|
654
|
+
|
655
|
+
# - Receive connectors reject SMTP connections that contain the top level domains de-
|
656
|
+
# fined in RFC 2606 (.test, .example, .invalid, or .localhost), This behavior is con-
|
657
|
+
# trolled by the RejectReservedTopLevelRecipientDomains parameter on the New-Receive-
|
658
|
+
# Connector and Set-ReceiveConnector cmdlets.
|
659
|
+
['5.1.', 4, 5, 'recipient address reserved by rfc 2606'],
|
660
|
+
|
661
|
+
# - Receive connectors reject SMTP connections that contain single label domains (for
|
662
|
+
# example, chris@contoso instead of chris@contoso.com) This behavior is controlled by
|
663
|
+
# the RejectSingleLabelRecipientDomains parameter on the New-ReceiveConnector and
|
664
|
+
# Set-ReceiveConnector cmdlets.
|
665
|
+
['5.1.6', 0, 0, 'recipient addresses in single label domains not accepted'],
|
666
|
+
|
667
|
+
# Exchange Online ---------------------------------------------------------------------
|
668
|
+
# - This failure might be caused by the following conditions:
|
669
|
+
# - The recipient's email address was entered incorrectly by the sender.
|
670
|
+
# - No recipient's exists in the destination email system.
|
671
|
+
# - The recipient's mailbox has been moved and the Outlook recipient cache on the
|
672
|
+
# sender's computer hasn't updated.
|
673
|
+
# - An invalid legacy domain name (DN) exists for the recipient's mailbox Active Di-
|
674
|
+
# rectory Domain Service.
|
675
|
+
# - This error typically occurs when the sender of the message incorrectly enters the
|
676
|
+
# email address of the recipient. The sender should check the recipient's email ad-
|
677
|
+
# dress and send again. This error can also occur if the recipient email address was
|
678
|
+
# correct in the past but has changed or has been removed from the destination email
|
679
|
+
# system. If the sender of the message is in the same organization as the recipient,
|
680
|
+
# and the recipient's mailbox still exists, determine whether the recipient's mailbox
|
681
|
+
# has been relocated to a new email server. If this is the case, Outlook might not
|
682
|
+
# have updated the recipient cache correctly. Instruct the sender to remove the re-
|
683
|
+
# cipient's address from sender's Outlook recipient cache and then create a new mes-
|
684
|
+
# sage. Resending the original message will result in the same failure.
|
685
|
+
['5.1.1', 0, 0, 'bad destination mailbox address'],
|
686
|
+
|
687
|
+
# - The recipient's <SMTP Address> wasn't found by SMTP address lookup.
|
688
|
+
['5.1.10', 0, 0, 'recipient not found'],
|
689
|
+
|
690
|
+
# - The recipient's address doesn't exist.
|
691
|
+
['5.4.1', 0, 0, 'recipient address rejected: access denied'],
|
692
|
+
|
693
|
+
# - The recipient's <SMTP Address> domain is @hotmail.com or @outlook.com and it wasn't
|
694
|
+
# found by SMTP address lookup.
|
695
|
+
# - Similar to 550 5.1.10.
|
696
|
+
['5.5.0', 0, 0, 'requested action not taken: mailbox unavailable'],
|
697
|
+
|
698
|
+
# Previous versions of Exchange Server ------------------------------------------------
|
699
|
+
['5.1.2', 0, 0, 'invalid x.400 address'],
|
117
700
|
],
|
118
701
|
}.freeze
|
119
702
|
|
@@ -122,51 +705,37 @@ module Sisimai
|
|
122
705
|
# @return [String] The bounce reason for Exchange Online
|
123
706
|
def get(argvs)
|
124
707
|
return argvs.reason unless argvs.reason.empty?
|
708
|
+
return '' if argvs.diagnosticcode.empty?
|
709
|
+
return '' if argvs.deliverystatus.empty?
|
710
|
+
return '' unless argvs.deliverystatus =~ /\A[245][.]\d[.]\d+\z/
|
125
711
|
|
126
712
|
statuscode = argvs.deliverystatus
|
127
|
-
|
713
|
+
esmtperror = argvs.diagnosticcode.downcase
|
714
|
+
thirddigit = statuscode.split('.')[-1].to_i
|
128
715
|
reasontext = ''
|
129
716
|
|
130
|
-
StatusList.each_key do |e|
|
131
|
-
# Try to compare with each status code as a key
|
132
|
-
next unless statuscode == e
|
133
|
-
StatusList[e].each do |f|
|
134
|
-
# Try to compare with each string of error messages
|
135
|
-
next unless statusmesg.include?(f[:string])
|
136
|
-
reasontext = f[:reason]
|
137
|
-
break
|
138
|
-
end
|
139
|
-
break unless reasontext.empty?
|
140
|
-
end
|
141
|
-
return reasontext unless reasontext.empty?
|
142
|
-
|
143
|
-
ReStatuses.each_key do |e|
|
144
|
-
# Try to compare with each string of delivery status codes
|
145
|
-
next unless statuscode =~ e
|
146
|
-
ReStatuses[e].each do |f|
|
147
|
-
# Try to compare with each string of error messages
|
148
|
-
f[:string].each do |g|
|
149
|
-
next unless statusmesg.include?(g)
|
150
|
-
reasontext = f[:reason]
|
151
|
-
break
|
152
|
-
end
|
153
|
-
break unless reasontext.empty?
|
154
|
-
end
|
155
|
-
break unless reasontext.empty?
|
156
|
-
end
|
157
|
-
return reasontext unless reasontext.empty?
|
158
|
-
|
159
|
-
# D.S.N. included in the error message did not matched with any
|
160
|
-
# key in ReStatuses
|
161
717
|
MessagesOf.each_key do |e|
|
162
|
-
#
|
718
|
+
# Each key is a reason name
|
163
719
|
MessagesOf[e].each do |f|
|
164
|
-
|
720
|
+
# ["status-code", min, max, "error message"]
|
721
|
+
if f[1] == f[2]
|
722
|
+
# This error code have no range
|
723
|
+
next unless statuscode == f[0]
|
724
|
+
else
|
725
|
+
# This error code has a range
|
726
|
+
next unless statuscode.start_with?(f[0])
|
727
|
+
next if thirddigit < f[1]
|
728
|
+
next if thirddigit > f[2]
|
729
|
+
end
|
730
|
+
|
731
|
+
next unless esmtperror.include?(f[3])
|
165
732
|
reasontext = e
|
166
733
|
break
|
167
734
|
end
|
168
735
|
break unless reasontext.empty?
|
169
736
|
end
|
737
|
+
|
738
|
+
|
170
739
|
return reasontext
|
171
740
|
end
|
172
741
|
|