sisimai 4.21.1-java → 4.22.0-java
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 +4 -4
- data/ANALYTICAL-PRECISION +56 -56
- data/ChangeLog.md +16 -0
- data/Developers.mk +15 -33
- data/LICENSE +1 -1
- data/README-JA.md +11 -11
- data/README.md +11 -11
- data/fig/sisimai-architecture.png +0 -0
- data/lib/sisimai.rb +4 -4
- data/lib/sisimai/address.rb +254 -5
- data/lib/sisimai/arf.rb +6 -6
- data/lib/sisimai/bite.rb +37 -0
- data/lib/sisimai/bite/email.rb +53 -0
- data/lib/sisimai/bite/email/activehunter.rb +124 -0
- data/lib/sisimai/bite/email/amazonses.rb +247 -0
- data/lib/sisimai/bite/email/amazonworkmail.rb +192 -0
- data/lib/sisimai/bite/email/aol.rb +208 -0
- data/lib/sisimai/bite/email/apachejames.rb +169 -0
- data/lib/sisimai/bite/email/bigfoot.rb +207 -0
- data/lib/sisimai/bite/email/biglobe.rb +148 -0
- data/lib/sisimai/bite/email/courier.rb +265 -0
- data/lib/sisimai/bite/email/domino.rb +174 -0
- data/lib/sisimai/bite/email/einsundeins.rb +143 -0
- data/lib/sisimai/bite/email/exchange2003.rb +284 -0
- data/lib/sisimai/bite/email/exchange2007.rb +178 -0
- data/lib/sisimai/bite/email/exim.rb +522 -0
- data/lib/sisimai/bite/email/ezweb.rb +260 -0
- data/lib/sisimai/bite/email/facebook.rb +274 -0
- data/lib/sisimai/bite/email/gmx.rb +167 -0
- data/lib/sisimai/bite/email/google.rb +320 -0
- data/lib/sisimai/bite/email/gsuite.rb +273 -0
- data/lib/sisimai/bite/email/imailserver.rb +181 -0
- data/lib/sisimai/bite/email/interscanmss.rb +146 -0
- data/lib/sisimai/bite/email/kddi.rb +166 -0
- data/lib/sisimai/bite/email/mailfoundry.rb +133 -0
- data/lib/sisimai/bite/email/mailmarshalsmtp.rb +173 -0
- data/lib/sisimai/bite/email/mailru.rb +271 -0
- data/lib/sisimai/bite/email/mcafee.rb +169 -0
- data/lib/sisimai/bite/email/messagelabs.rb +213 -0
- data/lib/sisimai/bite/email/messagingserver.rb +206 -0
- data/lib/sisimai/bite/email/mfilter.rb +165 -0
- data/lib/sisimai/bite/email/mxlogic.rb +253 -0
- data/lib/sisimai/bite/email/notes.rb +181 -0
- data/lib/sisimai/bite/email/office365.rb +262 -0
- data/lib/sisimai/bite/email/opensmtpd.rb +192 -0
- data/lib/sisimai/bite/email/outlook.rb +207 -0
- data/lib/sisimai/bite/email/postfix.rb +310 -0
- data/lib/sisimai/bite/email/qmail.rb +304 -0
- data/lib/sisimai/bite/email/receivingses.rb +221 -0
- data/lib/sisimai/bite/email/sendgrid.rb +223 -0
- data/lib/sisimai/bite/email/sendmail.rb +290 -0
- data/lib/sisimai/bite/email/surfcontrol.rb +162 -0
- data/lib/sisimai/bite/email/userdefined.rb +129 -0
- data/lib/sisimai/bite/email/v5sendmail.rb +208 -0
- data/lib/sisimai/bite/email/verizon.rb +265 -0
- data/lib/sisimai/bite/email/x1.rb +124 -0
- data/lib/sisimai/bite/email/x2.rb +125 -0
- data/lib/sisimai/bite/email/x3.rb +141 -0
- data/lib/sisimai/bite/email/x4.rb +325 -0
- data/lib/sisimai/bite/email/x5.rb +178 -0
- data/lib/sisimai/bite/email/yahoo.rb +148 -0
- data/lib/sisimai/bite/email/yandex.rb +204 -0
- data/lib/sisimai/bite/email/zoho.rb +167 -0
- data/lib/sisimai/bite/json.rb +38 -0
- data/lib/sisimai/bite/json/amazonses.rb +255 -0
- data/lib/sisimai/bite/json/sendgrid.rb +79 -0
- data/lib/sisimai/ced.rb +30 -6
- data/lib/sisimai/data.rb +5 -5
- data/lib/sisimai/message.rb +6 -6
- data/lib/sisimai/message/email.rb +12 -11
- data/lib/sisimai/message/json.rb +20 -19
- data/lib/sisimai/msp.rb +15 -3
- data/lib/sisimai/mta.rb +15 -3
- data/lib/sisimai/order.rb +1 -1
- data/lib/sisimai/order/email.rb +113 -119
- data/lib/sisimai/order/json.rb +11 -10
- data/lib/sisimai/reason.rb +5 -4
- data/lib/sisimai/reason/policyviolation.rb +64 -0
- data/lib/sisimai/reason/securityerror.rb +13 -23
- data/lib/sisimai/reason/spamdetected.rb +1 -0
- data/lib/sisimai/reason/syntaxerror.rb +1 -0
- data/lib/sisimai/reason/virusdetected.rb +56 -0
- data/lib/sisimai/rfc3464.rb +8 -8
- data/lib/sisimai/rfc3834.rb +2 -2
- data/lib/sisimai/rfc5322.rb +1 -1
- data/lib/sisimai/skeleton.rb +1 -1
- data/lib/sisimai/smtp/error.rb +3 -3
- data/lib/sisimai/smtp/status.rb +26 -24
- data/lib/sisimai/version.rb +1 -1
- data/set-of-emails/README.md +1 -0
- data/set-of-emails/{jsonapi/ced-us-amazonses-01.json → jsonobj/json-amazonses-01.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-amazonses-02.json → jsonobj/json-amazonses-02.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-amazonses-03.json → jsonobj/json-amazonses-03.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-amazonses-04.json → jsonobj/json-amazonses-04.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-amazonses-05.json → jsonobj/json-amazonses-05.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-01.json → jsonobj/json-sendgrid-01.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-02.json → jsonobj/json-sendgrid-02.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-03.json → jsonobj/json-sendgrid-03.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-04.json → jsonobj/json-sendgrid-04.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-05.json → jsonobj/json-sendgrid-05.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-06.json → jsonobj/json-sendgrid-06.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-07.json → jsonobj/json-sendgrid-07.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-08.json → jsonobj/json-sendgrid-08.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-09.json → jsonobj/json-sendgrid-09.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-10.json → jsonobj/json-sendgrid-10.json} +0 -0
- data/set-of-emails/{jsonapi/ced-us-sendgrid-11.json → jsonobj/json-sendgrid-11.json} +0 -0
- data/set-of-emails/maildir/bsd/README.md +25 -17
- data/set-of-emails/maildir/bsd/{mta-activehunter-01.eml → email-activehunter-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-activehunter-02.eml → email-activehunter-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonses-01.eml → email-amazonses-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonses-02.eml → email-amazonses-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonses-03.eml → email-amazonses-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonses-04.eml → email-amazonses-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonses-05.eml → email-amazonses-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonses-06.eml → email-amazonses-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonses-07.eml → email-amazonses-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonses-08.eml → email-amazonses-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{ced-us-amazonses-01.eml → email-amazonses-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{ced-us-amazonses-02.eml → email-amazonses-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{ced-us-amazonses-03.eml → email-amazonses-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{ced-us-amazonses-04.eml → email-amazonses-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{ced-us-amazonses-05.eml → email-amazonses-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-01.eml → email-amazonworkmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-02.eml → email-amazonworkmail-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-03.eml → email-amazonworkmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-04.eml → email-amazonworkmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-05.eml → email-amazonworkmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-06.eml → email-amazonworkmail-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-07.eml → email-amazonworkmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-aol-01.eml → email-aol-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-aol-02.eml → email-aol-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-aol-03.eml → email-aol-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-aol-04.eml → email-aol-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-aol-05.eml → email-aol-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-aol-06.eml → email-aol-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-apachejames-01.eml → email-apachejames-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-bigfoot-01.eml → email-bigfoot-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-biglobe-01.eml → email-biglobe-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-courier-01.eml → email-courier-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-courier-02.eml → email-courier-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-courier-03.eml → email-courier-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-courier-04.eml → email-courier-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-domino-01.eml → email-domino-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-domino-02.eml → email-domino-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-de-einsundeins-01.eml → email-einsundeins-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2003-01.eml → email-exchange2003-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2003-02.eml → email-exchange2003-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2003-03.eml → email-exchange2003-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2003-04.eml → email-exchange2003-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2003-05.eml → email-exchange2003-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2003-06.eml → email-exchange2003-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2007-01.eml → email-exchange2007-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2007-02.eml → email-exchange2007-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exchange2007-03.eml → email-exchange2007-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-01.eml → email-exim-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-02.eml → email-exim-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-03.eml → email-exim-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-04.eml → email-exim-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-05.eml → email-exim-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-06.eml → email-exim-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-07.eml → email-exim-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-08.eml → email-exim-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-09.eml → email-exim-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-10.eml → email-exim-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-11.eml → email-exim-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-12.eml → email-exim-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-13.eml → email-exim-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-14.eml → email-exim-14.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-15.eml → email-exim-15.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-16.eml → email-exim-16.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-17.eml → email-exim-17.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-18.eml → email-exim-18.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-19.eml → email-exim-19.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-20.eml → email-exim-20.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-21.eml → email-exim-21.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-22.eml → email-exim-22.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-23.eml → email-exim-23.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-24.eml → email-exim-24.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-25.eml → email-exim-25.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-26.eml → email-exim-26.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-27.eml → email-exim-27.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-28.eml → email-exim-28.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-29.eml → email-exim-29.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-exim-30.eml → email-exim-30.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-ezweb-01.eml → email-ezweb-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-ezweb-02.eml → email-ezweb-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-ezweb-03.eml → email-ezweb-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-ezweb-04.eml → email-ezweb-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-ezweb-05.eml → email-ezweb-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-ezweb-06.eml → email-ezweb-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-facebook-01.eml → email-facebook-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-facebook-02.eml → email-facebook-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-de-gmx-01.eml → email-gmx-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-de-gmx-02.eml → email-gmx-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-de-gmx-03.eml → email-gmx-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-de-gmx-04.eml → email-gmx-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-01.eml → email-google-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-02.eml → email-google-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-03.eml → email-google-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-04.eml → email-google-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-05.eml → email-google-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-06.eml → email-google-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-07.eml → email-google-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-08.eml → email-google-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-09.eml → email-google-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-10.eml → email-google-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-11.eml → email-google-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-12.eml → email-google-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-13.eml → email-google-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-14.eml → email-google-14.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-15.eml → email-google-15.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-16.eml → email-google-16.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-google-17.eml → email-google-17.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-gsuite-01.eml → email-gsuite-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-gsuite-02.eml → email-gsuite-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-gsuite-03.eml → email-gsuite-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-gsuite-04.eml → email-gsuite-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-gsuite-05.eml → email-gsuite-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-gsuite-06.eml → email-gsuite-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-gsuite-07.eml → email-gsuite-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-imailserver-01.eml → email-imailserver-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-imailserver-02.eml → email-imailserver-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-imailserver-03.eml → email-imailserver-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-imailserver-04.eml → email-imailserver-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-imailserver-05.eml → email-imailserver-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-imailserver-06.eml → email-imailserver-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-interscanmss-01.eml → email-interscanmss-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-interscanmss-02.eml → email-interscanmss-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-kddi-01.eml → email-kddi-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-kddi-02.eml → email-kddi-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-jp-kddi-03.eml → email-kddi-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mailfoundry-01.eml → email-mailfoundry-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mailfoundry-02.eml → email-mailfoundry-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mailmarshalsmtp-01.eml → email-mailmarshalsmtp-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-mailru-01.eml → email-mailru-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-mailru-02.eml → email-mailru-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-mailru-03.eml → email-mailru-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-mailru-04.eml → email-mailru-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-mailru-05.eml → email-mailru-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-mailru-06.eml → email-mailru-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mcafee-01.eml → email-mcafee-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mcafee-02.eml → email-mcafee-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mcafee-03.eml → email-mcafee-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-uk-messagelabs-01.eml → email-messagelabs-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-messagingserver-01.eml → email-messagingserver-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-messagingserver-02.eml → email-messagingserver-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-messagingserver-03.eml → email-messagingserver-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-messagingserver-04.eml → email-messagingserver-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-messagingserver-05.eml → email-messagingserver-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-messagingserver-06.eml → email-messagingserver-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-messagingserver-07.eml → email-messagingserver-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mfilter-01.eml → email-mfilter-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mfilter-02.eml → email-mfilter-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mfilter-03.eml → email-mfilter-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mxlogic-01.eml → email-mxlogic-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mxlogic-02.eml → email-mxlogic-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-mxlogic-03.eml → email-mxlogic-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-notes-01.eml → email-notes-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-notes-02.eml → email-notes-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-notes-03.eml → email-notes-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-notes-04.eml → email-notes-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-office365-01.eml → email-office365-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-office365-02.eml → email-office365-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-opensmtpd-01.eml → email-opensmtpd-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-opensmtpd-02.eml → email-opensmtpd-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-opensmtpd-03.eml → email-opensmtpd-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-opensmtpd-04.eml → email-opensmtpd-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-opensmtpd-05.eml → email-opensmtpd-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-opensmtpd-06.eml → email-opensmtpd-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-outlook-01.eml → email-outlook-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-outlook-02.eml → email-outlook-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-outlook-03.eml → email-outlook-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-outlook-04.eml → email-outlook-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-outlook-05.eml → email-outlook-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-outlook-06.eml → email-outlook-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-outlook-07.eml → email-outlook-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-01.eml → email-postfix-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-02.eml → email-postfix-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-03.eml → email-postfix-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-04.eml → email-postfix-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-05.eml → email-postfix-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-06.eml → email-postfix-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-07.eml → email-postfix-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-08.eml → email-postfix-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-09.eml → email-postfix-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-10.eml → email-postfix-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-11.eml → email-postfix-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-12.eml → email-postfix-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-13.eml → email-postfix-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-14.eml → email-postfix-14.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-15.eml → email-postfix-15.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-16.eml → email-postfix-16.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-17.eml → email-postfix-17.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-18.eml → email-postfix-18.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-19.eml → email-postfix-19.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-20.eml → email-postfix-20.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-21.eml → email-postfix-21.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-22.eml → email-postfix-22.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-23.eml → email-postfix-23.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-24.eml → email-postfix-24.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-25.eml → email-postfix-25.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-26.eml → email-postfix-26.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-27.eml → email-postfix-27.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-28.eml → email-postfix-28.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-postfix-29.eml → email-postfix-29.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-01.eml → email-qmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-02.eml → email-qmail-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-03.eml → email-qmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-04.eml → email-qmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-05.eml → email-qmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-06.eml → email-qmail-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-07.eml → email-qmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-08.eml → email-qmail-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-09.eml → email-qmail-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-10.eml → email-qmail-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-11.eml → email-qmail-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-qmail-12.eml → email-qmail-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-receivingses-01.eml → email-receivingses-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-receivingses-02.eml → email-receivingses-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-receivingses-03.eml → email-receivingses-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-receivingses-04.eml → email-receivingses-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-receivingses-05.eml → email-receivingses-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-receivingses-06.eml → email-receivingses-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-receivingses-07.eml → email-receivingses-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-sendgrid-01.eml → email-sendgrid-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-sendgrid-02.eml → email-sendgrid-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-sendgrid-03.eml → email-sendgrid-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-01.eml → email-sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-02.eml → email-sendmail-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-03.eml → email-sendmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-04.eml → email-sendmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-05.eml → email-sendmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-06.eml → email-sendmail-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-07.eml → email-sendmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-08.eml → email-sendmail-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-09.eml → email-sendmail-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-10.eml → email-sendmail-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-11.eml → email-sendmail-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-12.eml → email-sendmail-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-13.eml → email-sendmail-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-14.eml → email-sendmail-14.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-15.eml → email-sendmail-15.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-16.eml → email-sendmail-16.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-17.eml → email-sendmail-17.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-18.eml → email-sendmail-18.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-19.eml → email-sendmail-19.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-20.eml → email-sendmail-20.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-21.eml → email-sendmail-21.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-22.eml → email-sendmail-22.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-23.eml → email-sendmail-23.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-24.eml → email-sendmail-24.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-25.eml → email-sendmail-25.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-26.eml → email-sendmail-26.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-27.eml → email-sendmail-27.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-28.eml → email-sendmail-28.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-29.eml → email-sendmail-29.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-30.eml → email-sendmail-30.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-31.eml → email-sendmail-31.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-32.eml → email-sendmail-32.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-33.eml → email-sendmail-33.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-34.eml → email-sendmail-34.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-35.eml → email-sendmail-35.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-36.eml → email-sendmail-36.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-37.eml → email-sendmail-37.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-38.eml → email-sendmail-38.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-39.eml → email-sendmail-39.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-40.eml → email-sendmail-40.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-41.eml → email-sendmail-41.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-42.eml → email-sendmail-42.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-sendmail-43.eml → email-sendmail-43.eml} +0 -0
- data/set-of-emails/maildir/bsd/email-sendmail-44.eml +67 -0
- data/set-of-emails/maildir/bsd/{mta-surfcontrol-01.eml → email-surfcontrol-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-surfcontrol-02.eml → email-surfcontrol-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-surfcontrol-03.eml → email-surfcontrol-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-v5sendmail-01.eml → email-v5sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-v5sendmail-02.eml → email-v5sendmail-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-v5sendmail-03.eml → email-v5sendmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-v5sendmail-04.eml → email-v5sendmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-v5sendmail-05.eml → email-v5sendmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-v5sendmail-06.eml → email-v5sendmail-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-v5sendmail-07.eml → email-v5sendmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-verizon-01.eml → email-verizon-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-verizon-02.eml → email-verizon-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x1-01.eml → email-x1-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x1-02.eml → email-x1-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x2-01.eml → email-x2-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x2-02.eml → email-x2-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x2-03.eml → email-x2-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x2-04.eml → email-x2-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x2-05.eml → email-x2-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x3-01.eml → email-x3-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x3-02.eml → email-x3-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x3-03.eml → email-x3-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x3-04.eml → email-x3-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x4-01.eml → email-x4-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x4-02.eml → email-x4-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x4-03.eml → email-x4-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x4-04.eml → email-x4-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x4-05.eml → email-x4-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x4-06.eml → email-x4-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x4-07.eml → email-x4-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{mta-x5-01.eml → email-x5-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-yahoo-01.eml → email-yahoo-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-yahoo-02.eml → email-yahoo-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-yahoo-03.eml → email-yahoo-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-yahoo-04.eml → email-yahoo-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-yahoo-05.eml → email-yahoo-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-yandex-01.eml → email-yandex-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-yandex-02.eml → email-yandex-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-ru-yandex-03.eml → email-yandex-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-zoho-01.eml → email-zoho-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-zoho-02.eml → email-zoho-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-zoho-03.eml → email-zoho-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-zoho-04.eml → email-zoho-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{msp-us-zoho-05.eml → email-zoho-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/rfc3464-31.eml +141 -0
- data/set-of-emails/maildir/bsd/rfc3464-32.eml +158 -0
- data/set-of-emails/maildir/dos/{mta-activehunter-01.eml → email-activehunter-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-amazonses-01.eml → email-amazonses-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-amazonworkmail-01.eml → email-amazonworkmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-aol-01.eml → email-aol-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-apachejames-01.eml → email-apachejames-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-bigfoot-01.eml → email-bigfoot-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-jp-biglobe-01.eml → email-biglobe-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-courier-01.eml → email-courier-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-domino-01.eml → email-domino-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-de-einsundeins-01.eml → email-einsundeins-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-exchange-01.eml → email-exchange-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-exchange2003-01.eml → email-exchange2003-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-exchange2007-01.eml → email-exchange2007-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-exim-01.eml → email-exim-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-jp-ezweb-01.eml → email-ezweb-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-facebook-01.eml → email-facebook-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-de-gmx-01.eml → email-gmx-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-google-01.eml → email-google-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-imailserver-01.eml → email-imailserver-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-interscanmss-01.eml → email-interscanmss-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-jp-kddi-01.eml → email-kddi-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-mailfoundry-01.eml → email-mailfoundry-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-mailmarshalsmtp-01.eml → email-mailmarshalsmtp-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-ru-mailru-01.eml → email-mailru-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-mcafee-01.eml → email-mcafee-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-uk-messagelabs-01.eml → email-messagelabs-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-messagingserver-01.eml → email-messagingserver-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-mfilter-01.eml → email-mfilter-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-mxlogic-01.eml → email-mxlogic-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-notes-01.eml → email-notes-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-office365-01.eml → email-office365-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-opensmtpd-01.eml → email-opensmtpd-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-outlook-01.eml → email-outlook-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-postfix-01.eml → email-postfix-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-qmail-01.eml → email-qmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-receivingses-01.eml → email-receivingses-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-sendgrid-01.eml → email-sendgrid-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-sendmail-01.eml → email-sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-surfcontrol-01.eml → email-surfcontrol-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-v5sendmail-01.eml → email-v5sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-verizon-01.eml → email-verizon-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-x1-01.eml → email-x1-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-x2-01.eml → email-x2-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-x3-01.eml → email-x3-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-x4-01.eml → email-x4-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{mta-x5-01.eml → email-x5-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-yahoo-01.eml → email-yahoo-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-ru-yandex-01.eml → email-yandex-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{msp-us-zoho-01.eml → email-zoho-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-activehunter-01.eml → email-activehunter-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-amazonses-01.eml → email-amazonses-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-amazonworkmail-01.eml → email-amazonworkmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-aol-01.eml → email-aol-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-apachejames-01.eml → email-apachejames-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-bigfoot-01.eml → email-bigfoot-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-jp-biglobe-01.eml → email-biglobe-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-courier-01.eml → email-courier-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-domino-01.eml → email-domino-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-de-einsundeins-01.eml → email-einsundeins-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-exchange-01.eml → email-exchange-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-exchange2003-01.eml → email-exchange2003-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-exchange2007-01.eml → email-exchange2007-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-exim-01.eml → email-exim-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-jp-ezweb-01.eml → email-ezweb-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-facebook-01.eml → email-facebook-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-de-gmx-01.eml → email-gmx-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-google-01.eml → email-google-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-imailserver-01.eml → email-imailserver-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-interscanmss-01.eml → email-interscanmss-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-jp-kddi-01.eml → email-kddi-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-mailfoundry-01.eml → email-mailfoundry-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-mailmarshalsmtp-01.eml → email-mailmarshalsmtp-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-ru-mailru-01.eml → email-mailru-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-mcafee-01.eml → email-mcafee-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-uk-messagelabs-01.eml → email-messagelabs-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-messagingserver-01.eml → email-messagingserver-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-mfilter-01.eml → email-mfilter-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-mxlogic-01.eml → email-mxlogic-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-notes-01.eml → email-notes-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-office365-01.eml → email-office365-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-opensmtpd-01.eml → email-opensmtpd-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-outlook-01.eml → email-outlook-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-postfix-01.eml → email-postfix-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-qmail-01.eml → email-qmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-receivingses-01.eml → email-receivingses-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-sendgrid-01.eml → email-sendgrid-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-sendmail-01.eml → email-sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-surfcontrol-01.eml → email-surfcontrol-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-v5sendmail-01.eml → email-v5sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-verizon-01.eml → email-verizon-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-x1-01.eml → email-x1-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-x2-01.eml → email-x2-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-x3-01.eml → email-x3-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-x4-01.eml → email-x4-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{mta-x5-01.eml → email-x5-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-yahoo-01.eml → email-yahoo-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-ru-yandex-01.eml → email-yandex-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{msp-us-zoho-01.eml → email-zoho-01.eml} +0 -0
- metadata +483 -478
- data/lib/sisimai/ced/us/amazonses.rb +0 -269
- data/lib/sisimai/ced/us/sendgrid.rb +0 -86
- data/lib/sisimai/msp/de/einsundeins.rb +0 -146
- data/lib/sisimai/msp/de/gmx.rb +0 -170
- data/lib/sisimai/msp/jp/biglobe.rb +0 -150
- data/lib/sisimai/msp/jp/ezweb.rb +0 -262
- data/lib/sisimai/msp/jp/kddi.rb +0 -168
- data/lib/sisimai/msp/ru/mailru.rb +0 -274
- data/lib/sisimai/msp/ru/yandex.rb +0 -207
- data/lib/sisimai/msp/uk/messagelabs.rb +0 -216
- data/lib/sisimai/msp/us/amazonses.rb +0 -237
- data/lib/sisimai/msp/us/amazonworkmail.rb +0 -195
- data/lib/sisimai/msp/us/aol.rb +0 -211
- data/lib/sisimai/msp/us/bigfoot.rb +0 -210
- data/lib/sisimai/msp/us/facebook.rb +0 -277
- data/lib/sisimai/msp/us/google.rb +0 -323
- data/lib/sisimai/msp/us/gsuite.rb +0 -277
- data/lib/sisimai/msp/us/office365.rb +0 -264
- data/lib/sisimai/msp/us/outlook.rb +0 -209
- data/lib/sisimai/msp/us/receivingses.rb +0 -224
- data/lib/sisimai/msp/us/sendgrid.rb +0 -226
- data/lib/sisimai/msp/us/verizon.rb +0 -267
- data/lib/sisimai/msp/us/yahoo.rb +0 -150
- data/lib/sisimai/msp/us/zoho.rb +0 -170
- data/lib/sisimai/mta/activehunter.rb +0 -126
- data/lib/sisimai/mta/apachejames.rb +0 -172
- data/lib/sisimai/mta/courier.rb +0 -268
- data/lib/sisimai/mta/domino.rb +0 -177
- data/lib/sisimai/mta/exchange2003.rb +0 -287
- data/lib/sisimai/mta/exchange2007.rb +0 -182
- data/lib/sisimai/mta/exim.rb +0 -525
- data/lib/sisimai/mta/imailserver.rb +0 -182
- data/lib/sisimai/mta/interscanmss.rb +0 -149
- data/lib/sisimai/mta/mailfoundry.rb +0 -137
- data/lib/sisimai/mta/mailmarshalsmtp.rb +0 -176
- data/lib/sisimai/mta/mcafee.rb +0 -172
- data/lib/sisimai/mta/messagingserver.rb +0 -208
- data/lib/sisimai/mta/mfilter.rb +0 -167
- data/lib/sisimai/mta/mxlogic.rb +0 -255
- data/lib/sisimai/mta/notes.rb +0 -183
- data/lib/sisimai/mta/opensmtpd.rb +0 -195
- data/lib/sisimai/mta/postfix.rb +0 -312
- data/lib/sisimai/mta/qmail.rb +0 -307
- data/lib/sisimai/mta/sendmail.rb +0 -293
- data/lib/sisimai/mta/surfcontrol.rb +0 -164
- data/lib/sisimai/mta/userdefined.rb +0 -132
- data/lib/sisimai/mta/v5sendmail.rb +0 -210
- data/lib/sisimai/mta/x1.rb +0 -127
- data/lib/sisimai/mta/x2.rb +0 -128
- data/lib/sisimai/mta/x3.rb +0 -144
- data/lib/sisimai/mta/x4.rb +0 -328
- data/lib/sisimai/mta/x5.rb +0 -181
- data/set-of-emails/maildir/bsd/mta-README.md +0 -319
- data/set-of-emails/maildir/dos/ced-us-amazonses-01.eml +0 -47
- data/set-of-emails/maildir/mac/ced-us-amazonses-01.eml +0 -2
@@ -0,0 +1,260 @@
|
|
1
|
+
module Sisimai::Bite::Email
|
2
|
+
module EZweb
|
3
|
+
# Sisimai::Bite::Email::EZweb parses a bounce email which created by au EZweb.
|
4
|
+
# Methods in the module are called from only Sisimai::Message.
|
5
|
+
class << self
|
6
|
+
# Imported from p5-Sisimail/lib/Sisimai/Bite/Email/EZweb.pm
|
7
|
+
require 'sisimai/bite/email'
|
8
|
+
|
9
|
+
Re0 = {
|
10
|
+
:'from' => %r/[<]?(?>postmaster[@]ezweb[.]ne[.]jp)[>]?/i,
|
11
|
+
:'subject' => %r/\AMail System Error - Returned Mail\z/,
|
12
|
+
:'received' => %r/\Afrom[ ](?:.+[.])?ezweb[.]ne[.]jp[ ]/,
|
13
|
+
:'message-id' => %r/[@].+[.]ezweb[.]ne[.]jp[>]\z/,
|
14
|
+
}
|
15
|
+
Re1 = {
|
16
|
+
:begin => %r{\A(?:
|
17
|
+
The[ ]user[(]s[)][ ]
|
18
|
+
|Your[ ]message[ ]
|
19
|
+
|Each[ ]of[ ]the[ ]following
|
20
|
+
|[<][^ ]+[@][^ ]+[>]\z
|
21
|
+
)
|
22
|
+
}x,
|
23
|
+
:rfc822 => %r#\A(?:[-]{50}|Content-Type:[ ]*message/rfc822)#,
|
24
|
+
:boundary => %r/\A__SISIMAI_PSEUDO_BOUNDARY__\z/,
|
25
|
+
:endof => %r/\A__END_OF_EMAIL_MESSAGE__\z/,
|
26
|
+
}
|
27
|
+
ReFailure = {
|
28
|
+
# notaccept: [ %r/The following recipients did not receive this message:/ ],
|
29
|
+
mailboxfull: [
|
30
|
+
%r/The user[(]s[)] account is temporarily over quota/,
|
31
|
+
],
|
32
|
+
suspend: [
|
33
|
+
# http://www.naruhodo-au.kddi.com/qa3429203.html
|
34
|
+
# The recipient may be unpaid user...?
|
35
|
+
%r/The user[(]s[)] account is disabled[.]/,
|
36
|
+
%r/The user[(]s[)] account is temporarily limited[.]/,
|
37
|
+
],
|
38
|
+
expired: [
|
39
|
+
# Your message was not delivered within 0 days and 1 hours.
|
40
|
+
# Remote host is not responding.
|
41
|
+
%r/Your message was not delivered within /,
|
42
|
+
],
|
43
|
+
onhold: [
|
44
|
+
%r/Each of the following recipients was rejected by a remote mail server/,
|
45
|
+
],
|
46
|
+
}
|
47
|
+
Indicators = Sisimai::Bite::Email.INDICATORS
|
48
|
+
|
49
|
+
def description; return 'au EZweb: http://www.au.kddi.com/mobile/'; end
|
50
|
+
def smtpagent; return Sisimai::Bite.smtpagent(self); end
|
51
|
+
def headerlist; return ['X-SPASIGN']; end
|
52
|
+
def pattern; return Re0; end
|
53
|
+
|
54
|
+
# Parse bounce messages from au EZweb
|
55
|
+
# @param [Hash] mhead Message headers of a bounce email
|
56
|
+
# @options mhead [String] from From header
|
57
|
+
# @options mhead [String] date Date header
|
58
|
+
# @options mhead [String] subject Subject header
|
59
|
+
# @options mhead [Array] received Received headers
|
60
|
+
# @options mhead [String] others Other required headers
|
61
|
+
# @param [String] mbody Message body of a bounce email
|
62
|
+
# @return [Hash, Nil] Bounce data list and message/rfc822
|
63
|
+
# part or nil if it failed to parse or
|
64
|
+
# the arguments are missing
|
65
|
+
def scan(mhead, mbody)
|
66
|
+
return nil unless mhead
|
67
|
+
return nil unless mbody
|
68
|
+
|
69
|
+
match = 0
|
70
|
+
match += 1 if mhead['from'] =~ Re0[:from]
|
71
|
+
match += 1 if mhead['subject'] =~ Re0[:subject]
|
72
|
+
match += 1 if mhead['received'].find { |a| a =~ Re0[:received] }
|
73
|
+
if mhead['message-id']
|
74
|
+
match += 1 if mhead['message-id'] =~ Re0[:'message-id']
|
75
|
+
end
|
76
|
+
return nil if match < 2
|
77
|
+
|
78
|
+
require 'sisimai/string'
|
79
|
+
require 'sisimai/address'
|
80
|
+
dscontents = [Sisimai::Bite.DELIVERYSTATUS]
|
81
|
+
hasdivided = mbody.split("\n")
|
82
|
+
rfc822list = [] # (Array) Each line in message/rfc822 part string
|
83
|
+
blanklines = 0 # (Integer) The number of blank lines
|
84
|
+
readcursor = 0 # (Integer) Points the current cursor position
|
85
|
+
recipients = 0 # (Integer) The number of 'Final-Recipient' header
|
86
|
+
rxboundary = %r/\A__SISIMAI_PSEUDO_BOUNDARY__\z/
|
87
|
+
v = nil
|
88
|
+
|
89
|
+
if mhead['content-type']
|
90
|
+
# Get the boundary string and set regular expression for matching with
|
91
|
+
# the boundary string.
|
92
|
+
require 'sisimai/mime'
|
93
|
+
b0 = Sisimai::MIME.boundary(mhead['content-type'], 1)
|
94
|
+
if b0.size > 0
|
95
|
+
# Convert to regular expression
|
96
|
+
rxboundary = Regexp.new('\A' + Regexp.escape(b0) + '\z')
|
97
|
+
end
|
98
|
+
end
|
99
|
+
rxmessages = []
|
100
|
+
ReFailure.each_key { |a| rxmessages.concat(ReFailure[a]) }
|
101
|
+
|
102
|
+
hasdivided.each do |e|
|
103
|
+
if readcursor.zero?
|
104
|
+
# Beginning of the bounce message or delivery status part
|
105
|
+
if e =~ Re1[:begin]
|
106
|
+
readcursor |= Indicators[:deliverystatus]
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
if readcursor & Indicators[:'message-rfc822'] == 0
|
111
|
+
# Beginning of the original message part
|
112
|
+
if e =~ Re1[:rfc822] || e =~ rxboundary
|
113
|
+
readcursor |= Indicators[:'message-rfc822']
|
114
|
+
next
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
if readcursor & Indicators[:'message-rfc822'] > 0
|
119
|
+
# After "message/rfc822"
|
120
|
+
if e.empty?
|
121
|
+
blanklines += 1
|
122
|
+
break if blanklines > 1
|
123
|
+
next
|
124
|
+
end
|
125
|
+
rfc822list << e
|
126
|
+
|
127
|
+
else
|
128
|
+
# Before "message/rfc822"
|
129
|
+
next if readcursor & Indicators[:deliverystatus] == 0
|
130
|
+
next if e.empty?
|
131
|
+
|
132
|
+
# The user(s) account is disabled.
|
133
|
+
#
|
134
|
+
# <***@ezweb.ne.jp>: 550 user unknown (in reply to RCPT TO command)
|
135
|
+
#
|
136
|
+
# -- OR --
|
137
|
+
# Each of the following recipients was rejected by a remote
|
138
|
+
# mail server.
|
139
|
+
#
|
140
|
+
# Recipient: <******@ezweb.ne.jp>
|
141
|
+
# >>> RCPT TO:<******@ezweb.ne.jp>
|
142
|
+
# <<< 550 <******@ezweb.ne.jp>: User unknown
|
143
|
+
v = dscontents[-1]
|
144
|
+
|
145
|
+
if cv = e.match(/\A[<]([^ ]+[@][^ ]+)[>]\z/) ||
|
146
|
+
e.match(/\A[<]([^ ]+[@][^ ]+)[>]:?(.*)\z/) ||
|
147
|
+
e.match(/\A[ \t]+Recipient: [<]([^ ]+[@][^ ]+)[>]/)
|
148
|
+
|
149
|
+
if v['recipient']
|
150
|
+
# There are multiple recipient addresses in the message body.
|
151
|
+
push dscontents << Sisimai::Bite.DELIVERYSTATUS
|
152
|
+
v = dscontents[-1]
|
153
|
+
end
|
154
|
+
|
155
|
+
r = Sisimai::Address.s3s4(cv[1])
|
156
|
+
if Sisimai::RFC5322.is_emailaddress(r)
|
157
|
+
v['recipient'] = r
|
158
|
+
recipients += 1
|
159
|
+
end
|
160
|
+
|
161
|
+
elsif cv = e.match(/\A[Ss]tatus:[ ]*(\d[.]\d+[.]\d+)/)
|
162
|
+
# Status: 5.1.1
|
163
|
+
# Status:5.2.0
|
164
|
+
# Status: 5.1.0 (permanent failure)
|
165
|
+
v['status'] = cv[1]
|
166
|
+
|
167
|
+
elsif cv = e.match(/\A[Aa]ction:[ ]*(.+)\z/)
|
168
|
+
# Action: failed
|
169
|
+
v['action'] = cv[1].downcase
|
170
|
+
|
171
|
+
elsif cv = e.match(/\A[Rr]emote-MTA:[ ]*(?:DNS|dns);[ ]*(.+)\z/)
|
172
|
+
# Remote-MTA: DNS; mx.example.jp
|
173
|
+
v['rhost'] = cv[1].downcase
|
174
|
+
|
175
|
+
elsif cv = e.match(/\A[Ll]ast-[Aa]ttempt-[Dd]ate:[ ]*(.+)\z/)
|
176
|
+
# Last-Attempt-Date: Fri, 14 Feb 2014 12:30:08 -0500
|
177
|
+
v['date'] = cv[1]
|
178
|
+
|
179
|
+
else
|
180
|
+
next if Sisimai::String.is_8bit(e)
|
181
|
+
if cv = e.match(/\A[ \t]+[>]{3}[ \t]+([A-Z]{4})/)
|
182
|
+
# >>> RCPT TO:<******@ezweb.ne.jp>
|
183
|
+
v['command'] = cv[1]
|
184
|
+
|
185
|
+
else
|
186
|
+
# Check error message
|
187
|
+
if rxmessages.find { |a| e =~ a }
|
188
|
+
# Check with regular expressions of each error
|
189
|
+
v['diagnosis'] ||= ''
|
190
|
+
v['diagnosis'] += ' ' + e
|
191
|
+
|
192
|
+
else
|
193
|
+
# >>> 550
|
194
|
+
v['alterrors'] ||= ''
|
195
|
+
v['alterrors'] += ' ' + e
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
return nil if recipients.zero?
|
202
|
+
|
203
|
+
dscontents.map do |e|
|
204
|
+
if e['alterrors'] && e['alterrors'].size > 0
|
205
|
+
# Copy alternative error message
|
206
|
+
e['diagnosis'] ||= e['alterrors']
|
207
|
+
if e['diagnosis'] =~ /\A[-]+/ || e['diagnosis'] =~ /__\z/
|
208
|
+
# Override the value of diagnostic code message
|
209
|
+
e['diagnosis'] = e['alterrors'] if e['alterrors'].size > 0
|
210
|
+
end
|
211
|
+
e.delete('alterrors')
|
212
|
+
end
|
213
|
+
e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
|
214
|
+
|
215
|
+
if mhead['x-spasign'] && mhead['x-spasign'] == 'NG'
|
216
|
+
# Content-Type: text/plain; ..., X-SPASIGN: NG (spamghetti, au by EZweb)
|
217
|
+
# Filtered recipient returns message that include 'X-SPASIGN' header
|
218
|
+
e['reason'] = 'filtered'
|
219
|
+
|
220
|
+
else
|
221
|
+
if e['command'] == 'RCPT'
|
222
|
+
# set "userunknown" when the remote server rejected after RCPT
|
223
|
+
# command.
|
224
|
+
e['reason'] = 'userunknown'
|
225
|
+
else
|
226
|
+
# SMTP command is not RCPT
|
227
|
+
catch :SESSION do
|
228
|
+
ReFailure.each_key do |r|
|
229
|
+
# Verify each regular expression of session errors
|
230
|
+
ReFailure[r].each do |rr|
|
231
|
+
# Check each regular expression
|
232
|
+
next unless e['diagnosis'] =~ rr
|
233
|
+
e['reason'] = r.to_s
|
234
|
+
throw :SESSION
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
unless e['reason']
|
243
|
+
# The value of "reason" is not set yet.
|
244
|
+
unless e['recipient'] =~ /[@]ezweb[.]ne[.]jp\z/
|
245
|
+
# Deal as "userunknown" when the domain part of the recipient
|
246
|
+
# is "ezweb.ne.jp".
|
247
|
+
e['reason'] = 'userunknown'
|
248
|
+
end
|
249
|
+
end
|
250
|
+
e['agent'] = self.smtpagent
|
251
|
+
end
|
252
|
+
|
253
|
+
rfc822part = Sisimai::RFC5322.weedout(rfc822list)
|
254
|
+
return { 'ds' => dscontents, 'rfc822' => rfc822part }
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
@@ -0,0 +1,274 @@
|
|
1
|
+
module Sisimai::Bite::Email
|
2
|
+
module Facebook
|
3
|
+
# Sisimai::Bite::Email::Facebook parses a bounce email which created by Facebook.
|
4
|
+
# Methods in the module are called from only Sisimai::Message.
|
5
|
+
class << self
|
6
|
+
# Imported from p5-Sisimail/lib/Sisimai/Bite/Email/Facebook.pm
|
7
|
+
require 'sisimai/bite/email'
|
8
|
+
|
9
|
+
Re0 = {
|
10
|
+
:from => %r/\AFacebook [<]mailer-daemon[@]mx[.]facebook[.]com[>]\z/,
|
11
|
+
:subject => %r/\ASorry, your message could not be delivered\z/,
|
12
|
+
}
|
13
|
+
Re1 = {
|
14
|
+
:begin => %r/\AThis message was created automatically by Facebook[.]\z/,
|
15
|
+
:rfc822 => %r/\AContent-Disposition: inline\z/,
|
16
|
+
:endof => %r/\A__END_OF_EMAIL_MESSAGE__\z/,
|
17
|
+
}
|
18
|
+
|
19
|
+
# http://postmaster.facebook.com/response_codes
|
20
|
+
# NOT TESTD EXCEPT RCP-P2
|
21
|
+
ReFailure = {
|
22
|
+
userunknown: [
|
23
|
+
'RCP-P1', # The attempted recipient address does not exist.
|
24
|
+
'INT-P1', # The attempted recipient address does not exist.
|
25
|
+
'INT-P3', # The attempted recpient group address does not exist.
|
26
|
+
'INT-P4', # The attempted recipient address does not exist.
|
27
|
+
],
|
28
|
+
filtered: [
|
29
|
+
'RCP-P2', # The attempted recipient's preferences prevent messages from being delivered.
|
30
|
+
'RCP-P3', # The attempted recipient's privacy settings blocked the delivery.
|
31
|
+
],
|
32
|
+
mesgtoobig: [
|
33
|
+
'MSG-P1', # The message exceeds Facebook's maximum allowed size.
|
34
|
+
'INT-P2', # The message exceeds Facebook's maximum allowed size.
|
35
|
+
],
|
36
|
+
contenterror: [
|
37
|
+
'MSG-P2', # The message contains an attachment type that Facebook does not accept.
|
38
|
+
'MSG-P3', # The message contains multiple instances of a header field that can only be present once. Please see RFC 5322, section 3.6 for more information
|
39
|
+
'POL-P6', # The message contains a url that has been blocked by Facebook.
|
40
|
+
'POL-P7', # The message does not comply with Facebook's abuse policies and will not be accepted.
|
41
|
+
],
|
42
|
+
securityerror: [
|
43
|
+
'POL-P1', # Your mail server's IP Address is listed on the Spamhaus PBL.
|
44
|
+
'POL-P2', # Facebook will no longer accept mail from your mail server's IP Address.
|
45
|
+
'POL-P5', # The message contains a virus.
|
46
|
+
'POL-P7', # The message does not comply with Facebook's Domain Authentication requirements.
|
47
|
+
],
|
48
|
+
notaccept: [
|
49
|
+
'POL-P3', # Facebook is not accepting messages from your mail server. This will persist for 4 to 8 hours.
|
50
|
+
'POL-P4', # Facebook is not accepting messages from your mail server. This will persist for 24 to 48 hours.
|
51
|
+
'POL-T1', # Facebook is not accepting messages from your mail server, but they may be retried later. This will persist for 1 to 2 hours.
|
52
|
+
'POL-T2', # Facebook is not accepting messages from your mail server, but they may be retried later. This will persist for 4 to 8 hours.
|
53
|
+
'POL-T3', # Facebook is not accepting messages from your mail server, but they may be retried later. This will persist for 24 to 48 hours.
|
54
|
+
],
|
55
|
+
rejected: [
|
56
|
+
'DNS-P1', # Your SMTP MAIL FROM domain does not exist.
|
57
|
+
'DNS-P2', # Your SMTP MAIL FROM domain does not have an MX record.
|
58
|
+
'DNS-T1', # Your SMTP MAIL FROM domain exists but does not currently resolve.
|
59
|
+
'DNS-P3', # Your mail server does not have a reverse DNS record.
|
60
|
+
'DNS-T2', # You mail server's reverse DNS record does not currently resolve.
|
61
|
+
],
|
62
|
+
systemerror: [
|
63
|
+
'CON-T1', # Facebook's mail server currently has too many connections open to allow another one.
|
64
|
+
],
|
65
|
+
toomanyconn: [
|
66
|
+
'CON-T3', # Your mail server has opened too many new connections to Facebook's mail servers in a short period of time.
|
67
|
+
],
|
68
|
+
suspend: [
|
69
|
+
'RCP-T4', # The attempted recipient address is currently deactivated. The user may or may not reactivate it.
|
70
|
+
],
|
71
|
+
undefined: [
|
72
|
+
'RCP-T1', # The attempted recipient address is not currently available due to an internal system issue. This is a temporary condition.
|
73
|
+
'MSG-T1', # The number of recipients on the message exceeds Facebook's allowed maximum.
|
74
|
+
'CON-T2', # Your mail server currently has too many connections open to Facebook's mail servers.
|
75
|
+
'CON-T4', # Your mail server has exceeded the maximum number of recipients for its current connection.
|
76
|
+
],
|
77
|
+
}
|
78
|
+
Indicators = Sisimai::Bite::Email.INDICATORS
|
79
|
+
|
80
|
+
def description; return 'Facebook: https://www.facebook.com'; end
|
81
|
+
def smtpagent; return Sisimai::Bite.smtpagent(self); end
|
82
|
+
def headerlist; return []; end
|
83
|
+
def pattern; return Re0; end
|
84
|
+
|
85
|
+
# Parse bounce messages from Facebook
|
86
|
+
# @param [Hash] mhead Message headers of a bounce email
|
87
|
+
# @options mhead [String] from From header
|
88
|
+
# @options mhead [String] date Date header
|
89
|
+
# @options mhead [String] subject Subject header
|
90
|
+
# @options mhead [Array] received Received headers
|
91
|
+
# @options mhead [String] others Other required headers
|
92
|
+
# @param [String] mbody Message body of a bounce email
|
93
|
+
# @return [Hash, Nil] Bounce data list and message/rfc822
|
94
|
+
# part or nil if it failed to parse or
|
95
|
+
# the arguments are missing
|
96
|
+
def scan(mhead, mbody)
|
97
|
+
return nil unless mhead
|
98
|
+
return nil unless mbody
|
99
|
+
return nil unless mhead['from'] =~ Re0[:from]
|
100
|
+
return nil unless mhead['subject'] =~ Re0[:subject]
|
101
|
+
|
102
|
+
dscontents = [Sisimai::Bite.DELIVERYSTATUS]
|
103
|
+
hasdivided = mbody.split("\n")
|
104
|
+
havepassed = ['']
|
105
|
+
rfc822list = [] # (Array) Each line in message/rfc822 part string
|
106
|
+
blanklines = 0 # (Integer) The number of blank lines
|
107
|
+
readcursor = 0 # (Integer) Points the current cursor position
|
108
|
+
recipients = 0 # (Integer) The number of 'Final-Recipient' header
|
109
|
+
fbresponse = '' # (String) Response code from Facebook
|
110
|
+
connvalues = 0 # (Integer) Flag, 1 if all the value of $connheader have been set
|
111
|
+
connheader = {
|
112
|
+
'date' => '', # The value of Arrival-Date header
|
113
|
+
'lhost' => '', # The value of Reporting-MTA header
|
114
|
+
}
|
115
|
+
v = nil
|
116
|
+
|
117
|
+
hasdivided.each do |e|
|
118
|
+
# Save the current line for the next loop
|
119
|
+
havepassed << e
|
120
|
+
p = havepassed[-2]
|
121
|
+
|
122
|
+
if readcursor.zero?
|
123
|
+
# Beginning of the bounce message or delivery status part
|
124
|
+
if e =~ Re1[:begin]
|
125
|
+
readcursor |= Indicators[:deliverystatus]
|
126
|
+
next
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
if readcursor & Indicators[:'message-rfc822'] == 0
|
131
|
+
# Beginning of the original message part
|
132
|
+
if e =~ Re1[:rfc822]
|
133
|
+
readcursor |= Indicators[:'message-rfc822']
|
134
|
+
next
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
if readcursor & Indicators[:'message-rfc822'] > 0
|
139
|
+
# After "message/rfc822"
|
140
|
+
if e.empty?
|
141
|
+
blanklines += 1
|
142
|
+
break if blanklines > 1
|
143
|
+
next
|
144
|
+
end
|
145
|
+
rfc822list << e
|
146
|
+
|
147
|
+
else
|
148
|
+
# Before "message/rfc822"
|
149
|
+
next if readcursor & Indicators[:deliverystatus] == 0
|
150
|
+
next if e.empty?
|
151
|
+
|
152
|
+
if connvalues == connheader.keys.size
|
153
|
+
# Reporting-MTA: dns; 10.138.205.200
|
154
|
+
# Arrival-Date: Thu, 23 Jun 2011 02:29:43 -0700
|
155
|
+
v = dscontents[-1]
|
156
|
+
|
157
|
+
if cv = e.match(/\A[Ff]inal-[Rr]ecipient:[ ]*(?:RFC|rfc)822;[ ]*([^ ]+)\z/)
|
158
|
+
# Final-Recipient: RFC822; userunknown@example.jp
|
159
|
+
if v['recipient']
|
160
|
+
# There are multiple recipient addresses in the message body.
|
161
|
+
dscontents << Sisimai::Bite.DELIVERYSTATUS
|
162
|
+
v = dscontents[-1]
|
163
|
+
end
|
164
|
+
v['recipient'] = cv[1]
|
165
|
+
recipients += 1
|
166
|
+
|
167
|
+
elsif cv = e.match(/\A[Xx]-[Aa]ctual-[Rr]ecipient:[ ]*(?:RFC|rfc)822;[ ]*(.+)\z/)
|
168
|
+
# X-Actual-Recipient: RFC822; kijitora@example.co.jp
|
169
|
+
v['alias'] = cv[1]
|
170
|
+
|
171
|
+
elsif cv = e.match(/\A[Aa]ction:[ ]*(.+)\z/)
|
172
|
+
# Action: failed
|
173
|
+
v['action'] = cv[1].downcase
|
174
|
+
|
175
|
+
elsif cv = e.match(/\A[Ss]tatus:[ ]*(\d[.]\d+[.]\d+)/)
|
176
|
+
# Status: 5.1.1
|
177
|
+
# Status:5.2.0
|
178
|
+
# Status: 5.1.0 (permanent failure)
|
179
|
+
v['status'] = cv[1]
|
180
|
+
|
181
|
+
elsif cv = e.match(/\A[Rr]emote-MTA:[ ]*(?:DNS|dns);[ ]*(.+)\z/)
|
182
|
+
# Remote-MTA: DNS; mx.example.jp
|
183
|
+
v['rhost'] = cv[1].downcase
|
184
|
+
|
185
|
+
elsif cv = e.match(/\A[Ll]ast-[Aa]ttempt-[Dd]ate:[ ]*(.+)\z/)
|
186
|
+
# Last-Attempt-Date: Fri, 14 Feb 2014 12:30:08 -0500
|
187
|
+
v['date'] = cv[1]
|
188
|
+
|
189
|
+
else
|
190
|
+
if cv = e.match(/\A[Dd]iagnostic-[Cc]ode:[ ]*(.+?);[ ]*(.+)\z/)
|
191
|
+
# Diagnostic-Code: smtp; 550 5.1.1 RCP-P2
|
192
|
+
# http://postmaster.facebook.com/response_codes?ip=192.0.2.135#rcp Refused due to recipient preferences
|
193
|
+
v['spec'] = cv[1].upcase
|
194
|
+
v['diagnosis'] = cv[2]
|
195
|
+
|
196
|
+
elsif p =~ /\A[Dd]iagnostic-[Cc]ode:[ ]*/ && cv = e.match(/\A[ \t]+(.+)\z/)
|
197
|
+
# Continued line of the value of Diagnostic-Code header
|
198
|
+
v['diagnosis'] ||= ''
|
199
|
+
v['diagnosis'] += ' ' + cv[1]
|
200
|
+
havepassed[-1] = 'Diagnostic-Code: ' + e
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
else
|
205
|
+
if cv = e.match(/\A[Rr]eporting-MTA:[ ]*(?:DNS|dns);[ ]*(.+)\z/)
|
206
|
+
# Reporting-MTA: dns; mx.example.jp
|
207
|
+
next if connheader['lhost'].size > 0
|
208
|
+
connheader['lhost'] = cv[1].downcase
|
209
|
+
connvalues += 1
|
210
|
+
|
211
|
+
elsif cv = e.match(/\A[Aa]rrival-[Dd]ate:[ ]*(.+)\z/)
|
212
|
+
# Arrival-Date: Wed, 29 Apr 2009 16:03:18 +0900
|
213
|
+
next if connheader['date'].size > 0
|
214
|
+
connheader['date'] = cv[1]
|
215
|
+
connvalues += 1
|
216
|
+
end
|
217
|
+
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
return nil if recipients.zero?
|
222
|
+
require 'sisimai/string'
|
223
|
+
|
224
|
+
dscontents.map do |e|
|
225
|
+
e['lhost'] ||= connheader['lhost']
|
226
|
+
e['agent'] = self.smtpagent
|
227
|
+
e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
|
228
|
+
|
229
|
+
if cv = e['diagnosis'].match(/\b([A-Z]{3})[-]([A-Z])(\d)\b/)
|
230
|
+
# Diagnostic-Code: smtp; 550 5.1.1 RCP-P2
|
231
|
+
lhs = cv[1]
|
232
|
+
rhs = cv[2]
|
233
|
+
num = cv[3]
|
234
|
+
|
235
|
+
fbresponse = sprintf('%s-%s%d', lhs, rhs, num)
|
236
|
+
end
|
237
|
+
|
238
|
+
catch :SESSION do
|
239
|
+
ReFailure.each_key do |r|
|
240
|
+
# Verify each regular expression of session errors
|
241
|
+
ReFailure[r].each do |rr|
|
242
|
+
# Check each regular expression
|
243
|
+
next unless fbresponse == rr
|
244
|
+
e['reason'] = r.to_s
|
245
|
+
throw :SESSION
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
unless e['reason']
|
251
|
+
# http://postmaster.facebook.com/response_codes
|
252
|
+
# Facebook System Resource Issues
|
253
|
+
# These codes indicate a temporary issue internal to Facebook's
|
254
|
+
# system. Administrators observing these issues are not required to
|
255
|
+
# take any action to correct them.
|
256
|
+
if fbresponse =~ /\AINT-T\d+\z/
|
257
|
+
# * INT-Tx
|
258
|
+
#
|
259
|
+
# https://groups.google.com/forum/#!topic/cdmix/eXfi4ddgYLQ
|
260
|
+
# This block has not been tested because we have no email sample
|
261
|
+
# including "INT-T?" error code.
|
262
|
+
e['reason'] = 'systemerror'
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
rfc822part = Sisimai::RFC5322.weedout(rfc822list)
|
268
|
+
return { 'ds' => dscontents, 'rfc822' => rfc822part }
|
269
|
+
end
|
270
|
+
|
271
|
+
end
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|