|
@@ 177-181 (lines=5) @@
|
| 174 |
|
* # (expanded from: <[email protected]>) # |
| 175 |
|
* # # |
| 176 |
|
*/ |
| 177 |
|
elseif (\preg_match("/Can't\s+create\s+output.*<(\S+@\S+\w)>/is", $body, $match)) { |
| 178 |
|
$result['rule_cat'] = 'unknown'; |
| 179 |
|
$result['rule_no'] = '0169'; |
| 180 |
|
$result['email'] = $match[1]; |
| 181 |
|
} /* rule: unknown |
| 182 |
|
* sample: |
| 183 |
|
* ????????????????: |
| 184 |
|
* [email protected] : ????, ?????. |
|
@@ 202-206 (lines=5) @@
|
| 199 |
|
* Delivery to the following recipients failed. |
| 200 |
|
* [email protected] |
| 201 |
|
*/ |
| 202 |
|
elseif (\preg_match("/delivery[^\n\r]+failed\S*\s+(\S+@\S+\w)\s/i", $body, $match)) { |
| 203 |
|
$result['rule_cat'] = 'unknown'; |
| 204 |
|
$result['rule_no'] = '0013'; |
| 205 |
|
$result['email'] = $match[1]; |
| 206 |
|
} /* rule: unknown |
| 207 |
|
* sample: |
| 208 |
|
* A message that you sent could not be delivered to one or more of its |
| 209 |
|
* recipients. This is a permanent error. The following address(es) failed: |
|
@@ 223-227 (lines=5) @@
|
| 220 |
|
* 111.111.111.11 does not like recipient. |
| 221 |
|
* Remote host said: 550 Invalid recipient: <[email protected]> |
| 222 |
|
*/ |
| 223 |
|
elseif (\preg_match("/Invalid.*(?:alias|account|recipient|address|email|mailbox|user).*<(\S+@\S+\w)>/is", $body, $match)) { |
| 224 |
|
$result['rule_cat'] = 'unknown'; |
| 225 |
|
$result['rule_no'] = '0233'; |
| 226 |
|
$result['email'] = $match[1]; |
| 227 |
|
} /* rule: unknown |
| 228 |
|
* sample: |
| 229 |
|
* Sent >>> RCPT TO: <[email protected]> |
| 230 |
|
* Received <<< 550 [email protected]... No such user |
|
@@ 236-240 (lines=5) @@
|
| 233 |
|
* [email protected] |
| 234 |
|
* ***************** End of message *************** |
| 235 |
|
*/ |
| 236 |
|
elseif (\preg_match("/No\s+such.*(?:alias|account|recipient|address|email|mailbox|user).*<(\S+@\S+\w)>/is", $body, $match)) { |
| 237 |
|
$result['rule_cat'] = 'unknown'; |
| 238 |
|
$result['rule_no'] = '0234'; |
| 239 |
|
$result['email'] = $match[1]; |
| 240 |
|
} /* rule: unknown |
| 241 |
|
* sample: |
| 242 |
|
* Diagnostic-Code: X-Notes; Recipient user name info ([email protected]) not unique. Several matches found in Domino Directory. |
| 243 |
|
*/ |
|
@@ 265-269 (lines=5) @@
|
| 262 |
|
* mail.local: /var/mail/2b/10/kellen.lee: Disc quota exceeded |
| 263 |
|
* 554 <[email protected]>... Service unavailable |
| 264 |
|
*/ |
| 265 |
|
elseif (\preg_match("/quota\s+exceeded.*<(\S+@\S+\w)>/is", $body, $match)) { |
| 266 |
|
$result['rule_cat'] = 'full'; |
| 267 |
|
$result['rule_no'] = '0126'; |
| 268 |
|
$result['email'] = $match[1]; |
| 269 |
|
} /* rule: full |
| 270 |
|
* sample: |
| 271 |
|
* Hi. This is the qmail-send program at 263.domain.com. |
| 272 |
|
* <[email protected]>: |
|
@@ 290-294 (lines=5) @@
|
| 287 |
|
* sample: |
| 288 |
|
* The message to [email protected] is bounced because : Quota exceed the hard limit |
| 289 |
|
*/ |
| 290 |
|
elseif (\preg_match("/The message to (\S+@\S+\w)\s.*bounce.*Quota exceed/i", $body, $match)) { |
| 291 |
|
$result['rule_cat'] = 'full'; |
| 292 |
|
$result['rule_no'] = '0168'; |
| 293 |
|
$result['email'] = $match[1]; |
| 294 |
|
} /* rule: full |
| 295 |
|
* sample: |
| 296 |
|
* Message rejected. Not enough storage space in user's mailbox to accept message. |
| 297 |
|
*/ |
|
@@ 312-316 (lines=5) @@
|
| 309 |
|
} /* |
| 310 |
|
* <[email protected]> is restricted |
| 311 |
|
*/ |
| 312 |
|
elseif (\preg_match("/(\S+@\S+\w).*n? is restricted/i", $body, $match)) { |
| 313 |
|
$result['rule_cat'] = 'inactive'; |
| 314 |
|
$result['rule_no'] = '0201'; |
| 315 |
|
$result['email'] = $match[1]; |
| 316 |
|
} /* rule: inactive |
| 317 |
|
* sample: |
| 318 |
|
* [email protected] [Inactive account] |
| 319 |
|
*/ |
|
@@ 327-331 (lines=5) @@
|
| 324 |
|
*<[email protected]>: host mx3.HOTMAIL.COM said: 550 |
| 325 |
|
* Requested action not taken: mailbox unavailable (in reply to RCPT TO command) |
| 326 |
|
*/ |
| 327 |
|
elseif (\preg_match("/<(\S+@\S+\w)>.*\n.*mailbox unavailable/i", $body, $match)) { |
| 328 |
|
$result['rule_cat'] = 'unknown'; |
| 329 |
|
$result['rule_no'] = '124'; |
| 330 |
|
$result['email'] = $match[1]; |
| 331 |
|
} /* |
| 332 |
|
* rule: mailbox unknown; |
| 333 |
|
* sample: |
| 334 |
|
* [email protected] |
|
@@ 342-346 (lines=5) @@
|
| 339 |
|
* http://support.google.com/mail/bin/answer.py?answer=6596 n7si4762785wiy.46 |
| 340 |
|
* (in reply to RCPT TO command) |
| 341 |
|
*/ |
| 342 |
|
elseif (\preg_match("/<(\S+@\S+\w)>.*\n?.*\n?.*account that you tried to reach does not exist/i", $body, $match)) { |
| 343 |
|
$result['rule_cat'] = 'unknown'; |
| 344 |
|
$result['rule_no'] = '7770'; |
| 345 |
|
$result['email'] = $match[1]; |
| 346 |
|
} /* rule: dns_unknown |
| 347 |
|
* sample1: |
| 348 |
|
* Delivery to the following recipient failed permanently: |
| 349 |
|
* |
|
@@ 402-407 (lines=6) @@
|
| 399 |
|
* <[email protected]>: |
| 400 |
|
* Unable to switch to /var/vpopmail/domains/domain.com: input/output error. (#4.3.0) |
| 401 |
|
*/ |
| 402 |
|
elseif (\preg_match("/input\/output error/i", $body, $match)) { |
| 403 |
|
$result['rule_cat'] = 'internal_error'; |
| 404 |
|
$result['rule_no'] = '0172'; |
| 405 |
|
$result['bounce_type'] = 'hard'; |
| 406 |
|
$result['remove'] = 1; |
| 407 |
|
} /* rule: internal_error |
| 408 |
|
* sample: |
| 409 |
|
* <[email protected]>: |
| 410 |
|
* can not open new email file errno=13 file=/home/vpopmail/domains/fromc.com/0/domain/Maildir/tmp/1155254417.28358.mx05,S=212350 |
|
@@ 412-417 (lines=6) @@
|
| 409 |
|
* <[email protected]>: |
| 410 |
|
* can not open new email file errno=13 file=/home/vpopmail/domains/fromc.com/0/domain/Maildir/tmp/1155254417.28358.mx05,S=212350 |
| 411 |
|
*/ |
| 412 |
|
elseif (\preg_match('/can not open new email file/i', $body, $match)) { |
| 413 |
|
$result['rule_cat'] = 'internal_error'; |
| 414 |
|
$result['rule_no'] = '0173'; |
| 415 |
|
$result['bounce_type'] = 'hard'; |
| 416 |
|
$result['remove'] = 1; |
| 417 |
|
} /* rule: defer |
| 418 |
|
* sample: |
| 419 |
|
* <[email protected]>: |
| 420 |
|
* 111.111.111.111 failed after I sent the message. |
|
@@ 430-434 (lines=5) @@
|
| 427 |
|
* sample: |
| 428 |
|
* AutoReply message from [email protected] |
| 429 |
|
*/ |
| 430 |
|
elseif (\preg_match("/^AutoReply message from (\S+@\S+\w)/i", $body, $match)) { |
| 431 |
|
$result['rule_cat'] = 'autoreply'; |
| 432 |
|
$result['rule_no'] = '0167'; |
| 433 |
|
$result['email'] = $match[1]; |
| 434 |
|
} /* rule: block |
| 435 |
|
* sample: |
| 436 |
|
* Delivery to the following recipient failed permanently: |
| 437 |
|
* [email protected] |
|
@@ 616-620 (lines=5) @@
|
| 613 |
|
* sample: DSN Message only |
| 614 |
|
* User quota exceeded: SMTP <[email protected]> |
| 615 |
|
*/ |
| 616 |
|
if (\preg_match("/quota exceed.*<(\S+@\S+\w)>/is", $dsn_msg, $match)) { |
| 617 |
|
$result['rule_cat'] = 'full'; |
| 618 |
|
$result['rule_no'] = '0161'; |
| 619 |
|
$result['email'] = $match[1]; |
| 620 |
|
} |
| 621 |
|
} else { |
| 622 |
|
/* action could be one of them as RFC:1894 |
| 623 |
|
* "failed" / "delayed" / "delivered" / "relayed" / "expanded" |