sisimai 4.14.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sisimai might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.rubocop.yml +165 -0
- data/.travis.yml +21 -0
- data/ANALYTICAL-PRECISION +54 -0
- data/Changes +5 -0
- data/Developers.mk +129 -0
- data/Gemfile +9 -0
- data/LICENSE +26 -0
- data/Makefile +56 -0
- data/README.md +300 -0
- data/Rakefile +7 -0
- data/Repository.mk +69 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/sisimai.rb +60 -0
- data/lib/sisimai/address.rb +218 -0
- data/lib/sisimai/arf.rb +343 -0
- data/lib/sisimai/data.rb +413 -0
- data/lib/sisimai/data/json.rb +36 -0
- data/lib/sisimai/data/yaml.rb +32 -0
- data/lib/sisimai/datetime.rb +518 -0
- data/lib/sisimai/mail.rb +82 -0
- data/lib/sisimai/mail/maildir.rb +85 -0
- data/lib/sisimai/mail/mbox.rb +69 -0
- data/lib/sisimai/mail/stdin.rb +52 -0
- data/lib/sisimai/mda.rb +152 -0
- data/lib/sisimai/message.rb +510 -0
- data/lib/sisimai/mime.rb +127 -0
- data/lib/sisimai/msp.rb +54 -0
- data/lib/sisimai/msp/de/einsundeins.rb +174 -0
- data/lib/sisimai/msp/de/gmx.rb +197 -0
- data/lib/sisimai/msp/jp/biglobe.rb +179 -0
- data/lib/sisimai/msp/jp/ezweb.rb +292 -0
- data/lib/sisimai/msp/jp/kddi.rb +195 -0
- data/lib/sisimai/msp/ru/mailru.rb +306 -0
- data/lib/sisimai/msp/ru/yandex.rb +241 -0
- data/lib/sisimai/msp/uk/messagelabs.rb +250 -0
- data/lib/sisimai/msp/us/amazonses.rb +248 -0
- data/lib/sisimai/msp/us/aol.rb +234 -0
- data/lib/sisimai/msp/us/bigfoot.rb +243 -0
- data/lib/sisimai/msp/us/facebook.rb +306 -0
- data/lib/sisimai/msp/us/google.rb +357 -0
- data/lib/sisimai/msp/us/outlook.rb +243 -0
- data/lib/sisimai/msp/us/receivingses.rb +247 -0
- data/lib/sisimai/msp/us/sendgrid.rb +257 -0
- data/lib/sisimai/msp/us/verizon.rb +311 -0
- data/lib/sisimai/msp/us/yahoo.rb +178 -0
- data/lib/sisimai/msp/us/zoho.rb +198 -0
- data/lib/sisimai/mta.rb +55 -0
- data/lib/sisimai/mta/activehunter.rb +155 -0
- data/lib/sisimai/mta/apachejames.rb +194 -0
- data/lib/sisimai/mta/courier.rb +307 -0
- data/lib/sisimai/mta/domino.rb +209 -0
- data/lib/sisimai/mta/exchange.rb +314 -0
- data/lib/sisimai/mta/exim.rb +549 -0
- data/lib/sisimai/mta/imailserver.rb +227 -0
- data/lib/sisimai/mta/interscanmss.rb +167 -0
- data/lib/sisimai/mta/mailfoundry.rb +173 -0
- data/lib/sisimai/mta/mailmarshalsmtp.rb +206 -0
- data/lib/sisimai/mta/mcafee.rb +201 -0
- data/lib/sisimai/mta/messagingserver.rb +241 -0
- data/lib/sisimai/mta/mfilter.rb +190 -0
- data/lib/sisimai/mta/mxlogic.rb +283 -0
- data/lib/sisimai/mta/notes.rb +206 -0
- data/lib/sisimai/mta/opensmtpd.rb +225 -0
- data/lib/sisimai/mta/postfix.rb +306 -0
- data/lib/sisimai/mta/qmail.rb +335 -0
- data/lib/sisimai/mta/sendmail.rb +317 -0
- data/lib/sisimai/mta/surfcontrol.rb +193 -0
- data/lib/sisimai/mta/userdefined.rb +148 -0
- data/lib/sisimai/mta/v5sendmail.rb +232 -0
- data/lib/sisimai/mta/x1.rb +156 -0
- data/lib/sisimai/mta/x2.rb +157 -0
- data/lib/sisimai/mta/x3.rb +171 -0
- data/lib/sisimai/mta/x4.rb +365 -0
- data/lib/sisimai/mta/x5.rb +208 -0
- data/lib/sisimai/order.rb +217 -0
- data/lib/sisimai/reason.rb +235 -0
- data/lib/sisimai/reason/blocked.rb +105 -0
- data/lib/sisimai/reason/contenterror.rb +53 -0
- data/lib/sisimai/reason/exceedlimit.rb +60 -0
- data/lib/sisimai/reason/expired.rb +53 -0
- data/lib/sisimai/reason/filtered.rb +98 -0
- data/lib/sisimai/reason/hasmoved.rb +45 -0
- data/lib/sisimai/reason/hostunknown.rb +74 -0
- data/lib/sisimai/reason/mailboxfull.rb +118 -0
- data/lib/sisimai/reason/mailererror.rb +55 -0
- data/lib/sisimai/reason/mesgtoobig.rb +77 -0
- data/lib/sisimai/reason/networkerror.rb +57 -0
- data/lib/sisimai/reason/norelaying.rb +71 -0
- data/lib/sisimai/reason/notaccept.rb +63 -0
- data/lib/sisimai/reason/onhold.rb +45 -0
- data/lib/sisimai/reason/rejected.rb +101 -0
- data/lib/sisimai/reason/securityerror.rb +72 -0
- data/lib/sisimai/reason/spamdetected.rb +172 -0
- data/lib/sisimai/reason/suspend.rb +58 -0
- data/lib/sisimai/reason/systemerror.rb +69 -0
- data/lib/sisimai/reason/systemfull.rb +45 -0
- data/lib/sisimai/reason/toomanyconn.rb +73 -0
- data/lib/sisimai/reason/userunknown.rb +194 -0
- data/lib/sisimai/rfc2606.rb +24 -0
- data/lib/sisimai/rfc3464.rb +497 -0
- data/lib/sisimai/rfc3834.rb +150 -0
- data/lib/sisimai/rfc5322.rb +204 -0
- data/lib/sisimai/rhost.rb +47 -0
- data/lib/sisimai/rhost/googleapps.rb +237 -0
- data/lib/sisimai/smtp.rb +58 -0
- data/lib/sisimai/smtp/reply.rb +81 -0
- data/lib/sisimai/smtp/status.rb +755 -0
- data/lib/sisimai/string.rb +65 -0
- data/lib/sisimai/time.rb +11 -0
- data/lib/sisimai/version.rb +4 -0
- data/set-of-emails/README.md +35 -0
- data/set-of-emails/mailbox/mbox-0 +2467 -0
- data/set-of-emails/mailbox/mbox-1 +71 -0
- data/set-of-emails/maildir/bsd/README.md +261 -0
- data/set-of-emails/maildir/bsd/activehunter-01.eml +54 -0
- data/set-of-emails/maildir/bsd/activehunter-02.eml +53 -0
- data/set-of-emails/maildir/bsd/apachejames-01.eml +46 -0
- data/set-of-emails/maildir/bsd/arf-01.eml +66 -0
- data/set-of-emails/maildir/bsd/arf-02.eml +68 -0
- data/set-of-emails/maildir/bsd/arf-03.eml +56 -0
- data/set-of-emails/maildir/bsd/arf-04.eml +89 -0
- data/set-of-emails/maildir/bsd/arf-05.eml +82 -0
- data/set-of-emails/maildir/bsd/arf-06.eml +166 -0
- data/set-of-emails/maildir/bsd/arf-07.eml +59 -0
- data/set-of-emails/maildir/bsd/arf-08.eml +103 -0
- data/set-of-emails/maildir/bsd/arf-09.eml +104 -0
- data/set-of-emails/maildir/bsd/arf-10.eml +56 -0
- data/set-of-emails/maildir/bsd/arf-11.eml +37 -0
- data/set-of-emails/maildir/bsd/arf-12.eml +40 -0
- data/set-of-emails/maildir/bsd/arf-13.eml +76 -0
- data/set-of-emails/maildir/bsd/arf-14.eml +333 -0
- data/set-of-emails/maildir/bsd/arf-15.eml +66 -0
- data/set-of-emails/maildir/bsd/courier-01.eml +79 -0
- data/set-of-emails/maildir/bsd/courier-02.eml +83 -0
- data/set-of-emails/maildir/bsd/courier-03.eml +85 -0
- data/set-of-emails/maildir/bsd/courier-04.eml +87 -0
- data/set-of-emails/maildir/bsd/de-einsundeins-01.eml +38 -0
- data/set-of-emails/maildir/bsd/de-gmx-01.eml +52 -0
- data/set-of-emails/maildir/bsd/de-gmx-02.eml +51 -0
- data/set-of-emails/maildir/bsd/de-gmx-03.eml +56 -0
- data/set-of-emails/maildir/bsd/de-gmx-04.eml +51 -0
- data/set-of-emails/maildir/bsd/domino-01.eml +33 -0
- data/set-of-emails/maildir/bsd/domino-02.eml +83 -0
- data/set-of-emails/maildir/bsd/exchange-01.eml +31 -0
- data/set-of-emails/maildir/bsd/exchange-02.eml +67 -0
- data/set-of-emails/maildir/bsd/exchange-03.eml +52 -0
- data/set-of-emails/maildir/bsd/exchange-04.eml +28 -0
- data/set-of-emails/maildir/bsd/exchange-05.eml +56 -0
- data/set-of-emails/maildir/bsd/exchange-06.eml +151 -0
- data/set-of-emails/maildir/bsd/exim-01.eml +46 -0
- data/set-of-emails/maildir/bsd/exim-02.eml +41 -0
- data/set-of-emails/maildir/bsd/exim-03.eml +42 -0
- data/set-of-emails/maildir/bsd/exim-04.eml +46 -0
- data/set-of-emails/maildir/bsd/exim-05.eml +49 -0
- data/set-of-emails/maildir/bsd/exim-06.eml +44 -0
- data/set-of-emails/maildir/bsd/exim-07.eml +28 -0
- data/set-of-emails/maildir/bsd/exim-08.eml +42 -0
- data/set-of-emails/maildir/bsd/exim-09.eml +169 -0
- data/set-of-emails/maildir/bsd/exim-10.eml +718 -0
- data/set-of-emails/maildir/bsd/exim-11.eml +718 -0
- data/set-of-emails/maildir/bsd/exim-12.eml +75 -0
- data/set-of-emails/maildir/bsd/exim-13.eml +145 -0
- data/set-of-emails/maildir/bsd/exim-14.eml +32 -0
- data/set-of-emails/maildir/bsd/exim-15.eml +49 -0
- data/set-of-emails/maildir/bsd/exim-16.eml +98 -0
- data/set-of-emails/maildir/bsd/exim-17.eml +50 -0
- data/set-of-emails/maildir/bsd/exim-18.eml +96 -0
- data/set-of-emails/maildir/bsd/exim-19.eml +52 -0
- data/set-of-emails/maildir/bsd/exim-20.eml +159 -0
- data/set-of-emails/maildir/bsd/exim-21.eml +150 -0
- data/set-of-emails/maildir/bsd/exim-22.eml +50 -0
- data/set-of-emails/maildir/bsd/exim-23.eml +57 -0
- data/set-of-emails/maildir/bsd/exim-24.eml +107 -0
- data/set-of-emails/maildir/bsd/exim-25.eml +18 -0
- data/set-of-emails/maildir/bsd/exim-26.eml +111 -0
- data/set-of-emails/maildir/bsd/exim-27.eml +120 -0
- data/set-of-emails/maildir/bsd/exim-28.eml +148 -0
- data/set-of-emails/maildir/bsd/google-apps-01.eml +66 -0
- data/set-of-emails/maildir/bsd/imailserver-01.eml +27 -0
- data/set-of-emails/maildir/bsd/imailserver-02.eml +36 -0
- data/set-of-emails/maildir/bsd/imailserver-03.eml +28 -0
- data/set-of-emails/maildir/bsd/imailserver-04.eml +15 -0
- data/set-of-emails/maildir/bsd/imailserver-05.eml +92 -0
- data/set-of-emails/maildir/bsd/imailserver-06.eml +29 -0
- data/set-of-emails/maildir/bsd/interscanmss-01.eml +49 -0
- data/set-of-emails/maildir/bsd/interscanmss-02.eml +259 -0
- data/set-of-emails/maildir/bsd/jp-biglobe-01.eml +43 -0
- data/set-of-emails/maildir/bsd/jp-ezweb-01.eml +36 -0
- data/set-of-emails/maildir/bsd/jp-ezweb-02.eml +65 -0
- data/set-of-emails/maildir/bsd/jp-ezweb-03.eml +35 -0
- data/set-of-emails/maildir/bsd/jp-ezweb-04.eml +38 -0
- data/set-of-emails/maildir/bsd/jp-ezweb-05.eml +38 -0
- data/set-of-emails/maildir/bsd/jp-ezweb-06.eml +33 -0
- data/set-of-emails/maildir/bsd/jp-kddi-01.eml +49 -0
- data/set-of-emails/maildir/bsd/jp-kddi-02.eml +54 -0
- data/set-of-emails/maildir/bsd/jp-kddi-03.eml +54 -0
- data/set-of-emails/maildir/bsd/mailfoundry-01.eml +50 -0
- data/set-of-emails/maildir/bsd/mailfoundry-02.eml +49 -0
- data/set-of-emails/maildir/bsd/mailmarshalsmtp-01.eml +43 -0
- data/set-of-emails/maildir/bsd/mcafee-01.eml +63 -0
- data/set-of-emails/maildir/bsd/mcafee-02.eml +65 -0
- data/set-of-emails/maildir/bsd/mcafee-03.eml +59 -0
- data/set-of-emails/maildir/bsd/messagingserver-01.eml +102 -0
- data/set-of-emails/maildir/bsd/messagingserver-02.eml +72 -0
- data/set-of-emails/maildir/bsd/messagingserver-03.eml +70 -0
- data/set-of-emails/maildir/bsd/messagingserver-04.eml +102 -0
- data/set-of-emails/maildir/bsd/messagingserver-05.eml +98 -0
- data/set-of-emails/maildir/bsd/messagingserver-06.eml +101 -0
- data/set-of-emails/maildir/bsd/messagingserver-07.eml +129 -0
- data/set-of-emails/maildir/bsd/mfilter-01.eml +49 -0
- data/set-of-emails/maildir/bsd/mfilter-02.eml +48 -0
- data/set-of-emails/maildir/bsd/mfilter-03.eml +43 -0
- data/set-of-emails/maildir/bsd/mxlogic-01.eml +47 -0
- data/set-of-emails/maildir/bsd/mxlogic-02.eml +44 -0
- data/set-of-emails/maildir/bsd/mxlogic-03.eml +46 -0
- data/set-of-emails/maildir/bsd/notes-01.eml +42 -0
- data/set-of-emails/maildir/bsd/notes-02.eml +42 -0
- data/set-of-emails/maildir/bsd/notes-03.eml +38 -0
- data/set-of-emails/maildir/bsd/notes-04.eml +181 -0
- data/set-of-emails/maildir/bsd/opensmtpd-01.eml +33 -0
- data/set-of-emails/maildir/bsd/opensmtpd-02.eml +33 -0
- data/set-of-emails/maildir/bsd/opensmtpd-03.eml +36 -0
- data/set-of-emails/maildir/bsd/opensmtpd-04.eml +40 -0
- data/set-of-emails/maildir/bsd/opensmtpd-05.eml +36 -0
- data/set-of-emails/maildir/bsd/postfix-01.eml +60 -0
- data/set-of-emails/maildir/bsd/postfix-02.eml +78 -0
- data/set-of-emails/maildir/bsd/postfix-03.eml +71 -0
- data/set-of-emails/maildir/bsd/postfix-04.eml +89 -0
- data/set-of-emails/maildir/bsd/postfix-05.eml +78 -0
- data/set-of-emails/maildir/bsd/postfix-06.eml +72 -0
- data/set-of-emails/maildir/bsd/postfix-07.eml +74 -0
- data/set-of-emails/maildir/bsd/postfix-08.eml +78 -0
- data/set-of-emails/maildir/bsd/postfix-09.eml +76 -0
- data/set-of-emails/maildir/bsd/postfix-10.eml +73 -0
- data/set-of-emails/maildir/bsd/postfix-11.eml +86 -0
- data/set-of-emails/maildir/bsd/postfix-12.eml +71 -0
- data/set-of-emails/maildir/bsd/postfix-13.eml +81 -0
- data/set-of-emails/maildir/bsd/postfix-14.eml +68 -0
- data/set-of-emails/maildir/bsd/postfix-15.eml +69 -0
- data/set-of-emails/maildir/bsd/postfix-16.eml +73 -0
- data/set-of-emails/maildir/bsd/postfix-17.eml +68 -0
- data/set-of-emails/maildir/bsd/postfix-18.eml +121 -0
- data/set-of-emails/maildir/bsd/postfix-19.eml +105 -0
- data/set-of-emails/maildir/bsd/postfix-20.eml +231 -0
- data/set-of-emails/maildir/bsd/postfix-21.eml +60 -0
- data/set-of-emails/maildir/bsd/qmail-01.eml +40 -0
- data/set-of-emails/maildir/bsd/qmail-02.eml +35 -0
- data/set-of-emails/maildir/bsd/qmail-03.eml +22 -0
- data/set-of-emails/maildir/bsd/qmail-04.eml +31 -0
- data/set-of-emails/maildir/bsd/qmail-05.eml +31 -0
- data/set-of-emails/maildir/bsd/qmail-06.eml +39 -0
- data/set-of-emails/maildir/bsd/qmail-07.eml +22 -0
- data/set-of-emails/maildir/bsd/qmail-08.eml +23 -0
- data/set-of-emails/maildir/bsd/qmail-09.eml +103 -0
- data/set-of-emails/maildir/bsd/rfc3464-01.eml +60 -0
- data/set-of-emails/maildir/bsd/rfc3464-02.eml +43 -0
- data/set-of-emails/maildir/bsd/rfc3464-03.eml +40 -0
- data/set-of-emails/maildir/bsd/rfc3464-04.eml +50 -0
- data/set-of-emails/maildir/bsd/rfc3464-05.eml +63 -0
- data/set-of-emails/maildir/bsd/rfc3464-06.eml +48 -0
- data/set-of-emails/maildir/bsd/rfc3464-07.eml +88 -0
- data/set-of-emails/maildir/bsd/rfc3464-08.eml +70 -0
- data/set-of-emails/maildir/bsd/rfc3464-09.eml +93 -0
- data/set-of-emails/maildir/bsd/rfc3464-10.eml +467 -0
- data/set-of-emails/maildir/bsd/rfc3464-11.eml +1171 -0
- data/set-of-emails/maildir/bsd/rfc3464-12.eml +101 -0
- data/set-of-emails/maildir/bsd/rfc3464-13.eml +131 -0
- data/set-of-emails/maildir/bsd/rfc3464-14.eml +121 -0
- data/set-of-emails/maildir/bsd/rfc3464-15.eml +144 -0
- data/set-of-emails/maildir/bsd/rfc3464-16.eml +36 -0
- data/set-of-emails/maildir/bsd/rfc3464-17.eml +109 -0
- data/set-of-emails/maildir/bsd/rfc3464-18.eml +149 -0
- data/set-of-emails/maildir/bsd/rfc3464-19.eml +65 -0
- data/set-of-emails/maildir/bsd/rfc3464-20.eml +145 -0
- data/set-of-emails/maildir/bsd/rfc3464-21.eml +146 -0
- data/set-of-emails/maildir/bsd/rfc3464-22.eml +105 -0
- data/set-of-emails/maildir/bsd/rfc3464-23.eml +21 -0
- data/set-of-emails/maildir/bsd/rfc3464-24.eml +27 -0
- data/set-of-emails/maildir/bsd/rfc3464-25.eml +33 -0
- data/set-of-emails/maildir/bsd/rfc3464-26.eml +98 -0
- data/set-of-emails/maildir/bsd/rfc3464-27.eml +180 -0
- data/set-of-emails/maildir/bsd/rfc3834-01.eml +37 -0
- data/set-of-emails/maildir/bsd/rfc3834-02.eml +51 -0
- data/set-of-emails/maildir/bsd/rfc3834-03.eml +33 -0
- data/set-of-emails/maildir/bsd/ru-mailru-01.eml +54 -0
- data/set-of-emails/maildir/bsd/ru-mailru-02.eml +54 -0
- data/set-of-emails/maildir/bsd/ru-mailru-03.eml +62 -0
- data/set-of-emails/maildir/bsd/ru-mailru-04.eml +54 -0
- data/set-of-emails/maildir/bsd/ru-yandex-01.eml +102 -0
- data/set-of-emails/maildir/bsd/ru-yandex-02.eml +113 -0
- data/set-of-emails/maildir/bsd/ru-yandex-03.eml +101 -0
- data/set-of-emails/maildir/bsd/sendmail-01.eml +70 -0
- data/set-of-emails/maildir/bsd/sendmail-02.eml +82 -0
- data/set-of-emails/maildir/bsd/sendmail-03.eml +76 -0
- data/set-of-emails/maildir/bsd/sendmail-04.eml +63 -0
- data/set-of-emails/maildir/bsd/sendmail-05.eml +64 -0
- data/set-of-emails/maildir/bsd/sendmail-06.eml +67 -0
- data/set-of-emails/maildir/bsd/sendmail-07.eml +65 -0
- data/set-of-emails/maildir/bsd/sendmail-08.eml +62 -0
- data/set-of-emails/maildir/bsd/sendmail-09.eml +60 -0
- data/set-of-emails/maildir/bsd/sendmail-10.eml +82 -0
- data/set-of-emails/maildir/bsd/sendmail-11.eml +60 -0
- data/set-of-emails/maildir/bsd/sendmail-12.eml +62 -0
- data/set-of-emails/maildir/bsd/sendmail-13.eml +66 -0
- data/set-of-emails/maildir/bsd/sendmail-14.eml +64 -0
- data/set-of-emails/maildir/bsd/sendmail-15.eml +60 -0
- data/set-of-emails/maildir/bsd/sendmail-16.eml +69 -0
- data/set-of-emails/maildir/bsd/sendmail-17.eml +68 -0
- data/set-of-emails/maildir/bsd/sendmail-18.eml +64 -0
- data/set-of-emails/maildir/bsd/sendmail-19.eml +71 -0
- data/set-of-emails/maildir/bsd/sendmail-20.eml +120 -0
- data/set-of-emails/maildir/bsd/sendmail-21.eml +69 -0
- data/set-of-emails/maildir/bsd/sendmail-22.eml +73 -0
- data/set-of-emails/maildir/bsd/sendmail-23.eml +137 -0
- data/set-of-emails/maildir/bsd/sendmail-24.eml +66 -0
- data/set-of-emails/maildir/bsd/sendmail-25.eml +70 -0
- data/set-of-emails/maildir/bsd/sendmail-26.eml +71 -0
- data/set-of-emails/maildir/bsd/sendmail-27.eml +69 -0
- data/set-of-emails/maildir/bsd/sendmail-28.eml +69 -0
- data/set-of-emails/maildir/bsd/sendmail-29.eml +70 -0
- data/set-of-emails/maildir/bsd/sendmail-30.eml +68 -0
- data/set-of-emails/maildir/bsd/sendmail-31.eml +80 -0
- data/set-of-emails/maildir/bsd/sendmail-32.eml +71 -0
- data/set-of-emails/maildir/bsd/sendmail-33.eml +71 -0
- data/set-of-emails/maildir/bsd/sendmail-34.eml +75 -0
- data/set-of-emails/maildir/bsd/sendmail-35.eml +70 -0
- data/set-of-emails/maildir/bsd/sendmail-36.eml +71 -0
- data/set-of-emails/maildir/bsd/sendmail-37.eml +71 -0
- data/set-of-emails/maildir/bsd/surfcontrol-01.eml +79 -0
- data/set-of-emails/maildir/bsd/surfcontrol-02.eml +70 -0
- data/set-of-emails/maildir/bsd/surfcontrol-03.eml +70 -0
- data/set-of-emails/maildir/bsd/uk-messagelabs-01.eml +76 -0
- data/set-of-emails/maildir/bsd/us-amazonses-01.eml +59 -0
- data/set-of-emails/maildir/bsd/us-amazonses-02.eml +177 -0
- data/set-of-emails/maildir/bsd/us-amazonses-03.eml +55 -0
- data/set-of-emails/maildir/bsd/us-amazonses-04.eml +55 -0
- data/set-of-emails/maildir/bsd/us-aol-01.eml +1258 -0
- data/set-of-emails/maildir/bsd/us-aol-02.eml +1257 -0
- data/set-of-emails/maildir/bsd/us-aol-03.eml +1264 -0
- data/set-of-emails/maildir/bsd/us-aol-04.eml +1260 -0
- data/set-of-emails/maildir/bsd/us-bigfoot-01.eml +64 -0
- data/set-of-emails/maildir/bsd/us-facebook-01.eml +40 -0
- data/set-of-emails/maildir/bsd/us-facebook-02.eml +42 -0
- data/set-of-emails/maildir/bsd/us-google-01.eml +70 -0
- data/set-of-emails/maildir/bsd/us-google-02.eml +50 -0
- data/set-of-emails/maildir/bsd/us-google-03.eml +51 -0
- data/set-of-emails/maildir/bsd/us-google-04.eml +82 -0
- data/set-of-emails/maildir/bsd/us-google-05.eml +50 -0
- data/set-of-emails/maildir/bsd/us-google-06.eml +56 -0
- data/set-of-emails/maildir/bsd/us-google-07.eml +42 -0
- data/set-of-emails/maildir/bsd/us-google-08.eml +59 -0
- data/set-of-emails/maildir/bsd/us-google-09.eml +76 -0
- data/set-of-emails/maildir/bsd/us-google-10.eml +69 -0
- data/set-of-emails/maildir/bsd/us-google-11.eml +68 -0
- data/set-of-emails/maildir/bsd/us-google-12.eml +76 -0
- data/set-of-emails/maildir/bsd/us-google-13.eml +79 -0
- data/set-of-emails/maildir/bsd/us-google-14.eml +304 -0
- data/set-of-emails/maildir/bsd/us-outlook-01.eml +72 -0
- data/set-of-emails/maildir/bsd/us-outlook-02.eml +72 -0
- data/set-of-emails/maildir/bsd/us-outlook-03.eml +72 -0
- data/set-of-emails/maildir/bsd/us-outlook-04.eml +79 -0
- data/set-of-emails/maildir/bsd/us-outlook-05.eml +85 -0
- data/set-of-emails/maildir/bsd/us-outlook-06.eml +75 -0
- data/set-of-emails/maildir/bsd/us-outlook-07.eml +70 -0
- data/set-of-emails/maildir/bsd/us-receivingses-01.eml +74 -0
- data/set-of-emails/maildir/bsd/us-receivingses-02.eml +74 -0
- data/set-of-emails/maildir/bsd/us-receivingses-03.eml +74 -0
- data/set-of-emails/maildir/bsd/us-receivingses-04.eml +74 -0
- data/set-of-emails/maildir/bsd/us-receivingses-05.eml +74 -0
- data/set-of-emails/maildir/bsd/us-receivingses-06.eml +74 -0
- data/set-of-emails/maildir/bsd/us-receivingses-07.eml +74 -0
- data/set-of-emails/maildir/bsd/us-sendgrid-01.eml +95 -0
- data/set-of-emails/maildir/bsd/us-sendgrid-02.eml +98 -0
- data/set-of-emails/maildir/bsd/us-sendgrid-03.eml +100 -0
- data/set-of-emails/maildir/bsd/us-verizon-01.eml +31 -0
- data/set-of-emails/maildir/bsd/us-yahoo-01.eml +78 -0
- data/set-of-emails/maildir/bsd/us-yahoo-02.eml +79 -0
- data/set-of-emails/maildir/bsd/us-yahoo-03.eml +93 -0
- data/set-of-emails/maildir/bsd/us-yahoo-04.eml +94 -0
- data/set-of-emails/maildir/bsd/us-yahoo-05.eml +94 -0
- data/set-of-emails/maildir/bsd/us-zoho-01.eml +40 -0
- data/set-of-emails/maildir/bsd/us-zoho-02.eml +38 -0
- data/set-of-emails/maildir/bsd/us-zoho-03.eml +37 -0
- data/set-of-emails/maildir/bsd/us-zoho-04.eml +47 -0
- data/set-of-emails/maildir/bsd/us-zoho-05.eml +37 -0
- data/set-of-emails/maildir/bsd/v5sendmail-01.eml +24 -0
- data/set-of-emails/maildir/bsd/v5sendmail-02.eml +26 -0
- data/set-of-emails/maildir/bsd/v5sendmail-03.eml +29 -0
- data/set-of-emails/maildir/bsd/v5sendmail-04.eml +29 -0
- data/set-of-emails/maildir/bsd/v5sendmail-05.eml +42 -0
- data/set-of-emails/maildir/bsd/v5sendmail-06.eml +28 -0
- data/set-of-emails/maildir/bsd/v5sendmail-07.eml +35 -0
- data/set-of-emails/maildir/bsd/x1-01.eml +61 -0
- data/set-of-emails/maildir/bsd/x1-02.eml +62 -0
- data/set-of-emails/maildir/bsd/x2-01.eml +41 -0
- data/set-of-emails/maildir/bsd/x2-02.eml +46 -0
- data/set-of-emails/maildir/bsd/x2-03.eml +34 -0
- data/set-of-emails/maildir/bsd/x2-04.eml +0 -0
- data/set-of-emails/maildir/bsd/x2-05.eml +98 -0
- data/set-of-emails/maildir/bsd/x3-01.eml +61 -0
- data/set-of-emails/maildir/bsd/x3-02.eml +64 -0
- data/set-of-emails/maildir/bsd/x3-03.eml +59 -0
- data/set-of-emails/maildir/bsd/x3-04.eml +106 -0
- data/set-of-emails/maildir/bsd/x4-01.eml +92 -0
- data/set-of-emails/maildir/bsd/x4-02.eml +112 -0
- data/set-of-emails/maildir/bsd/x4-03.eml +245 -0
- data/set-of-emails/maildir/bsd/x4-04.eml +81 -0
- data/set-of-emails/maildir/bsd/x4-05.eml +121 -0
- data/set-of-emails/maildir/bsd/x4-06.eml +32 -0
- data/set-of-emails/maildir/bsd/x4-07.eml +153 -0
- data/set-of-emails/maildir/bsd/x5-01.eml +155 -0
- data/set-of-emails/maildir/dos/activehunter-01.eml +54 -0
- data/set-of-emails/maildir/dos/apachejames-01.eml +46 -0
- data/set-of-emails/maildir/dos/arf-01.eml +66 -0
- data/set-of-emails/maildir/dos/courier-01.eml +79 -0
- data/set-of-emails/maildir/dos/de-einsundeins-01.eml +38 -0
- data/set-of-emails/maildir/dos/de-gmx-01.eml +52 -0
- data/set-of-emails/maildir/dos/domino-01.eml +33 -0
- data/set-of-emails/maildir/dos/exchange-01.eml +31 -0
- data/set-of-emails/maildir/dos/exim-01.eml +46 -0
- data/set-of-emails/maildir/dos/google-apps-01.eml +66 -0
- data/set-of-emails/maildir/dos/imailserver-01.eml +27 -0
- data/set-of-emails/maildir/dos/interscanmss-01.eml +49 -0
- data/set-of-emails/maildir/dos/jp-biglobe-01.eml +43 -0
- data/set-of-emails/maildir/dos/jp-ezweb-01.eml +36 -0
- data/set-of-emails/maildir/dos/jp-kddi-01.eml +49 -0
- data/set-of-emails/maildir/dos/mailfoundry-01.eml +50 -0
- data/set-of-emails/maildir/dos/mailmarshalsmtp-01.eml +43 -0
- data/set-of-emails/maildir/dos/mcafee-01.eml +63 -0
- data/set-of-emails/maildir/dos/messagingserver-01.eml +102 -0
- data/set-of-emails/maildir/dos/mfilter-01.eml +49 -0
- data/set-of-emails/maildir/dos/mxlogic-01.eml +47 -0
- data/set-of-emails/maildir/dos/notes-01.eml +42 -0
- data/set-of-emails/maildir/dos/opensmtpd-01.eml +33 -0
- data/set-of-emails/maildir/dos/postfix-01.eml +60 -0
- data/set-of-emails/maildir/dos/qmail-01.eml +40 -0
- data/set-of-emails/maildir/dos/rfc3464-01.eml +59 -0
- data/set-of-emails/maildir/dos/rfc3834-01.eml +37 -0
- data/set-of-emails/maildir/dos/ru-mailru-01.eml +54 -0
- data/set-of-emails/maildir/dos/ru-yandex-01.eml +102 -0
- data/set-of-emails/maildir/dos/sendmail-01.eml +69 -0
- data/set-of-emails/maildir/dos/surfcontrol-01.eml +79 -0
- data/set-of-emails/maildir/dos/uk-messagelabs-01.eml +76 -0
- data/set-of-emails/maildir/dos/us-amazonses-01.eml +59 -0
- data/set-of-emails/maildir/dos/us-aol-01.eml +1258 -0
- data/set-of-emails/maildir/dos/us-bigfoot-01.eml +64 -0
- data/set-of-emails/maildir/dos/us-facebook-01.eml +40 -0
- data/set-of-emails/maildir/dos/us-google-01.eml +70 -0
- data/set-of-emails/maildir/dos/us-outlook-01.eml +72 -0
- data/set-of-emails/maildir/dos/us-receivingses-01.eml +74 -0
- data/set-of-emails/maildir/dos/us-sendgrid-01.eml +95 -0
- data/set-of-emails/maildir/dos/us-verizon-01.eml +31 -0
- data/set-of-emails/maildir/dos/us-yahoo-01.eml +78 -0
- data/set-of-emails/maildir/dos/us-zoho-01.eml +40 -0
- data/set-of-emails/maildir/dos/v5sendmail-01.eml +24 -0
- data/set-of-emails/maildir/dos/x1-01.eml +61 -0
- data/set-of-emails/maildir/dos/x2-01.eml +41 -0
- data/set-of-emails/maildir/dos/x3-01.eml +61 -0
- data/set-of-emails/maildir/dos/x4-01.eml +90 -0
- data/set-of-emails/maildir/dos/x5-01.eml +155 -0
- data/set-of-emails/maildir/err/make-test-01.eml +70 -0
- data/set-of-emails/maildir/err/make-test-02.eml +70 -0
- data/set-of-emails/maildir/err/make-test-03.eml +64 -0
- data/set-of-emails/maildir/err/make-test-04.eml +64 -0
- data/set-of-emails/maildir/err/make-test-05.eml +66 -0
- data/set-of-emails/maildir/err/make-test-06.eml +118 -0
- data/set-of-emails/maildir/err/make-test-07.eml +26 -0
- data/set-of-emails/maildir/err/make-test-08.eml +67 -0
- data/set-of-emails/maildir/err/make-test-09.eml +55 -0
- data/set-of-emails/maildir/err/make-test-10.eml +69 -0
- data/set-of-emails/maildir/err/make-test-11.eml +64 -0
- data/set-of-emails/maildir/err/make-test-12.eml +66 -0
- data/set-of-emails/maildir/err/make-test-13.eml +67 -0
- data/set-of-emails/maildir/err/make-test-14.eml +66 -0
- data/set-of-emails/maildir/err/make-test-15.eml +70 -0
- data/set-of-emails/maildir/err/make-test-16.eml +68 -0
- data/set-of-emails/maildir/err/make-test-17.eml +68 -0
- data/set-of-emails/maildir/err/make-test-18.eml +68 -0
- data/set-of-emails/maildir/err/make-test-19.eml +69 -0
- data/set-of-emails/maildir/err/make-test-20.eml +67 -0
- data/set-of-emails/maildir/err/make-test-21.eml +69 -0
- data/set-of-emails/maildir/err/make-test-22.eml +66 -0
- data/set-of-emails/maildir/err/make-test-23.eml +70 -0
- data/set-of-emails/maildir/err/make-test-24.eml +69 -0
- data/set-of-emails/maildir/err/make-test-25.eml +67 -0
- data/set-of-emails/maildir/err/make-test-26.eml +69 -0
- data/set-of-emails/maildir/err/make-test-27.eml +69 -0
- data/set-of-emails/maildir/err/make-test-28.eml +66 -0
- data/set-of-emails/maildir/err/make-test-29.eml +68 -0
- data/set-of-emails/maildir/err/make-test-30.eml +68 -0
- data/set-of-emails/maildir/err/make-test-31.eml +80 -0
- data/set-of-emails/maildir/err/make-test-32.eml +66 -0
- data/set-of-emails/maildir/err/make-test-33.eml +68 -0
- data/set-of-emails/maildir/err/make-test-34.eml +56 -0
- data/set-of-emails/maildir/err/make-test-35.eml +59 -0
- data/set-of-emails/maildir/err/make-test-36.eml +53 -0
- data/set-of-emails/maildir/err/make-test-37.eml +62 -0
- data/set-of-emails/maildir/mac/activehunter-01.eml +1 -2
- data/set-of-emails/maildir/mac/apachejames-01.eml +1 -4
- data/set-of-emails/maildir/mac/arf-01.eml +1 -3
- data/set-of-emails/maildir/mac/courier-01.eml +1 -6
- data/set-of-emails/maildir/mac/de-einsundeins-01.eml +1 -1
- data/set-of-emails/maildir/mac/de-gmx-01.eml +1 -1
- data/set-of-emails/maildir/mac/domino-01.eml +1 -0
- data/set-of-emails/maildir/mac/exchange-01.eml +1 -0
- data/set-of-emails/maildir/mac/exim-01.eml +1 -1
- data/set-of-emails/maildir/mac/google-apps-01.eml +1 -4
- data/set-of-emails/maildir/mac/imailserver-01.eml +1 -0
- data/set-of-emails/maildir/mac/interscanmss-01.eml +1 -2
- data/set-of-emails/maildir/mac/jp-biglobe-01.eml +1 -2
- data/set-of-emails/maildir/mac/jp-ezweb-01.eml +1 -1
- data/set-of-emails/maildir/mac/jp-kddi-01.eml +1 -2
- data/set-of-emails/maildir/mac/mailfoundry-01.eml +1 -2
- data/set-of-emails/maildir/mac/mailmarshalsmtp-01.eml +1 -2
- data/set-of-emails/maildir/mac/mcafee-01.eml +1 -4
- data/set-of-emails/maildir/mac/messagingserver-01.eml +1 -4
- data/set-of-emails/maildir/mac/mfilter-01.eml +1 -3
- data/set-of-emails/maildir/mac/mxlogic-01.eml +1 -1
- data/set-of-emails/maildir/mac/notes-01.eml +1 -2
- data/set-of-emails/maildir/mac/opensmtpd-01.eml +1 -0
- data/set-of-emails/maildir/mac/postfix-01.eml +1 -3
- data/set-of-emails/maildir/mac/qmail-01.eml +1 -1
- data/set-of-emails/maildir/mac/rfc3464-01.eml +1 -4
- data/set-of-emails/maildir/mac/rfc3834-01.eml +1 -0
- data/set-of-emails/maildir/mac/ru-mailru-01.eml +1 -1
- data/set-of-emails/maildir/mac/ru-yandex-01.eml +1 -4
- data/set-of-emails/maildir/mac/sendmail-01.eml +1 -4
- data/set-of-emails/maildir/mac/surfcontrol-01.eml +1 -5
- data/set-of-emails/maildir/mac/uk-messagelabs-01.eml +1 -4
- data/set-of-emails/maildir/mac/us-amazonses-01.eml +1 -4
- data/set-of-emails/maildir/mac/us-aol-01.eml +1 -15
- data/set-of-emails/maildir/mac/us-bigfoot-01.eml +1 -4
- data/set-of-emails/maildir/mac/us-facebook-01.eml +1 -4
- data/set-of-emails/maildir/mac/us-google-01.eml +1 -1
- data/set-of-emails/maildir/mac/us-outlook-01.eml +1 -4
- data/set-of-emails/maildir/mac/us-receivingses-01.eml +1 -4
- data/set-of-emails/maildir/mac/us-sendgrid-01.eml +1 -3
- data/set-of-emails/maildir/mac/us-verizon-01.eml +1 -2
- data/set-of-emails/maildir/mac/us-yahoo-01.eml +1 -1
- data/set-of-emails/maildir/mac/us-zoho-01.eml +1 -2
- data/set-of-emails/maildir/mac/v5sendmail-01.eml +1 -0
- data/set-of-emails/maildir/mac/x1-01.eml +1 -4
- data/set-of-emails/maildir/mac/x2-01.eml +1 -1
- data/set-of-emails/maildir/mac/x3-01.eml +1 -3
- data/set-of-emails/maildir/mac/x4-01.eml +1 -2
- data/set-of-emails/maildir/mac/x5-01.eml +1 -8
- data/set-of-emails/maildir/not/is-not-bounce-01.eml +25 -0
- data/set-of-emails/to-be-debugged-because/reason-is-onhold/onhold-0001.eml +85 -0
- data/set-of-emails/to-be-debugged-because/reason-is-undefined/undefined-0002.eml +27 -0
- data/set-of-emails/to-be-debugged-because/reason-is-undefined/undefined-0003.eml +78 -0
- data/set-of-emails/to-be-debugged-because/sisimai-cannot-parse-yet/cannot-parse-this-email-0002.eml +25 -0
- data/set-of-emails/to-be-debugged-because/something-is-wrong/issue-106-01.eml +79 -0
- data/set-of-emails/to-be-debugged-because/something-is-wrong/issue-106-02.eml +72 -0
- data/set-of-emails/to-be-debugged-because/something-is-wrong/issue-106-03.eml +68 -0
- data/set-of-emails/to-be-debugged-because/something-is-wrong/no-message-id-from-pr-150.eml +75 -0
- data/set-of-emails/to-be-parsed-for-test/README.md +20 -0
- data/sisimai.gemspec +25 -0
- metadata +647 -0
@@ -0,0 +1,105 @@
|
|
1
|
+
module Sisimai
|
2
|
+
module Reason
|
3
|
+
# Sisimai::Reason::Blocked checks the bounce reason is "blocked" or not.
|
4
|
+
# This class is called only Sisimai::Reason class.
|
5
|
+
#
|
6
|
+
# This is the error that SMTP connection was rejected due to a client IP address
|
7
|
+
# or a hostname, or the parameter of "HELO/EHLO" command. This reason has added
|
8
|
+
# in Sisimai 4.0.0 and does not exist in any version of bounceHammer.
|
9
|
+
module Blocked
|
10
|
+
# Imported from p5-Sisimail/lib/Sisimai/Reason/Blocked.pm
|
11
|
+
class << self
|
12
|
+
def text; return 'blocked'; end
|
13
|
+
|
14
|
+
# Try to match that the given text and regular expressions
|
15
|
+
# @param [String] argv1 String to be matched with regular expressions
|
16
|
+
# @return [True,False] false: Did not match
|
17
|
+
# true: Matched
|
18
|
+
def match(argv1)
|
19
|
+
return nil unless argv1
|
20
|
+
regex = %r{(?>
|
21
|
+
access[ ]denied[.][ ]IP[ ]name[ ]lookup[ ]failed
|
22
|
+
|access[ ]from[ ]ip[ ]address[ ].+[ ]blocked
|
23
|
+
|Blocked[ ]-[ ]see[ ]https://support[.]proofpoint[.]com/dnsbl-lookup[.]cgi[?]ip=.+
|
24
|
+
|cannot[ ]resolve[ ]your[ ]address
|
25
|
+
|client[ ]host[ ]rejected:[ ](?:
|
26
|
+
may[ ]not[ ]be[ ]mail[ ]exchanger
|
27
|
+
|cannot[ ]find[ ]your[ ]hostname # Yahoo!
|
28
|
+
|was[ ]not[ ]authenticated # Microsoft
|
29
|
+
)
|
30
|
+
|confirm[ ]this[ ]mail[ ]server
|
31
|
+
|connection[ ](?:
|
32
|
+
dropped
|
33
|
+
|refused[ ]by
|
34
|
+
|reset[ ]by[ ]peer
|
35
|
+
|was[ ]dropped[ ]by[ ]remote[ ]host
|
36
|
+
)
|
37
|
+
|domain[ ]does[ ]not[ ]exist:
|
38
|
+
|domain[ ].+[ ]mismatches[ ]client[ ]ip
|
39
|
+
|dns[ ]lookup[ ]failure:[ ].+[ ]try[ ]again[ ]later
|
40
|
+
|Go[ ]away
|
41
|
+
|hosts[ ]with[ ]dynamic[ ]ip
|
42
|
+
|IP[ ]\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}[ ]is[ ]blocked[ ]by[ ]EarthLink # Earthlink
|
43
|
+
|IP[/]domain[ ]reputation[ ]problems
|
44
|
+
|is[ ]not[ ]allowed[ ]to[ ]send[ ]mail[ ]from
|
45
|
+
|mail[ ]server[ ]at[ ].+[ ]is[ ]blocked
|
46
|
+
|Messages[ ]from[ ].+[ ]temporarily[ ]deferred[ ]due[ ]to[ ]user[ ]complaints # Yahoo!
|
47
|
+
|no[ ]access[ ]from[ ]mail[ ]server
|
48
|
+
|Not[ ]currently[ ]accepting[ ]mail[ ]from[ ]your[ ]ip # Microsoft
|
49
|
+
|Please[ ]get[ ]a[ ]custom[ ]reverse[ ]DNS[ ]name[ ]from[ ]your[ ]ISP[ ]for[ ]your[ ]host
|
50
|
+
|please[ ]use[ ]the[ ]smtp[ ]server[ ]of[ ]your[ ]ISP
|
51
|
+
|Rejecting[ ]open[ ]proxy # Sendmail(srvrsmtp.c)
|
52
|
+
|sorry,[ ](?:
|
53
|
+
that[ ]domain[ ]isn'?t[ ]in[ ]my[ ]list[ ]of[ ]allowed[ ]rcpthosts
|
54
|
+
|your[ ]remotehost[ ]looks[ ]suspiciously[ ]like[ ]spammer
|
55
|
+
)
|
56
|
+
|the[ ](?:email|domain|ip).+[ ]is[ ]blacklisted
|
57
|
+
|unresolvable[ ]relay[ ]host[ ]name
|
58
|
+
|your[ ](?:
|
59
|
+
network[ ]is[ ]temporary[ ]blacklisted
|
60
|
+
|server[ ]requires[ ]confirmation
|
61
|
+
)
|
62
|
+
|we[ ]do[ ]not[ ]accept[ ]mail[ ]from[ ](?: # @mail.ru
|
63
|
+
hosts[ ]with[ ]dynamic[ ]IP[ ]or[ ]generic[ ]dns[ ]PTR-records
|
64
|
+
|dynamic[ ]ips
|
65
|
+
)
|
66
|
+
|http://www[.]spamcop[.]net/bl[.]
|
67
|
+
)
|
68
|
+
}xi
|
69
|
+
|
70
|
+
return true if argv1 =~ regex
|
71
|
+
return false
|
72
|
+
end
|
73
|
+
|
74
|
+
# Blocked due to client IP address or hostname
|
75
|
+
# @param [Sisimai::Data] argvs Object to be detected the reason
|
76
|
+
# @return [True,False] true: is blocked
|
77
|
+
# false: is not blocked by the client
|
78
|
+
# @see http://www.ietf.org/rfc/rfc2822.txt
|
79
|
+
def true(argvs)
|
80
|
+
return nil unless argvs
|
81
|
+
return nil unless argvs.is_a? Sisimai::Data
|
82
|
+
return true if argvs.reason == Sisimai::Reason::Blocked.text
|
83
|
+
|
84
|
+
require 'sisimai/smtp/status'
|
85
|
+
diagnostic = argvs.diagnosticcode || ''
|
86
|
+
statuscode = argvs.deliverystatus || ''
|
87
|
+
tempreason = Sisimai::SMTP::Status.name(statuscode)
|
88
|
+
reasontext = Sisimai::Reason::Blocked.text
|
89
|
+
v = false
|
90
|
+
|
91
|
+
if tempreason == reasontext
|
92
|
+
# Delivery status code points "blocked".
|
93
|
+
v = true
|
94
|
+
else
|
95
|
+
# Matched with a pattern in this class
|
96
|
+
v = true if Sisimai::Reason::Blocked.match(diagnostic)
|
97
|
+
end
|
98
|
+
|
99
|
+
return v
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Sisimai
|
2
|
+
module Reason
|
3
|
+
# Sisimai::Reason::ContentError checks the bounce reason is "contenterror"
|
4
|
+
# or not This class is called only Sisimai::Reason class.
|
5
|
+
#
|
6
|
+
# This is the error that a destination mail server has rejected email due to
|
7
|
+
# header format of the email like the following. Sisimai will set "contenterror"
|
8
|
+
# to the reason of email bounce if the value of Status: field in a bounce email
|
9
|
+
# is "5.6.*".
|
10
|
+
module ContentError
|
11
|
+
# Imported from p5-Sisimail/lib/Sisimai/Reason/ContentError.pm
|
12
|
+
class << self
|
13
|
+
def text; return 'contenterror'; end
|
14
|
+
|
15
|
+
# Try to match that the given text and regular expressions
|
16
|
+
# @param [String] argv1 String to be matched with regular expressions
|
17
|
+
# @return [True,False] false: Did not match
|
18
|
+
# true: Matched
|
19
|
+
def match(argv1)
|
20
|
+
return nil unless argv1
|
21
|
+
regex = %r{(?>
|
22
|
+
improper[ ]use[ ]of[ ]8-bit[ ]data[ ]in[ ]message[ ]header
|
23
|
+
|message[ ](?:
|
24
|
+
header[ ]size,[ ]or[ ]recipient[ ]list,[ ]exceeds[ ]policy[ ]limit
|
25
|
+
|mime[ ]complexity[ ]exceeds[ ]the[ ]policy[ ]maximum
|
26
|
+
)
|
27
|
+
|routing[ ]loop[ ]detected[ ][-][-][ ]too[ ]many[ ]received:[ ]headers
|
28
|
+
|this[ ]message[ ]contains?[ ](?:
|
29
|
+
invalid[ ]MIME[ ]headers
|
30
|
+
|improperly[-]formatted[ ]binary[ ]content
|
31
|
+
|text[ ]that[ ]uses[ ]unnecessary[ ]base64[ ]encoding
|
32
|
+
)
|
33
|
+
)
|
34
|
+
}xi
|
35
|
+
|
36
|
+
return true if argv1 =~ regex
|
37
|
+
return false
|
38
|
+
end
|
39
|
+
|
40
|
+
# Rejected email due to header format of the email
|
41
|
+
# @param [Sisimai::Data] argvs Object to be detected the reason
|
42
|
+
# @return [True,False] true: rejected due to content error
|
43
|
+
# false: is not content error
|
44
|
+
# @see http://www.ietf.org/rfc/rfc2822.txt
|
45
|
+
def true(_argvs)
|
46
|
+
return nil
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Sisimai
|
2
|
+
module Reason
|
3
|
+
# Sisimai::Reason::ExceedLimit checks the bounce reason is "exceedlimit" or
|
4
|
+
# not. This class is called only Sisimai::Reason class.
|
5
|
+
#
|
6
|
+
# This is the error that a message was rejected due to an email exceeded the
|
7
|
+
# limit. The value of D.S.N. is 5.2.3. This reason is almost the same as
|
8
|
+
# "MesgTooBig", we think.
|
9
|
+
module ExceedLimit
|
10
|
+
# Imported from p5-Sisimail/lib/Sisimai/Reason/ExceedLimit.pm
|
11
|
+
class << self
|
12
|
+
def text; return 'exceedlimit'; end
|
13
|
+
|
14
|
+
# Try to match that the given text and regular expressions
|
15
|
+
# @param [String] argv1 String to be matched with regular expressions
|
16
|
+
# @return [True,False] false: Did not match
|
17
|
+
# true: Matched
|
18
|
+
def match(argv1)
|
19
|
+
return nil unless argv1
|
20
|
+
regex = %r/message too large/i
|
21
|
+
|
22
|
+
return true if argv1 =~ regex
|
23
|
+
return false
|
24
|
+
end
|
25
|
+
|
26
|
+
# Exceed limit or not
|
27
|
+
# @param [Sisimai::Data] argvs Object to be detected the reason
|
28
|
+
# @return [True,False] true: Exceeds the limit
|
29
|
+
# false: Did not exceed the limit
|
30
|
+
# @see http://www.ietf.org/rfc/rfc2822.txt
|
31
|
+
def true(argvs)
|
32
|
+
return nil unless argvs
|
33
|
+
return nil unless argvs.is_a? Sisimai::Data
|
34
|
+
return nil unless argvs.deliverystatus.size > 0
|
35
|
+
return true if argvs.reason == Sisimai::Reason::ExceedLimit.text
|
36
|
+
|
37
|
+
require 'sisimai/smtp/status'
|
38
|
+
diagnostic = argvs.diagnosticcode || ''
|
39
|
+
statuscode = argvs.deliverystatus
|
40
|
+
reasontext = Sisimai::Reason::ExceedLimit.text
|
41
|
+
v = false
|
42
|
+
|
43
|
+
if Sisimai::SMTP::Status.name(statuscode) == reasontext
|
44
|
+
# Delivery status code points exceedlimit.
|
45
|
+
# Status: 5.2.3
|
46
|
+
# Diagnostic-Code: SMTP; 552 5.2.3 Message size exceeds fixed maximum message size
|
47
|
+
v = true
|
48
|
+
else
|
49
|
+
# Check the value of Diagnosic-Code: header with patterns
|
50
|
+
v = true if Sisimai::Reason::ExceedLimit.match(diagnostic)
|
51
|
+
end
|
52
|
+
|
53
|
+
return v
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Sisimai
|
2
|
+
module Reason
|
3
|
+
# Sisimai::Reason::Expired checks the bounce reason is "expired" or not.
|
4
|
+
# This class is called only Sisimai::Reason class.
|
5
|
+
#
|
6
|
+
# This is the error that delivery time has expired due to connection failure
|
7
|
+
# or network error and the message you sent has been in the queue for long
|
8
|
+
# time.
|
9
|
+
module Expired
|
10
|
+
# Imported from p5-Sisimail/lib/Sisimai/Reason/Expired.pm
|
11
|
+
class << self
|
12
|
+
def text; return 'expired'; end
|
13
|
+
|
14
|
+
# Try to match that the given text and regular expressions
|
15
|
+
# @param [String] argv1 String to be matched with regular expressions
|
16
|
+
# @return [True,False] false: Did not match
|
17
|
+
# true: Matched
|
18
|
+
def match(argv1)
|
19
|
+
return nil unless argv1
|
20
|
+
regex = %r{(?:
|
21
|
+
connection[ ]timed[ ]out
|
22
|
+
|could[ ]not[ ]find[ ]a[ ]gateway[ ]for
|
23
|
+
|delivery[ ]time[ ]expired
|
24
|
+
|giving[ ]up[ ]on
|
25
|
+
|it[ ]has[ ]not[ ]been[ ]collected[ ]after
|
26
|
+
|message[ ]expired[ ]after[ ]sitting[ ]in[ ]queue[ ]for
|
27
|
+
|Message[ ]timed[ ]out
|
28
|
+
|retry[ ]time[ ]not[ ]reached[ ]for[ ]any[ ]host[ ]after[ ]a[ ]long[ ]failure[ ]period
|
29
|
+
|server[ ]did[ ]not[ ]respond
|
30
|
+
|this[ ]message[ ]has[ ]been[ ]in[ ]the[ ]queue[ ]too[ ]long
|
31
|
+
|was[ ]not[ ]reachable[ ]within[ ]the[ ]allowed[ ]queue[ ]period
|
32
|
+
)
|
33
|
+
}ix
|
34
|
+
|
35
|
+
return true if argv1 =~ regex
|
36
|
+
return false
|
37
|
+
end
|
38
|
+
|
39
|
+
# Delivery expired due to connection failure or network error
|
40
|
+
# @param [Sisimai::Data] argvs Object to be detected the reason
|
41
|
+
# @return [True,False] true: is expired
|
42
|
+
# false: is not expired
|
43
|
+
# @see http://www.ietf.org/rfc/rfc2822.txt
|
44
|
+
def true(_argvs)
|
45
|
+
return nil
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module Sisimai
|
2
|
+
module Reason
|
3
|
+
# Sisimai::Reason::Filtered checks the bounce reason is "filtered" or not.
|
4
|
+
# This class is called only Sisimai::Reason class.
|
5
|
+
#
|
6
|
+
# This is the error that an email has been rejected by a header content after
|
7
|
+
# SMTP DATA command.
|
8
|
+
# In Japanese cellular phones, the error will incur that a sender's email address
|
9
|
+
# or a domain is rejected by recipient's email configuration. Sisimai will
|
10
|
+
# set "filtered" to the reason of email bounce if the value of Status: field
|
11
|
+
# in a bounce email is "5.2.0" or "5.2.1".
|
12
|
+
module Filtered
|
13
|
+
# Imported from p5-Sisimail/lib/Sisimai/Reason/Filtered.pm
|
14
|
+
class << self
|
15
|
+
def text; return 'filtered'; end
|
16
|
+
|
17
|
+
# Try to match that the given text and regular expressions
|
18
|
+
# @param [String] argv1 String to be matched with regular expressions
|
19
|
+
# @return [True,False] false: Did not match
|
20
|
+
# true: Matched
|
21
|
+
def match(argv1)
|
22
|
+
return nil unless argv1
|
23
|
+
regex = %r{(?>
|
24
|
+
because[ ]the[ ]recipient[ ]is[ ]only[ ]accepting[ ]mail[ ]from[ ]
|
25
|
+
specific[ ]email[ ]addresses # AOL Phoenix
|
26
|
+
|Bounced[ ]Address # SendGrid|a message to an address has previously been Bounced.
|
27
|
+
|due[ ]to[ ]extended[ ]inactivity[ ]new[ ]mail[ ]is[ ]not[ ]currently[ ]
|
28
|
+
being[ ]accepted[ ]for[ ]this[ ]mailbox
|
29
|
+
|has[ ]restricted[ ]SMS[ ]e-mail # AT&T
|
30
|
+
|http://postmaster[.]facebook[.]com/.+refused[ ]due[ ]to[ ]recipient[ ]preferences # Facebook
|
31
|
+
|permanent[ ]failure[ ]for[ ]one[ ]or[ ]more[ ]recipients[ ][(].+:blocked[)]
|
32
|
+
|RESOLVER[.]RST[.]NotAuthorized # Microsoft Exchange
|
33
|
+
|This[ ]account[ ]is[ ]protected[ ]by
|
34
|
+
|user[ ](?:
|
35
|
+
not[ ]found # Filter on MAIL.RU
|
36
|
+
|reject
|
37
|
+
)
|
38
|
+
|we[ ]failed[ ]to[ ]deliver[ ]mail[ ]because[ ]the[ ]following[ ]address
|
39
|
+
[ ]recipient[ ]id[ ]refuse[ ]to[ ]receive[ ]mail # Willcom
|
40
|
+
)
|
41
|
+
}ix
|
42
|
+
|
43
|
+
return true if argv1 =~ regex
|
44
|
+
return false
|
45
|
+
end
|
46
|
+
|
47
|
+
# Rejected by domain or address filter ?
|
48
|
+
# @param [Sisimai::Data] argvs Object to be detected the reason
|
49
|
+
# @return [True,False] true: is filtered
|
50
|
+
# false: is not filtered
|
51
|
+
# @see http://www.ietf.org/rfc/rfc2822.txt
|
52
|
+
def true(argvs)
|
53
|
+
return nil unless argvs
|
54
|
+
return nil unless argvs.is_a? Sisimai::Data
|
55
|
+
return true if argvs.reason == Sisimai::Reason::Filtered.text
|
56
|
+
|
57
|
+
require 'sisimai/smtp/status'
|
58
|
+
require 'sisimai/reason/userunknown'
|
59
|
+
commandtxt = argvs.smtpcommand || ''
|
60
|
+
statuscode = argvs.deliverystatus || ''
|
61
|
+
diagnostic = argvs.diagnosticcode || ''
|
62
|
+
tempreason = Sisimai::SMTP::Status.name(statuscode)
|
63
|
+
reasontext = Sisimai::Reason::Filtered.text
|
64
|
+
v = false
|
65
|
+
|
66
|
+
return false if tempreason == 'suspend'
|
67
|
+
|
68
|
+
if tempreason == reasontext
|
69
|
+
# Delivery status code points "filtered".
|
70
|
+
if Sisimai::Reason::UserUnknown.match(diagnostic) ||
|
71
|
+
Sisimai::Reason::Filtered.match(diagnostic)
|
72
|
+
v = true
|
73
|
+
end
|
74
|
+
else
|
75
|
+
# Check the value of Diagnostic-Code and the last SMTP command
|
76
|
+
if commandtxt != 'RCPT' && commandtxt != 'MAIL'
|
77
|
+
# Check the last SMTP command of the session.
|
78
|
+
if Sisimai::Reason::Filtered.match(diagnostic)
|
79
|
+
# Matched with a pattern in this class
|
80
|
+
v = true
|
81
|
+
|
82
|
+
else
|
83
|
+
# Did not match with patterns in this class,
|
84
|
+
# Check the value of "Diagnostic-Code" with other error patterns.
|
85
|
+
v = true if Sisimai::Reason::UserUnknown.match(diagnostic)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
return v
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Sisimai
|
2
|
+
module Reason
|
3
|
+
# Sisimai::Reason::HasMoved checks the bounce reason is "hasmoved" or not.
|
4
|
+
# This class is called only Sisimai::Reason class.
|
5
|
+
#
|
6
|
+
# This is the error that a user's mailbox has moved (and is not forwarded
|
7
|
+
# automatically). Sisimai will set "hasmoved" to the reason of email bounce
|
8
|
+
# if the value of Status: field in a bounce email is "5.1.6".
|
9
|
+
module HasMoved
|
10
|
+
# Imported from p5-Sisimail/lib/Sisimai/Reason/HasMoved.pm
|
11
|
+
class << self
|
12
|
+
def text; return 'hasmoved'; end
|
13
|
+
|
14
|
+
# Try to match that the given text and regular expressions
|
15
|
+
# @param [String] argv1 String to be matched with regular expressions
|
16
|
+
# @return [True,False] false: Did not match
|
17
|
+
# true: Matched
|
18
|
+
def match(argv1)
|
19
|
+
return nil unless argv1
|
20
|
+
regex = %r/address[ ].+[ ]has[ ]been[ ]replaced[ ]by[ ]/ix
|
21
|
+
|
22
|
+
return true if argv1 =~ regex
|
23
|
+
return false
|
24
|
+
end
|
25
|
+
|
26
|
+
# Whether the address has moved or not
|
27
|
+
# @param [Sisimai::Data] argvs Object to be detected the reason
|
28
|
+
# @return [True,False] true: The address has moved
|
29
|
+
# false: Has not moved
|
30
|
+
# @see http://www.ietf.org/rfc/rfc2822.txt
|
31
|
+
def true(argvs)
|
32
|
+
return nil unless argvs
|
33
|
+
return nil unless argvs.is_a? Sisimai::Data
|
34
|
+
return true if argvs.reason == Sisimai::Reason::HasMoved.text
|
35
|
+
return true if Sisimai::Reason::HasMoved.match(argvs.diagnosticcode)
|
36
|
+
return false
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Sisimai
|
2
|
+
module Reason
|
3
|
+
module HostUnknown
|
4
|
+
# Imported from p5-Sisimail/lib/Sisimai/Reason/HostUnknown.pm
|
5
|
+
class << self
|
6
|
+
def text; return 'hostunknown'; end
|
7
|
+
|
8
|
+
# Try to match that the given text and regular expressions
|
9
|
+
# @param [String] argv1 String to be matched with regular expressions
|
10
|
+
# @return [True,False] false: Did not match
|
11
|
+
# true: Matched
|
12
|
+
def match(argv1)
|
13
|
+
return nil unless argv1
|
14
|
+
regex = %r{(?>
|
15
|
+
domain[ ](?:
|
16
|
+
does[ ]not[ ]exist
|
17
|
+
|must[ ]exist
|
18
|
+
|is[ ]not[ ]reachable
|
19
|
+
)
|
20
|
+
|host[ ](?:
|
21
|
+
or[ ]domain[ ]name[ ]not[ ]found
|
22
|
+
|unknown
|
23
|
+
|unreachable
|
24
|
+
)
|
25
|
+
|name[ ]or[ ]service[ ]not[ ]known
|
26
|
+
|no[ ]such[ ]domain
|
27
|
+
|recipient[ ](?:
|
28
|
+
address[ ]rejected:[ ]unknown[ ]domain[ ]name
|
29
|
+
domain[ ]must[ ]exist
|
30
|
+
)
|
31
|
+
|unknown[ ]host
|
32
|
+
)
|
33
|
+
}ix
|
34
|
+
|
35
|
+
return true if argv1 =~ regex
|
36
|
+
return false
|
37
|
+
end
|
38
|
+
|
39
|
+
# Whether the host is unknown or not
|
40
|
+
# @param [Sisimai::Data] argvs Object to be detected the reason
|
41
|
+
# @return [True,False] true: is unknown host
|
42
|
+
# false: is not unknown host.
|
43
|
+
# @see http://www.ietf.org/rfc/rfc2822.txt
|
44
|
+
def true(argvs)
|
45
|
+
return nil unless argvs
|
46
|
+
return nil unless argvs.is_a? Sisimai::Data
|
47
|
+
return true if argvs.reason == Sisimai::Reason::HostUnknown.text
|
48
|
+
|
49
|
+
require 'sisimai/smtp/status'
|
50
|
+
diagnostic = argvs.diagnosticcode || ''
|
51
|
+
statuscode = argvs.deliverystatus || ''
|
52
|
+
tempreason = Sisimai::SMTP::Status.name(statuscode)
|
53
|
+
reasontext = Sisimai::Reason::HostUnknown.text
|
54
|
+
v = false
|
55
|
+
|
56
|
+
if tempreason == reasontext
|
57
|
+
# Status: 5.1.2
|
58
|
+
# Diagnostic-Code: SMTP; 550 Host unknown
|
59
|
+
v = true
|
60
|
+
else
|
61
|
+
# Check the value of Diagnosic-Code: header with patterns
|
62
|
+
v = true if Sisimai::Reason::HostUnknown.match(diagnostic)
|
63
|
+
end
|
64
|
+
|
65
|
+
return v
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
|