sisimai 4.25.4-java → 4.25.10-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 +5 -5
- data/.travis.yml +2 -2
- data/ANALYTICAL-PRECISION +60 -56
- data/Benchmarks.mk +5 -3
- data/ChangeLog.md +184 -1
- data/Developers.mk +2 -2
- data/Makefile +1 -1
- data/README-JA.md +30 -57
- data/README.md +31 -57
- data/Repository.mk +1 -1
- data/lib/sisimai.rb +17 -72
- data/lib/sisimai/address.rb +13 -17
- data/lib/sisimai/arf.rb +45 -47
- data/lib/sisimai/data.rb +15 -38
- data/lib/sisimai/datetime.rb +3 -3
- data/lib/sisimai/lhost.rb +25 -47
- data/lib/sisimai/lhost/activehunter.rb +37 -76
- data/lib/sisimai/lhost/amavis.rb +119 -86
- data/lib/sisimai/lhost/amazonses.rb +196 -256
- data/lib/sisimai/lhost/amazonworkmail.rb +56 -95
- data/lib/sisimai/lhost/aol.rb +64 -104
- data/lib/sisimai/lhost/apachejames.rb +66 -104
- data/lib/sisimai/lhost/barracuda.rb +94 -0
- data/lib/sisimai/lhost/bigfoot.rb +66 -102
- data/lib/sisimai/lhost/biglobe.rb +45 -78
- data/lib/sisimai/lhost/courier.rb +66 -101
- data/lib/sisimai/lhost/domino.rb +54 -92
- data/lib/sisimai/lhost/einsundeins.rb +61 -70
- data/lib/sisimai/lhost/exchange2003.rb +89 -120
- data/lib/sisimai/lhost/exchange2007.rb +79 -90
- data/lib/sisimai/lhost/exim.rb +130 -168
- data/lib/sisimai/lhost/ezweb.rb +58 -90
- data/lib/sisimai/lhost/facebook.rb +54 -91
- data/lib/sisimai/lhost/fml.rb +30 -69
- data/lib/sisimai/lhost/{google.rb → gmail.rb} +48 -87
- data/lib/sisimai/lhost/gmx.rb +64 -102
- data/lib/sisimai/lhost/googlegroups.rb +77 -0
- data/lib/sisimai/lhost/gsuite.rb +79 -111
- data/lib/sisimai/lhost/imailserver.rb +46 -91
- data/lib/sisimai/lhost/interscanmss.rb +40 -85
- data/lib/sisimai/lhost/kddi.rb +35 -68
- data/lib/sisimai/lhost/mailfoundry.rb +41 -78
- data/lib/sisimai/lhost/mailmarshalsmtp.rb +71 -109
- data/lib/sisimai/lhost/mailru.rb +56 -92
- data/lib/sisimai/lhost/mcafee.rb +59 -97
- data/lib/sisimai/lhost/messagelabs.rb +59 -97
- data/lib/sisimai/lhost/messagingserver.rb +96 -131
- data/lib/sisimai/lhost/mfilter.rb +57 -89
- data/lib/sisimai/lhost/mxlogic.rb +47 -85
- data/lib/sisimai/lhost/notes.rb +59 -100
- data/lib/sisimai/lhost/office365.rb +86 -113
- data/lib/sisimai/lhost/opensmtpd.rb +35 -71
- data/lib/sisimai/lhost/outlook.rb +56 -96
- data/lib/sisimai/lhost/postfix.rb +118 -137
- data/lib/sisimai/lhost/powermta.rb +120 -0
- data/lib/sisimai/lhost/qmail.rb +46 -79
- data/lib/sisimai/lhost/receivingses.rb +56 -97
- data/lib/sisimai/lhost/sendgrid.rb +75 -223
- data/lib/sisimai/lhost/sendmail.rb +108 -148
- data/lib/sisimai/lhost/surfcontrol.rb +62 -104
- data/lib/sisimai/lhost/v5sendmail.rb +64 -107
- data/lib/sisimai/lhost/verizon.rb +80 -141
- data/lib/sisimai/lhost/x1.rb +37 -73
- data/lib/sisimai/lhost/x2.rb +36 -75
- data/lib/sisimai/lhost/x3.rb +54 -86
- data/lib/sisimai/lhost/x4.rb +49 -85
- data/lib/sisimai/lhost/x5.rb +54 -93
- data/lib/sisimai/lhost/x6.rb +74 -0
- data/lib/sisimai/lhost/yahoo.rb +55 -92
- data/lib/sisimai/lhost/yandex.rb +72 -110
- data/lib/sisimai/lhost/zoho.rb +62 -106
- data/lib/sisimai/mail.rb +22 -31
- data/lib/sisimai/mail/maildir.rb +31 -36
- data/lib/sisimai/mail/mbox.rb +8 -12
- data/lib/sisimai/mail/memory.rb +18 -20
- data/lib/sisimai/mail/stdin.rb +8 -12
- data/lib/sisimai/mda.rb +8 -14
- data/lib/sisimai/message.rb +142 -415
- data/lib/sisimai/mime.rb +28 -33
- data/lib/sisimai/order.rb +150 -209
- data/lib/sisimai/reason.rb +28 -19
- data/lib/sisimai/reason/blocked.rb +24 -23
- data/lib/sisimai/reason/hostunknown.rb +2 -0
- data/lib/sisimai/reason/mailererror.rb +1 -1
- data/lib/sisimai/reason/notaccept.rb +1 -0
- data/lib/sisimai/reason/policyviolation.rb +1 -0
- data/lib/sisimai/reason/rejected.rb +1 -0
- data/lib/sisimai/reason/securityerror.rb +5 -6
- data/lib/sisimai/reason/spamdetected.rb +9 -12
- data/lib/sisimai/reason/userunknown.rb +31 -25
- data/lib/sisimai/rfc1894.rb +1 -1
- data/lib/sisimai/rfc3464.rb +38 -56
- data/lib/sisimai/rfc3834.rb +11 -23
- data/lib/sisimai/rfc5322.rb +20 -32
- data/lib/sisimai/rhost.rb +5 -8
- data/lib/sisimai/rhost/cox.rb +112 -0
- data/lib/sisimai/rhost/exchangeonline.rb +25 -22
- data/lib/sisimai/rhost/franceptt.rb +120 -24
- data/lib/sisimai/rhost/googleapps.rb +4 -1
- data/lib/sisimai/rhost/iua.rb +1 -1
- data/lib/sisimai/rhost/spectrum.rb +73 -0
- data/lib/sisimai/smtp.rb +0 -13
- data/lib/sisimai/smtp/error.rb +7 -7
- data/lib/sisimai/smtp/status.rb +1 -1
- data/lib/sisimai/string.rb +3 -11
- data/lib/sisimai/version.rb +1 -1
- data/set-of-emails/README.md +5 -4
- data/set-of-emails/maildir/bsd/arf-24.eml +50 -0
- data/set-of-emails/maildir/bsd/arf-25.eml +61 -0
- data/set-of-emails/maildir/bsd/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-activehunter-02.eml → lhost-activehunter-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amavis-02.eml → lhost-amavis-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-amavis-03.eml +90 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-02.eml → lhost-amazonses-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-03.eml → lhost-amazonses-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-05.eml → lhost-amazonses-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-06.eml → lhost-amazonses-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-07.eml → lhost-amazonses-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-08.eml → lhost-amazonses-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-09.eml → lhost-amazonses-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-10.eml → lhost-amazonses-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-11.eml → lhost-amazonses-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-12.eml → lhost-amazonses-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-13.eml → lhost-amazonses-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-14.eml → lhost-amazonses-14.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-15.eml → lhost-amazonses-15.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-16.eml → lhost-amazonses-16.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-17.eml → lhost-amazonses-17.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-18.eml → lhost-amazonses-18.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-19.eml → lhost-amazonses-19.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-20.eml → lhost-amazonses-20.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonses-21.eml → lhost-amazonses-21.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonworkmail-02.eml → lhost-amazonworkmail-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonworkmail-03.eml → lhost-amazonworkmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonworkmail-04.eml → lhost-amazonworkmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonworkmail-05.eml → lhost-amazonworkmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonworkmail-07.eml → lhost-amazonworkmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-amazonworkmail-08.eml → lhost-amazonworkmail-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-aol-02.eml → lhost-aol-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-aol-03.eml → lhost-aol-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-aol-04.eml → lhost-aol-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-aol-05.eml → lhost-aol-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-aol-06.eml → lhost-aol-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-barracuda-01.eml +67 -0
- data/set-of-emails/maildir/bsd/lhost-barracuda-02.eml +71 -0
- data/set-of-emails/maildir/bsd/{email-bigfoot-02.eml → lhost-bigfoot-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-courier-02.eml → lhost-courier-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-courier-03.eml → lhost-courier-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-courier-04.eml → lhost-courier-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-domino-02.eml → lhost-domino-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-domino-03.eml → lhost-domino-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-einsundeins-02.eml → lhost-einsundeins-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-einsundeins-03.eml +66 -0
- data/set-of-emails/maildir/bsd/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2003-02.eml → lhost-exchange2003-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2003-03.eml → lhost-exchange2003-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2003-04.eml → lhost-exchange2003-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2003-05.eml → lhost-exchange2003-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2003-07.eml → lhost-exchange2003-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2007-02.eml → lhost-exchange2007-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2007-03.eml → lhost-exchange2007-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exchange2007-04.eml → lhost-exchange2007-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-exchange2007-05.eml +1469 -0
- data/set-of-emails/maildir/bsd/lhost-exchange2007-06.eml +764 -0
- data/set-of-emails/maildir/bsd/lhost-exchange2007-07.eml +128 -0
- data/set-of-emails/maildir/bsd/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-02.eml → lhost-exim-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-03.eml → lhost-exim-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-04.eml → lhost-exim-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-05.eml → lhost-exim-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-06.eml → lhost-exim-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-07.eml → lhost-exim-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-08.eml → lhost-exim-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-29.eml → lhost-exim-29.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-30.eml → lhost-exim-30.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-31.eml → lhost-exim-31.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-32.eml → lhost-exim-32.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-33.eml → lhost-exim-33.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-34.eml → lhost-exim-34.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-35.eml → lhost-exim-35.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-36.eml → lhost-exim-36.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-37.eml → lhost-exim-37.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-38.eml → lhost-exim-38.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-39.eml → lhost-exim-39.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-40.eml → lhost-exim-40.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-41.eml → lhost-exim-41.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-42.eml → lhost-exim-42.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-43.eml → lhost-exim-43.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-44.eml → lhost-exim-44.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-45.eml → lhost-exim-45.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-46.eml → lhost-exim-46.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-47.eml → lhost-exim-47.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-48.eml → lhost-exim-48.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-49.eml → lhost-exim-49.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-50.eml → lhost-exim-50.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-51.eml → lhost-exim-51.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-52.eml → lhost-exim-52.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-53.eml → lhost-exim-53.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-54.eml → lhost-exim-54.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-55.eml → lhost-exim-55.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-56.eml → lhost-exim-56.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-57.eml → lhost-exim-57.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-58.eml → lhost-exim-58.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-59.eml → lhost-exim-59.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-exim-60.eml → lhost-exim-60.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-exim-61.eml +40 -0
- data/set-of-emails/maildir/bsd/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-ezweb-02.eml → lhost-ezweb-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-ezweb-03.eml → lhost-ezweb-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-ezweb-04.eml → lhost-ezweb-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-ezweb-05.eml → lhost-ezweb-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-ezweb-07.eml → lhost-ezweb-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-ezweb-08.eml → lhost-ezweb-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-facebook-03.eml → lhost-facebook-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-facebook-04.eml → lhost-facebook-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-fml-02.eml → lhost-fml-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-fml-03.eml → lhost-fml-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-03.eml → lhost-gmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-04.eml → lhost-gmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-05.eml → lhost-gmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-06.eml → lhost-gmail-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-07.eml → lhost-gmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-08.eml → lhost-gmail-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-09.eml → lhost-gmail-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-10.eml → lhost-gmail-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-11.eml → lhost-gmail-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-15.eml → lhost-gmail-15.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-16.eml → lhost-gmail-16.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-17.eml → lhost-gmail-17.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-18.eml → lhost-gmail-18.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-google-19.eml → lhost-gmail-19.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gmx-02.eml → lhost-gmx-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gmx-03.eml → lhost-gmx-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gmx-04.eml → lhost-gmx-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-01.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-02.eml +114 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-03.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-04.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-05.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-06.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-07.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-08.eml +115 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-09.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-10.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-11.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-12.eml +116 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-13.eml +115 -0
- data/set-of-emails/maildir/bsd/lhost-googlegroups-14.eml +127 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-02.eml → lhost-gsuite-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-03.eml → lhost-gsuite-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-04.eml → lhost-gsuite-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-05.eml → lhost-gsuite-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-06.eml → lhost-gsuite-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-07.eml → lhost-gsuite-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-08.eml → lhost-gsuite-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-09.eml → lhost-gsuite-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-10.eml → lhost-gsuite-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-11.eml → lhost-gsuite-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-12.eml → lhost-gsuite-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-gsuite-13.eml → lhost-gsuite-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-gsuite-14.eml +273 -0
- data/set-of-emails/maildir/bsd/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-imailserver-02.eml → lhost-imailserver-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-imailserver-03.eml → lhost-imailserver-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-imailserver-04.eml → lhost-imailserver-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-imailserver-06.eml → lhost-imailserver-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-interscanmss-02.eml +70 -0
- data/set-of-emails/maildir/bsd/lhost-interscanmss-03.eml +73 -0
- data/set-of-emails/maildir/bsd/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-kddi-02.eml → lhost-kddi-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-kddi-03.eml → lhost-kddi-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailfoundry-02.eml → lhost-mailfoundry-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailmarshalsmtp-02.eml → lhost-mailmarshalsmtp-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-02.eml → lhost-mailru-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-03.eml → lhost-mailru-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-04.eml → lhost-mailru-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-05.eml → lhost-mailru-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-06.eml → lhost-mailru-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-07.eml → lhost-mailru-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-08.eml → lhost-mailru-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-09.eml → lhost-mailru-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mailru-10.eml → lhost-mailru-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mcafee-02.eml → lhost-mcafee-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mcafee-03.eml → lhost-mcafee-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mcafee-04.eml → lhost-mcafee-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mcafee-05.eml → lhost-mcafee-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagelabs-02.eml → lhost-messagelabs-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagelabs-03.eml → lhost-messagelabs-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-02.eml → lhost-messagingserver-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-03.eml → lhost-messagingserver-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-04.eml → lhost-messagingserver-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-05.eml → lhost-messagingserver-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-06.eml → lhost-messagingserver-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-07.eml → lhost-messagingserver-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-08.eml → lhost-messagingserver-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-09.eml → lhost-messagingserver-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-10.eml → lhost-messagingserver-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-11.eml → lhost-messagingserver-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-messagingserver-12.eml → lhost-messagingserver-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mfilter-02.eml → lhost-mfilter-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mfilter-03.eml → lhost-mfilter-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mfilter-04.eml → lhost-mfilter-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mxlogic-02.eml → lhost-mxlogic-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-mxlogic-03.eml → lhost-mxlogic-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-notes-02.eml → lhost-notes-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-notes-03.eml → lhost-notes-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-02.eml → lhost-office365-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-03.eml → lhost-office365-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-04.eml → lhost-office365-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-05.eml → lhost-office365-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-06.eml → lhost-office365-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-07.eml → lhost-office365-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-08.eml → lhost-office365-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-09.eml → lhost-office365-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-10.eml → lhost-office365-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-11.eml → lhost-office365-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-office365-12.eml → lhost-office365-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-office365-13.eml +259 -0
- data/set-of-emails/maildir/bsd/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-opensmtpd-02.eml → lhost-opensmtpd-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-opensmtpd-03.eml → lhost-opensmtpd-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-opensmtpd-04.eml → lhost-opensmtpd-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-opensmtpd-05.eml → lhost-opensmtpd-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-opensmtpd-06.eml → lhost-opensmtpd-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-outlook-02.eml → lhost-outlook-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-outlook-03.eml → lhost-outlook-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-outlook-04.eml → lhost-outlook-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-outlook-06.eml → lhost-outlook-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-outlook-07.eml → lhost-outlook-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-outlook-08.eml → lhost-outlook-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-outlook-09.eml → lhost-outlook-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-02.eml → lhost-postfix-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-03.eml → lhost-postfix-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-04.eml → lhost-postfix-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-05.eml → lhost-postfix-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-06.eml → lhost-postfix-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-07.eml → lhost-postfix-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-08.eml → lhost-postfix-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-09.eml → lhost-postfix-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-10.eml → lhost-postfix-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-11.eml → lhost-postfix-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-13.eml → lhost-postfix-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-14.eml → lhost-postfix-14.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-15.eml → lhost-postfix-15.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-16.eml → lhost-postfix-16.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-17.eml → lhost-postfix-17.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-28.eml → lhost-postfix-28.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-29.eml → lhost-postfix-29.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-30.eml → lhost-postfix-30.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-31.eml → lhost-postfix-31.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-32.eml → lhost-postfix-32.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-33.eml → lhost-postfix-33.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-34.eml → lhost-postfix-34.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-35.eml → lhost-postfix-35.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-36.eml → lhost-postfix-36.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-37.eml → lhost-postfix-37.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-38.eml → lhost-postfix-38.eml} +1 -1
- data/set-of-emails/maildir/bsd/{email-postfix-39.eml → lhost-postfix-39.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-40.eml → lhost-postfix-40.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-41.eml → lhost-postfix-41.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-42.eml → lhost-postfix-42.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-43.eml → lhost-postfix-43.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-44.eml → lhost-postfix-44.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-45.eml → lhost-postfix-45.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-46.eml → lhost-postfix-46.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-47.eml → lhost-postfix-47.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-48.eml → lhost-postfix-48.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-49.eml → lhost-postfix-49.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-50.eml → lhost-postfix-50.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-51.eml → lhost-postfix-51.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-52.eml → lhost-postfix-52.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-53.eml → lhost-postfix-53.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-54.eml → lhost-postfix-54.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-55.eml → lhost-postfix-55.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-56.eml → lhost-postfix-56.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-57.eml → lhost-postfix-57.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-58.eml → lhost-postfix-58.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-59.eml → lhost-postfix-59.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-60.eml → lhost-postfix-60.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-61.eml → lhost-postfix-61.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-62.eml → lhost-postfix-62.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-postfix-63.eml → lhost-postfix-63.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-64.eml +96 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-65.eml +69 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-66.eml +80 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-67.eml +80 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-68.eml +82 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-69.eml +80 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-70.eml +87 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-71.eml +81 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-72.eml +81 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-73.eml +79 -0
- data/set-of-emails/maildir/bsd/lhost-postfix-74.eml +83 -0
- data/set-of-emails/maildir/bsd/{rfc3464-05.eml → lhost-powermta-01.eml} +19 -18
- data/set-of-emails/maildir/bsd/lhost-powermta-02.eml +58 -0
- data/set-of-emails/maildir/bsd/lhost-powermta-03.eml +71 -0
- data/set-of-emails/maildir/bsd/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-02.eml → lhost-qmail-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-03.eml → lhost-qmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-04.eml → lhost-qmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-05.eml → lhost-qmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-06.eml → lhost-qmail-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-07.eml → lhost-qmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-08.eml → lhost-qmail-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-09.eml → lhost-qmail-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-qmail-10.eml → lhost-qmail-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-receivingses-02.eml → lhost-receivingses-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-receivingses-03.eml → lhost-receivingses-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-receivingses-04.eml → lhost-receivingses-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-receivingses-05.eml → lhost-receivingses-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-receivingses-06.eml → lhost-receivingses-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-receivingses-07.eml → lhost-receivingses-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendgrid-02.eml → lhost-sendgrid-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendgrid-03.eml → lhost-sendgrid-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-02.eml → lhost-sendmail-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-03.eml → lhost-sendmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-04.eml → lhost-sendmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-05.eml → lhost-sendmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-06.eml → lhost-sendmail-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-07.eml → lhost-sendmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-08.eml → lhost-sendmail-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-09.eml → lhost-sendmail-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-10.eml → lhost-sendmail-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-11.eml → lhost-sendmail-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-12.eml → lhost-sendmail-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-13.eml → lhost-sendmail-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-14.eml → lhost-sendmail-14.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-15.eml → lhost-sendmail-15.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-16.eml → lhost-sendmail-16.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-17.eml → lhost-sendmail-17.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-18.eml → lhost-sendmail-18.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-19.eml → lhost-sendmail-19.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-20.eml → lhost-sendmail-20.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-21.eml → lhost-sendmail-21.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-22.eml → lhost-sendmail-22.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-24.eml → lhost-sendmail-24.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-25.eml → lhost-sendmail-25.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-26.eml → lhost-sendmail-26.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-27.eml → lhost-sendmail-27.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-28.eml → lhost-sendmail-28.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-29.eml → lhost-sendmail-29.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-30.eml → lhost-sendmail-30.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-31.eml → lhost-sendmail-31.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-32.eml → lhost-sendmail-32.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-33.eml → lhost-sendmail-33.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-34.eml → lhost-sendmail-34.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-35.eml → lhost-sendmail-35.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-36.eml → lhost-sendmail-36.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-37.eml → lhost-sendmail-37.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-38.eml → lhost-sendmail-38.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-39.eml → lhost-sendmail-39.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-40.eml → lhost-sendmail-40.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-41.eml → lhost-sendmail-41.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-42.eml → lhost-sendmail-42.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-43.eml → lhost-sendmail-43.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-44.eml → lhost-sendmail-44.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-45.eml → lhost-sendmail-45.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-46.eml → lhost-sendmail-46.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-47.eml → lhost-sendmail-47.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-48.eml → lhost-sendmail-48.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-49.eml → lhost-sendmail-49.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-50.eml → lhost-sendmail-50.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-51.eml → lhost-sendmail-51.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-52.eml → lhost-sendmail-52.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-53.eml → lhost-sendmail-53.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-54.eml → lhost-sendmail-54.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-55.eml → lhost-sendmail-55.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-sendmail-56.eml → lhost-sendmail-56.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-sendmail-57.eml +59 -0
- data/set-of-emails/maildir/bsd/lhost-sendmail-58.eml +70 -0
- data/set-of-emails/maildir/bsd/lhost-sendmail-59.eml +68 -0
- data/set-of-emails/maildir/bsd/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-surfcontrol-02.eml → lhost-surfcontrol-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-surfcontrol-03.eml → lhost-surfcontrol-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-v5sendmail-02.eml → lhost-v5sendmail-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-v5sendmail-03.eml → lhost-v5sendmail-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-v5sendmail-04.eml → lhost-v5sendmail-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-v5sendmail-05.eml → lhost-v5sendmail-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-v5sendmail-06.eml → lhost-v5sendmail-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-v5sendmail-07.eml → lhost-v5sendmail-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-verizon-02.eml → lhost-verizon-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x1-02.eml → lhost-x1-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x2-02.eml → lhost-x2-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x2-03.eml → lhost-x2-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x2-04.eml → lhost-x2-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x2-05.eml → lhost-x2-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x3-02.eml → lhost-x3-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x3-03.eml → lhost-x3-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x3-05.eml → lhost-x3-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-x3-06.eml +53 -0
- data/set-of-emails/maildir/bsd/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x4-08.eml → lhost-x4-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/lhost-x6-01.eml +71 -0
- data/set-of-emails/maildir/bsd/lhost-x6-02.eml +68 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-02.eml → lhost-yahoo-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-03.eml → lhost-yahoo-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-04.eml → lhost-yahoo-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-05.eml → lhost-yahoo-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-06.eml → lhost-yahoo-06.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-07.eml → lhost-yahoo-07.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-08.eml → lhost-yahoo-08.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-09.eml → lhost-yahoo-09.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-10.eml → lhost-yahoo-10.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-11.eml → lhost-yahoo-11.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-12.eml → lhost-yahoo-12.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-13.eml → lhost-yahoo-13.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yahoo-14.eml → lhost-yahoo-14.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yandex-02.eml → lhost-yandex-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-yandex-03.eml → lhost-yandex-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-zoho-02.eml → lhost-zoho-02.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-zoho-03.eml → lhost-zoho-03.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-zoho-04.eml → lhost-zoho-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/{email-zoho-05.eml → lhost-zoho-05.eml} +0 -0
- data/set-of-emails/maildir/bsd/rfc3834-03.eml +26 -0
- data/set-of-emails/maildir/bsd/{rfc3464-41.eml → rfc3834-04.eml} +0 -0
- data/set-of-emails/maildir/bsd/rhost-cox-01.eml +192 -0
- data/set-of-emails/maildir/bsd/rhost-franceptt-04.eml +66 -0
- data/set-of-emails/maildir/bsd/rhost-franceptt-05.eml +96 -0
- data/set-of-emails/maildir/bsd/rhost-franceptt-06.eml +100 -0
- data/set-of-emails/maildir/bsd/rhost-franceptt-07.eml +97 -0
- data/set-of-emails/maildir/bsd/rhost-franceptt-08.eml +78 -0
- data/set-of-emails/maildir/bsd/rhost-franceptt-10.eml +79 -0
- data/set-of-emails/maildir/bsd/rhost-franceptt-11.eml +96 -0
- data/set-of-emails/maildir/bsd/rhost-spectrum-01.eml +111 -0
- data/set-of-emails/maildir/dos/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
- data/set-of-emails/maildir/dos/lhost-barracuda-01.eml +67 -0
- data/set-of-emails/maildir/dos/{email-bigfoot-01.eml → lhost-bigfoot-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-einsundeins-01.eml → lhost-einsundeins-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-exchange-01.eml → lhost-exchange-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-facebook-01.eml → lhost-facebook-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
- data/set-of-emails/maildir/dos/lhost-googlegroups-01.eml +116 -0
- data/set-of-emails/maildir/dos/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-mailmarshalsmtp-01.eml → lhost-mailmarshalsmtp-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
- data/set-of-emails/maildir/dos/lhost-powermta-01.eml +64 -0
- data/set-of-emails/maildir/dos/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
- data/set-of-emails/maildir/dos/lhost-x6-01.eml +71 -0
- data/set-of-emails/maildir/dos/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
- data/set-of-emails/maildir/dos/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
- data/set-of-emails/maildir/dos/rhost-iua-01.eml +70 -0
- data/set-of-emails/maildir/mac/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
- data/set-of-emails/maildir/mac/lhost-barracuda-01.eml +1 -4
- data/set-of-emails/maildir/mac/{email-bigfoot-01.eml → lhost-bigfoot-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-einsundeins-01.eml → lhost-einsundeins-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-exchange-01.eml → lhost-exchange-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-facebook-01.eml → lhost-facebook-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
- data/set-of-emails/maildir/mac/lhost-googlegroups-01.eml +1 -1
- data/set-of-emails/maildir/mac/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-mailmarshalsmtp-01.eml → lhost-mailmarshalsmtp-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
- data/set-of-emails/maildir/mac/lhost-powermta-01.eml +1 -4
- data/set-of-emails/maildir/mac/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
- data/set-of-emails/maildir/mac/lhost-x6-01.eml +1 -3
- data/set-of-emails/maildir/mac/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
- data/set-of-emails/maildir/mac/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
- data/set-of-emails/maildir/mac/rhost-iua-01.eml +1 -4
- metadata +587 -521
- data/lib/sisimai/bite.rb +0 -42
- data/lib/sisimai/bite/email.rb +0 -18
- data/lib/sisimai/bite/json.rb +0 -16
- data/lib/sisimai/lhost/userdefined.rb +0 -115
- data/lib/sisimai/message/email.rb +0 -26
- data/lib/sisimai/message/json.rb +0 -24
- data/lib/sisimai/order/email.rb +0 -20
- data/lib/sisimai/order/json.rb +0 -16
data/lib/sisimai/mail.rb
CHANGED
@@ -1,31 +1,29 @@
|
|
1
1
|
module Sisimai
|
2
|
-
# Sisimai::Mail is a handler of UNIX mbox or Maildir for reading each mail.
|
3
|
-
# wrapper class of Sisimai::Mail::Mbox
|
2
|
+
# Sisimai::Mail is a handler of UNIX mbox or Maildir for reading each mail.
|
3
|
+
# It is a wrapper class of Sisimai::Mail::Mbox, Sisimai::Mail::Maildir, and
|
4
|
+
# Sisimai::Mail::Memory classes.
|
4
5
|
class Mail
|
5
6
|
# Imported from p5-Sisimail/lib/Sisimai/Mail.pm
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
]
|
10
|
-
|
11
|
-
|
12
|
-
]
|
13
|
-
@@roaccessors.each { |e| attr_reader e }
|
14
|
-
@@rwaccessors.each { |e| attr_accessor e }
|
7
|
+
|
8
|
+
# :path [String] path to mbox or Maildir/
|
9
|
+
# :kind [String] Data type: mailbox, maildir, or stdin
|
10
|
+
# :data [Sisimai::Mail::[Mbox,Maildir,Memory,STDIN]] Object
|
11
|
+
attr_reader :path, :kind
|
12
|
+
attr_accessor :data
|
15
13
|
|
16
14
|
# Constructor of Sisimai::Mail
|
17
15
|
# @param [String] argv1 Path to mbox or Maildir/
|
18
16
|
# @return [Sisimai::Mail, Nil] Object or nil if the argument was wrong
|
19
17
|
def initialize(argv1)
|
20
18
|
classname = nil
|
21
|
-
parameter = { 'path' => argv1, '
|
19
|
+
parameter = { 'path' => argv1, 'kind' => nil, 'data' => nil }
|
22
20
|
|
23
21
|
if argv1.is_a?(::String)
|
24
22
|
# Path to mail or '<STDIN>' ?
|
25
23
|
if argv1 == '<STDIN>'
|
26
24
|
# Sisimai::Mail.new('<STDIN>')
|
27
25
|
classname = self.class.to_s << '::STDIN'
|
28
|
-
parameter['
|
26
|
+
parameter['kind'] = 'stdin'
|
29
27
|
parameter['path'] = $stdin
|
30
28
|
else
|
31
29
|
# The argumenet is a mailbox or a Maildir/.
|
@@ -34,17 +32,17 @@ module Sisimai
|
|
34
32
|
if mediatype == 'file'
|
35
33
|
# The argument is a file, it is an mbox or email file in Maildir/
|
36
34
|
classname = self.class.to_s << '::Mbox'
|
37
|
-
parameter['
|
35
|
+
parameter['kind'] = 'mailbox'
|
38
36
|
|
39
37
|
elsif mediatype == 'directory'
|
40
38
|
# The agument is not a file, it is a Maildir/
|
41
39
|
classname = self.class.to_s << '::Maildir'
|
42
|
-
parameter['
|
40
|
+
parameter['kind'] = 'maildir'
|
43
41
|
|
44
42
|
elsif mediatype == 'memory'
|
45
43
|
# The argument is an email string
|
46
44
|
classname = self.class.to_s << '::Memory'
|
47
|
-
parameter['
|
45
|
+
parameter['kind'] = 'memory'
|
48
46
|
parameter['path'] = 'MEMORY'
|
49
47
|
end
|
50
48
|
end
|
@@ -52,33 +50,26 @@ module Sisimai
|
|
52
50
|
# Read from STDIN
|
53
51
|
# The argument neither a mailbox nor a Maildir/.
|
54
52
|
classname = self.class.to_s << '::STDIN'
|
55
|
-
parameter['
|
53
|
+
parameter['kind'] = 'stdin'
|
56
54
|
end
|
57
55
|
return nil unless classname
|
58
56
|
|
59
57
|
classpath = classname.gsub('::', '/').downcase
|
60
58
|
require classpath
|
61
|
-
parameter['
|
59
|
+
parameter['data'] = Module.const_get(classname).new(argv1)
|
62
60
|
|
63
61
|
@path = parameter['path']
|
64
|
-
@
|
65
|
-
@
|
62
|
+
@kind = parameter['kind']
|
63
|
+
@data = parameter['data']
|
66
64
|
end
|
67
65
|
|
68
|
-
#
|
66
|
+
# Alias method of Sisimai::Mail.data.read()
|
69
67
|
# @return [String] Contents of mbox/Maildir
|
70
68
|
def read
|
71
|
-
return nil unless
|
72
|
-
return
|
69
|
+
return nil unless data
|
70
|
+
return data.read
|
73
71
|
end
|
74
72
|
|
75
|
-
# Close the handle
|
76
|
-
# @return [True,False] true: Successfully closed the handle
|
77
|
-
# false: Mail handle is not defined
|
78
|
-
def close
|
79
|
-
return false unless mail.handle
|
80
|
-
mail.handle = nil
|
81
|
-
return true
|
82
|
-
end
|
83
73
|
end
|
84
74
|
end
|
75
|
+
|
data/lib/sisimai/mail/maildir.rb
CHANGED
@@ -1,27 +1,22 @@
|
|
1
1
|
module Sisimai
|
2
2
|
class Mail
|
3
|
-
# Sisimai::Mail::Maildir is a reader for getting contents of each email in
|
4
|
-
# Maildir/ directory.
|
3
|
+
# Sisimai::Mail::Maildir is a reader for getting contents of each email in
|
4
|
+
# the Maildir/ directory.
|
5
5
|
class Maildir
|
6
6
|
# Imported from p5-Sisimail/lib/Sisimai/Mail/Maildir.pm
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
]
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
:count, # [Integer] The number of file has read
|
16
|
-
:handle, # [IO::Dir] Directory handle
|
17
|
-
]
|
18
|
-
@@roaccessors.each { |e| attr_reader e }
|
19
|
-
@@rwaccessors.each { |e| attr_accessor e }
|
7
|
+
# :dir [String] Path to Maildir/
|
8
|
+
# :size [Integer] The number of files/directories in the Maildir/
|
9
|
+
# :path [String] Path to each file
|
10
|
+
# :file, [String] Each file name of a mail in the Maildir/
|
11
|
+
# :offset [Integer] The number of email files in the Maildir/
|
12
|
+
# :handle [IO::Dir] Directory handle
|
13
|
+
attr_reader :dir
|
14
|
+
attr_accessor :size, :path, :file, :offset, :handle
|
20
15
|
|
21
16
|
# Constructor of Sisimai::Mail::Maildir
|
22
|
-
# @param [String] argvs
|
23
|
-
# @return [Sisimai::Mail::Maildir
|
24
|
-
#
|
17
|
+
# @param [String] argvs Path to Maildir/
|
18
|
+
# @return [Sisimai::Mail::Maildir] Object
|
19
|
+
# [Nil] is not a directory or does not exist
|
25
20
|
def initialize(argv1)
|
26
21
|
raise Errno::ENOENT unless File.exist?(argv1)
|
27
22
|
raise Errno::ENOTDIR unless File.ftype(argv1) == 'directory'
|
@@ -30,45 +25,45 @@ module Sisimai
|
|
30
25
|
@size = Dir.entries(argv1).size
|
31
26
|
@dir = argv1
|
32
27
|
@file = nil
|
33
|
-
@
|
34
|
-
@count = 0
|
28
|
+
@offset = 0
|
35
29
|
@handle = Dir.open(argv1)
|
36
30
|
end
|
37
31
|
|
38
32
|
# Maildir reader, works as a iterator.
|
39
33
|
# @return [String] Contents of file in Maildir/
|
40
34
|
def read
|
41
|
-
return nil unless self.
|
42
|
-
|
35
|
+
return nil unless self.offset < self.size
|
43
36
|
seekhandle = self.handle
|
44
37
|
readbuffer = ''
|
45
38
|
|
46
39
|
begin
|
47
40
|
while r = seekhandle.read do
|
48
41
|
# Read each file in the directory
|
49
|
-
|
42
|
+
if r == '.' || r == '..'
|
43
|
+
# Is a directory
|
44
|
+
self.offset += 1
|
45
|
+
next
|
46
|
+
end
|
50
47
|
|
51
48
|
emailindir = (self.dir + '/' + r).squeeze('/')
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
49
|
+
if File.ftype(emailindir) != 'file' ||
|
50
|
+
File.size(emailindir) == 0 ||
|
51
|
+
File.readable?(emailindir) == false
|
52
|
+
# The file is not a file, is empty, is not readable
|
53
|
+
self.offset += 1
|
54
|
+
next
|
55
|
+
end
|
58
56
|
|
59
57
|
File.open(emailindir, 'r:UTF-8') do |f|
|
60
58
|
readbuffer = f.read
|
61
59
|
end
|
62
60
|
|
63
|
-
self.
|
64
|
-
self.path
|
65
|
-
self.file
|
66
|
-
|
61
|
+
self.offset += 1
|
62
|
+
self.path = emailindir
|
63
|
+
self.file = r
|
67
64
|
break
|
68
65
|
end
|
69
|
-
|
70
|
-
self.count += 1
|
71
|
-
seekhandle.close unless self.count < self.size
|
66
|
+
seekhandle.close unless self.offset < self.size
|
72
67
|
end
|
73
68
|
|
74
69
|
return readbuffer
|
data/lib/sisimai/mail/mbox.rb
CHANGED
@@ -3,18 +3,14 @@ module Sisimai
|
|
3
3
|
# Sisimai::Mail::Mbox is a mailbox file (UNIX mbox) reader.
|
4
4
|
class Mbox
|
5
5
|
# Imported from p5-Sisimail/lib/Sisimai/Mail/Mbox.pm
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
]
|
12
|
-
|
13
|
-
|
14
|
-
:handle, # [IO::File] File handle
|
15
|
-
]
|
16
|
-
@@roaccessors.each { |e| attr_reader e }
|
17
|
-
@@rwaccessors.each { |e| attr_accessor e }
|
6
|
+
# :dir [String] Directory name of the mbox
|
7
|
+
# :file [String] File name of the mbox
|
8
|
+
# :path [String] Path to mbox
|
9
|
+
# :size [Integer] File size of the mbox
|
10
|
+
# :offset [Integer] Offset position for seeking
|
11
|
+
# :handle [IO::File] File handle
|
12
|
+
attr_reader :dir, :file, :path, :size
|
13
|
+
attr_accessor :offset, :handle
|
18
14
|
|
19
15
|
# Constructor of Sisimai::Mail::Mbox
|
20
16
|
# @param [String] argv1 Path to mbox
|
data/lib/sisimai/mail/memory.rb
CHANGED
@@ -3,43 +3,41 @@ module Sisimai
|
|
3
3
|
# Sisimai::Mail::Memory is a class for reading an email string
|
4
4
|
class Memory
|
5
5
|
# Imported from p5-Sisimail/lib/Sisimai/Mail/Memory.pm
|
6
|
-
|
7
|
-
|
8
|
-
]
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
]
|
13
|
-
@@roaccessors.each { |e| attr_reader e }
|
14
|
-
@@rwaccessors.each { |e| attr_accessor e }
|
6
|
+
# :path [String] Fixed string "<MEMORY>"
|
7
|
+
# :size [Integer] data size of the email text
|
8
|
+
# :payload [Array] Entire bounce mail message
|
9
|
+
# :offset [Integer] Index of ":payload"
|
10
|
+
attr_reader :path, :size
|
11
|
+
attr_accessor :payload, :offset
|
15
12
|
|
16
13
|
# Constructor of Sisimai::Mail::Memory
|
17
|
-
# @param [String] argv1
|
18
|
-
# @return [Sisimai::Mail::Memory
|
19
|
-
#
|
14
|
+
# @param [String] argv1 Entire email string
|
15
|
+
# @return [Sisimai::Mail::Memory] Object
|
16
|
+
# [Nil] is not specified or does not exist
|
20
17
|
def initialize(argv1)
|
21
18
|
raise 'is not a String' unless argv1.is_a? ::String
|
22
19
|
raise 'is empty' if argv1.empty?
|
23
20
|
|
24
|
-
@
|
25
|
-
@
|
26
|
-
@
|
21
|
+
@path = '<MEMORY>'
|
22
|
+
@size = argv1.size
|
23
|
+
@payload = []
|
24
|
+
@offset = 0
|
27
25
|
|
28
26
|
if argv1.start_with?('From ')
|
29
27
|
# UNIX mbox
|
30
|
-
@
|
31
|
-
@
|
28
|
+
@payload = argv1.split(/^From /).map! { |e| e = 'From ' + e }
|
29
|
+
@payload.shift
|
32
30
|
else
|
33
|
-
@
|
31
|
+
@payload = [argv1]
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
37
35
|
# Memory reader, works as an iterator.
|
38
36
|
# @return [String] Contents of a bounce mail
|
39
37
|
def read
|
40
|
-
return nil if self.
|
38
|
+
return nil if self.payload.empty?
|
41
39
|
self.offset += 1
|
42
|
-
return self.
|
40
|
+
return self.payload.shift
|
43
41
|
end
|
44
42
|
end
|
45
43
|
end
|
data/lib/sisimai/mail/stdin.rb
CHANGED
@@ -4,17 +4,12 @@ module Sisimai
|
|
4
4
|
# STDIN
|
5
5
|
class STDIN
|
6
6
|
# Imported from p5-Sisimail/lib/Sisimai/Mail/STDIN.pm
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
:offset, # [Integer] Offset position for seeking
|
14
|
-
:handle, # [IO::File] File handle
|
15
|
-
]
|
16
|
-
@@roaccessors.each { |e| attr_reader e }
|
17
|
-
@@rwaccessors.each { |e| attr_accessor e }
|
7
|
+
# :path [String] Fixed string "<STDIN>"
|
8
|
+
# :size [Integer] Data size which has been read
|
9
|
+
# :offset [Integer] The number of emails which have neen read
|
10
|
+
# :handle [IO::File] File handle
|
11
|
+
attr_reader :path, :name, :size
|
12
|
+
attr_accessor :offset, :handle
|
18
13
|
|
19
14
|
# Constructor of Sisimai::Mail::STDIN
|
20
15
|
# @param [IO::STDIN] stdin Standard-In
|
@@ -23,7 +18,6 @@ module Sisimai
|
|
23
18
|
raise 'is not an IO object' unless stdin.is_a?(IO)
|
24
19
|
|
25
20
|
@path = '<STDIN>'
|
26
|
-
@name = '<STDIN>'
|
27
21
|
@size = nil
|
28
22
|
@offset = 0
|
29
23
|
@handle = stdin
|
@@ -49,6 +43,8 @@ module Sisimai
|
|
49
43
|
readhandle.close
|
50
44
|
end
|
51
45
|
|
46
|
+
self.size += readbuffer.size
|
47
|
+
self.offset += 1
|
52
48
|
return readbuffer
|
53
49
|
end
|
54
50
|
end
|
data/lib/sisimai/mda.rb
CHANGED
@@ -7,7 +7,7 @@ module Sisimai
|
|
7
7
|
# dovecot/src/deliver/deliver.c
|
8
8
|
# 11: #define DEFAULT_MAIL_REJECTION_HUMAN_REASON \
|
9
9
|
# 12: "Your message to <%t> was automatically rejected:%n%r"
|
10
|
-
'dovecot' => %r/\AYour message to
|
10
|
+
'dovecot' => %r/\AYour message to [^ ]+ was automatically rejected:\z/,
|
11
11
|
'mail.local' => %r/\Amail[.]local: /,
|
12
12
|
'procmail' => %r/\Aprocmail: /,
|
13
13
|
'maildrop' => %r/\Amaildrop: /,
|
@@ -16,7 +16,7 @@ module Sisimai
|
|
16
16
|
}.freeze
|
17
17
|
MarkingsOf = {
|
18
18
|
message: %r{\A(?>
|
19
|
-
Your[ ]message[ ]to[ ]
|
19
|
+
Your[ ]message[ ]to[ ][^ ]+[ ]was[ ]automatically[ ]rejected:\z
|
20
20
|
|(?:mail[.]local|procmail|maildrop|vdelivermail|vdeliver):[ ]
|
21
21
|
)
|
22
22
|
}x
|
@@ -75,26 +75,20 @@ module Sisimai
|
|
75
75
|
}.freeze
|
76
76
|
|
77
77
|
# Parse message body and return reason and text
|
78
|
-
# @param
|
79
|
-
# @
|
80
|
-
# @
|
81
|
-
# @
|
82
|
-
# @options mhead [Array] received Received headers
|
83
|
-
# @options mhead [String] others Other required headers
|
84
|
-
# @param [String] mbody Message body of a bounce email
|
85
|
-
# @return [Hash, Nil] Bounce data list and message/rfc822 part
|
86
|
-
# or nil if it failed to parse or the
|
87
|
-
# arguments are missing
|
78
|
+
# @param [Hash] mhead Message headers of a bounce email
|
79
|
+
# @param [String] mbody Message body of a bounce email
|
80
|
+
# @return [Hash] Bounce data list and message/rfc822 part
|
81
|
+
# @return [Nil] it failed to parse or the arguments are missing
|
88
82
|
def make(mhead, mbody)
|
89
83
|
return nil unless mhead['from'].downcase.start_with?('mail delivery subsystem','mailer-daemon', 'postmaster')
|
90
84
|
|
91
85
|
agentname0 = '' # [String] MDA name
|
92
86
|
reasonname = '' # [String] Error reason
|
93
87
|
bouncemesg = '' # [String] Error message
|
94
|
-
|
88
|
+
bodyslices = mbody.split("\n")
|
95
89
|
linebuffer = []
|
96
90
|
|
97
|
-
while e =
|
91
|
+
while e = bodyslices.shift do
|
98
92
|
# Check each line with each MDA's symbol regular expression.
|
99
93
|
if agentname0 == ''
|
100
94
|
# Try to match with each regular expression
|
data/lib/sisimai/message.rb
CHANGED
@@ -5,171 +5,98 @@ module Sisimai
|
|
5
5
|
# method is not a bounce email, the method returns nil.
|
6
6
|
class Message
|
7
7
|
# Imported from p5-Sisimail/lib/Sisimai/Message.pm
|
8
|
-
|
8
|
+
# :from [String] UNIX From line
|
9
|
+
# :header [Hash] Header part of an email
|
10
|
+
# :ds [Array] Parsed data by Sisimai::Lhost::* module
|
11
|
+
# :rfc822 [Hash] Header part of the original message
|
12
|
+
# :catch [Any] The results returned by hook method
|
13
|
+
attr_accessor :from, :header, :ds, :rfc822, :catch
|
14
|
+
|
9
15
|
require 'sisimai/mime'
|
10
16
|
require 'sisimai/order'
|
17
|
+
require 'sisimai/lhost'
|
11
18
|
require 'sisimai/string'
|
12
19
|
require 'sisimai/address'
|
13
20
|
require 'sisimai/rfc5322'
|
14
|
-
require 'sisimai/rfc3834'
|
15
|
-
require 'sisimai/smtp/error'
|
16
|
-
|
17
|
-
@@rwaccessors = [
|
18
|
-
:from, # [String] UNIX From line
|
19
|
-
:header, # [Hash] Header part of an email
|
20
|
-
:ds, # [Array] Parsed data by Sisimai::Lhost::* module
|
21
|
-
:rfc822, # [Hash] Header part of the original message
|
22
|
-
:catch, # [Any] The results returned by hook method
|
23
|
-
]
|
24
|
-
@@rwaccessors.each { |e| attr_accessor e }
|
25
|
-
|
26
21
|
DefaultSet = Sisimai::Order.another
|
27
|
-
|
28
|
-
SubjectTab = Sisimai::Order.by('subject')
|
29
|
-
RFC822Head = Sisimai::RFC5322.HEADERFIELDS
|
30
|
-
RFC3834Set = Sisimai::RFC3834.headerlist
|
31
|
-
HeaderList = %w[from to date subject content-type reply-to message-id
|
32
|
-
received content-transfer-encoding return-path x-mailer]
|
33
|
-
IsMultiple = { 'received' => true }
|
34
|
-
EndOfEmail = Sisimai::String.EOM
|
35
|
-
BorderLine = '__MIME_ENCODED_BOUNDARY__'
|
22
|
+
LhostTable = Sisimai::Lhost.path
|
36
23
|
|
37
24
|
# Constructor of Sisimai::Message
|
38
25
|
# @param [String] data Email text data
|
39
26
|
# @param [Hash] argvs Module to be loaded
|
40
27
|
# @options argvs [String] :data Entire email message
|
41
28
|
# @options argvs [Array] :load User defined MTA module list
|
42
|
-
# @options argvs [Array] :field Email header names to be captured
|
43
29
|
# @options argvs [Array] :order The order of MTA modules
|
44
30
|
# @options argvs [Code] :hook Reference to callback method
|
45
31
|
# @return [Sisimai::Message] Structured email data or nil if each
|
46
32
|
# value of the arguments are missing
|
47
33
|
def initialize(data: '', **argvs)
|
48
34
|
return nil if data.empty?
|
35
|
+
param = {}
|
36
|
+
email = data.scrub('?').gsub("\r\n", "\n")
|
37
|
+
thing = { 'from' => '','header' => {}, 'rfc822' => '', ds => [], 'catch' => nil }
|
49
38
|
|
50
|
-
|
51
|
-
|
52
|
-
field = argvs[:field] || []
|
53
|
-
|
54
|
-
if input == 'email'
|
55
|
-
# Email message
|
56
|
-
return nil if email.empty?
|
57
|
-
email = email.scrub('?').gsub("\r\n", "\n")
|
58
|
-
end
|
59
|
-
|
60
|
-
unless field.is_a? Array
|
61
|
-
# Unsupported value in "field"
|
62
|
-
warn ' ***warning: "field" accepts an array reference only'
|
63
|
-
return nil
|
64
|
-
end
|
65
|
-
|
66
|
-
methodargv = {
|
67
|
-
'data' => email,
|
68
|
-
'hook' => argvs[:hook] || nil,
|
69
|
-
'field' => field,
|
70
|
-
'input' => input,
|
71
|
-
}
|
39
|
+
#methodargv = { 'data' => email, 'hook' => argvs[:hook] || nil }
|
40
|
+
# 1. Load specified MTA modules
|
72
41
|
[:load, :order].each do |e|
|
73
42
|
# Order of MTA modules
|
74
|
-
next unless argvs
|
43
|
+
next unless argvs[e]
|
75
44
|
next unless argvs[e].is_a? Array
|
76
45
|
next if argvs[e].empty?
|
77
|
-
|
46
|
+
param[e.to_s] = argvs[e]
|
78
47
|
end
|
48
|
+
tobeloaded = Sisimai::Message.load(param)
|
79
49
|
|
80
|
-
|
81
|
-
return nil unless
|
82
|
-
return nil unless datasource.key?('ds')
|
83
|
-
|
84
|
-
@from = datasource['from']
|
85
|
-
@header = datasource['header']
|
86
|
-
@ds = datasource['ds']
|
87
|
-
@rfc822 = datasource['rfc822']
|
88
|
-
@catch = datasource['catch'] || nil
|
89
|
-
end
|
50
|
+
# 2. Split email data to headers and a body part.
|
51
|
+
return nil unless aftersplit = Sisimai::Message.divideup(email)
|
90
52
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
return true unless @ds
|
95
|
-
return false
|
96
|
-
end
|
53
|
+
# 3. Convert email headers from text to hash reference
|
54
|
+
thing['from'] = aftersplit[0]
|
55
|
+
thing['header'] = Sisimai::Message.makemap(aftersplit[1])
|
97
56
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
hookmethod = argvs['hook'] || nil
|
110
|
-
processing = {
|
111
|
-
'from' => '', # From_ line
|
112
|
-
'header' => {}, # Email header
|
113
|
-
'rfc822' => '', # Original message part
|
114
|
-
'ds' => [], # Parsed data, Delivery Status
|
115
|
-
'catch' => nil, # Data parsed by callback method
|
116
|
-
}
|
117
|
-
methodargv = {
|
118
|
-
'load' => argvs['load'] || [],
|
119
|
-
'order' => argvs['order'] || []
|
120
|
-
}
|
121
|
-
tobeloaded = Sisimai::Message.load(methodargv)
|
122
|
-
|
123
|
-
if argvs['input'] == 'email'
|
124
|
-
# Email message
|
125
|
-
# 1. Split email data to headers and a body part.
|
126
|
-
return nil unless aftersplit = Sisimai::Message.divideup(email)
|
127
|
-
|
128
|
-
# 2. Convert email headers from text to hash reference
|
129
|
-
headerargv = {
|
130
|
-
'extheaders' => ExtHeaders,
|
131
|
-
'tryonfirst' => [],
|
132
|
-
'extrafield' => argvs['field'] || [],
|
133
|
-
}
|
134
|
-
processing['from'] = aftersplit['from']
|
135
|
-
processing['header'] = Sisimai::Message.headers(aftersplit['header'], headerargv)
|
136
|
-
|
137
|
-
# 3. Check headers for detecting MTA modules
|
138
|
-
if headerargv['tryonfirst'].empty?
|
139
|
-
headerargv['tryonfirst'] += Sisimai::Message.makeorder(processing['header'])
|
57
|
+
# 4. Decode and rewrite the "Subject:" header
|
58
|
+
unless thing['header']['subject'].empty?
|
59
|
+
# Decode MIME-Encoded "Subject:" header
|
60
|
+
s = thing['header']['subject']
|
61
|
+
q = Sisimai::MIME.is_mimeencoded(s) ? Sisimai::MIME.mimedecode(s.split(/[ ]/)) : s
|
62
|
+
|
63
|
+
# Remove "Fwd:" string from the Subject: header
|
64
|
+
if cv = q.downcase.match(/\A[ \t]*fwd?:[ ]*(.*)\z/)
|
65
|
+
# Delete quoted strings, quote symbols(>)
|
66
|
+
q = cv[1]
|
67
|
+
aftersplit[2] = aftersplit[2].gsub(/^[>]+[ ]/, '').gsub(/^[>]$/, '')
|
140
68
|
end
|
141
|
-
|
142
|
-
# 4. Rewrite message body for detecting the bounce reason
|
143
|
-
methodargv = {
|
144
|
-
'hook' => hookmethod,
|
145
|
-
'mail' => processing,
|
146
|
-
'body' => aftersplit['body'],
|
147
|
-
'tryonfirst' => headerargv['tryonfirst'],
|
148
|
-
'tobeloaded' => tobeloaded,
|
149
|
-
}
|
150
|
-
return nil unless bouncedata = Sisimai::Message.parse(methodargv)
|
151
|
-
else
|
152
|
-
# JSON object
|
153
|
-
methodargv = {
|
154
|
-
'hook' => hookmethod,
|
155
|
-
'json' => argvs['data'],
|
156
|
-
'tobeloaded' => tobeloaded.concat(Sisimai::Order.forjson),
|
157
|
-
}
|
158
|
-
return nil unless bouncedata = Sisimai::Message.adapt(methodargv)
|
69
|
+
thing['header']['subject'] = q
|
159
70
|
end
|
160
|
-
return nil if bouncedata.empty?
|
161
71
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
72
|
+
# 5. Rewrite message body for detecting the bounce reason
|
73
|
+
param = {
|
74
|
+
'hook' => argvs[:hook] || nil,
|
75
|
+
'mail' => thing,
|
76
|
+
'body' => aftersplit[2],
|
77
|
+
'tobeloaded' => tobeloaded,
|
78
|
+
'tryonfirst' => Sisimai::Order.make(thing['header']['subject'])
|
79
|
+
}
|
80
|
+
return nil unless bouncedata = Sisimai::Message.parse(param)
|
81
|
+
return nil if bouncedata.empty?
|
169
82
|
|
170
|
-
|
83
|
+
# 6. Rewrite headers of the original message in the body part
|
84
|
+
%w|ds catch rfc822|.each { |e| thing[e] = bouncedata[e] }
|
85
|
+
p = bouncedata['rfc822']
|
86
|
+
p = aftersplit[2] if p.empty?
|
87
|
+
thing['rfc822'] = p.is_a?(::String) ? Sisimai::Message.makemap(p, true) : p
|
88
|
+
|
89
|
+
@from = thing['from']
|
90
|
+
@header = thing['header']
|
91
|
+
@ds = thing['ds']
|
92
|
+
@rfc822 = thing['rfc822']
|
93
|
+
@catch = thing['catch'] || nil
|
171
94
|
end
|
172
95
|
|
96
|
+
# Check whether the object has valid content or not
|
97
|
+
# @return [True,False] returns true if the object is void
|
98
|
+
def void; return @ds ? false : true; end
|
99
|
+
|
173
100
|
# Load MTA modules which specified at 'order' and 'load' in the argument
|
174
101
|
# @param [Hash] argvs Module information to be loaded
|
175
102
|
# @options argvs [Array] load User defined MTA module list
|
@@ -182,7 +109,7 @@ module Sisimai
|
|
182
109
|
|
183
110
|
%w[load order].each do |e|
|
184
111
|
# The order of MTA modules specified by user
|
185
|
-
next unless argvs
|
112
|
+
next unless argvs[e]
|
186
113
|
next unless argvs[e].is_a? Array
|
187
114
|
next if argvs[e].empty?
|
188
115
|
|
@@ -198,13 +125,6 @@ module Sisimai
|
|
198
125
|
warn ' ***warning: Failed to load ' << v
|
199
126
|
next
|
200
127
|
end
|
201
|
-
next unless argvs.input == 'email'
|
202
|
-
|
203
|
-
Module.const_get(v).headerlist.each do |w|
|
204
|
-
# Get header name which required user defined MTA module
|
205
|
-
ExtHeaders[w] ||= {}
|
206
|
-
ExtHeaders[w][v] = 1
|
207
|
-
end
|
208
128
|
tobeloaded << v
|
209
129
|
end
|
210
130
|
end
|
@@ -218,192 +138,81 @@ module Sisimai
|
|
218
138
|
return tobeloaded
|
219
139
|
end
|
220
140
|
|
221
|
-
# Check headers for detecting MTA module and returns the order of modules
|
222
|
-
# @param [Hash] heads Email header data
|
223
|
-
# @return [Array] Order of MTA modules
|
224
|
-
def self.makeorder(heads)
|
225
|
-
return [] unless heads
|
226
|
-
return [] unless heads['subject']
|
227
|
-
return [] if heads['subject'].empty?
|
228
|
-
order = []
|
229
|
-
|
230
|
-
# Try to match the value of "Subject" with patterns generated by
|
231
|
-
# Sisimai::Order->by('subject') method
|
232
|
-
title = heads['subject'].downcase
|
233
|
-
SubjectTab.each_key do |e|
|
234
|
-
# Get MTA list from the subject header
|
235
|
-
next unless title.include?(e)
|
236
|
-
order += SubjectTab[e] # Matched and push MTA list
|
237
|
-
break
|
238
|
-
end
|
239
|
-
return order
|
240
|
-
end
|
241
|
-
|
242
|
-
# Convert email headers from text to hash reference
|
243
|
-
# @param [String] heads Email header data
|
244
|
-
# @param [Hash] argvs
|
245
|
-
# @param options extheaders [Array] External header table
|
246
|
-
# @return [Hash] Structured email header data
|
247
|
-
def self.headers(heads, argvs = {})
|
248
|
-
return nil unless heads
|
249
|
-
|
250
|
-
currheader = ''
|
251
|
-
allheaders = {}
|
252
|
-
structured = {}
|
253
|
-
extheaders = argvs['extheaders'] || []
|
254
|
-
extrafield = argvs['extrafield'] || []
|
255
|
-
hasdivided = heads.split("\n")
|
256
|
-
|
257
|
-
HeaderList.each { |e| structured[e] = nil }
|
258
|
-
HeaderList.each { |e| allheaders[e] = true }
|
259
|
-
RFC3834Set.each { |e| allheaders[e] = true }
|
260
|
-
IsMultiple.each_key { |e| structured[e] = [] }
|
261
|
-
extheaders.each_key { |e| allheaders[e] = true }
|
262
|
-
unless extrafield.empty?
|
263
|
-
extrafield.each { |e| allheaders[e] = true }
|
264
|
-
end
|
265
|
-
|
266
|
-
while e = hasdivided.shift do
|
267
|
-
# Convert email headers to hash
|
268
|
-
if cv = e.match(/\A[ \t]+(.+)\z/)
|
269
|
-
# Continued (foled) header value from the previous line
|
270
|
-
next unless allheaders.key?(currheader)
|
271
|
-
|
272
|
-
# Header line continued from the previous line
|
273
|
-
if structured[currheader].is_a? Array
|
274
|
-
# Concatenate a header which have multi-lines such as 'Received'
|
275
|
-
structured[currheader][-1] << ' ' << cv[1]
|
276
|
-
else
|
277
|
-
structured[currheader] ||= ''
|
278
|
-
structured[currheader] << ' ' << cv[1]
|
279
|
-
end
|
280
|
-
else
|
281
|
-
# split the line into a header name and a header content
|
282
|
-
(lhs, rhs) = e.split(/:[ ]*/, 2)
|
283
|
-
currheader = lhs ? lhs.downcase : ''
|
284
|
-
next unless allheaders.key?(currheader)
|
285
|
-
|
286
|
-
if IsMultiple.key?(currheader)
|
287
|
-
# Such as 'Received' header, there are multiple headers in a single
|
288
|
-
# email message.
|
289
|
-
#rhs = rhs.tr("\t", ' ').squeeze(' ')
|
290
|
-
rhs = rhs.tr("\t", ' ')
|
291
|
-
structured[currheader] << rhs
|
292
|
-
else
|
293
|
-
# Other headers except "Received" and so on
|
294
|
-
if extheaders[currheader]
|
295
|
-
# MTA specific header
|
296
|
-
extheaders[currheader].each do |r|
|
297
|
-
next if argvs['tryonfirst'].index(r)
|
298
|
-
argvs['tryonfirst'] << r
|
299
|
-
end
|
300
|
-
end
|
301
|
-
structured[currheader] = rhs
|
302
|
-
end
|
303
|
-
end
|
304
|
-
end
|
305
|
-
return structured
|
306
|
-
end
|
307
|
-
|
308
141
|
# Divide email data up headers and a body part.
|
309
142
|
# @param [String] email Email data
|
310
|
-
# @return [
|
143
|
+
# @return [Array] Email data after split
|
311
144
|
def self.divideup(email)
|
312
145
|
return nil if email.empty?
|
313
146
|
|
314
|
-
block =
|
315
|
-
email.scrub!('?')
|
147
|
+
block = ['', '', ''] # 0:From, 1:Header, 2:Body
|
316
148
|
email.gsub!(/\r\n/, "\n") if email.include?("\r\n")
|
317
149
|
email.gsub!(/[ \t]+$/, '') if email =~ /[ \t]+$/
|
318
150
|
|
319
|
-
(block[
|
320
|
-
return nil unless block[
|
321
|
-
return nil unless block[
|
151
|
+
(block[1], block[2]) = email.split(/\n\n/, 2)
|
152
|
+
return nil unless block[1]
|
153
|
+
return nil unless block[2]
|
322
154
|
|
323
|
-
if block[
|
155
|
+
if block[1].start_with?('From ')
|
324
156
|
# From MAILER-DAEMON Tue Feb 11 00:00:00 2014
|
325
|
-
block[
|
157
|
+
block[0] = block[1].split(/\n/, 2)[0].delete("\r")
|
326
158
|
else
|
327
159
|
# Set pseudo UNIX From line
|
328
|
-
block[
|
160
|
+
block[0] = 'MAILER-DAEMON Tue Feb 11 00:00:00 2014'
|
329
161
|
end
|
330
162
|
|
331
|
-
block[
|
163
|
+
block[1] << "\n" unless block[1].end_with?("\n")
|
164
|
+
block[2] << "\n"
|
332
165
|
return block
|
333
166
|
end
|
334
167
|
|
335
|
-
#
|
336
|
-
# @param
|
337
|
-
# @
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
#
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
# Concatenate the line if it is the value of required header
|
357
|
-
if Sisimai::MIME.is_mimeencoded(e)
|
358
|
-
# The line is MIME-Encoded test
|
359
|
-
headerpart[previousfn] << if previousfn == 'subject'
|
360
|
-
# Subject: header
|
361
|
-
BorderLine + e
|
362
|
-
else
|
363
|
-
# Is not Subject header
|
364
|
-
e
|
365
|
-
end
|
366
|
-
asciiarmor[previousfn] = true
|
367
|
-
else
|
368
|
-
# ASCII Characters only: Not MIME-Encoded
|
369
|
-
headerpart[previousfn] << e.lstrip
|
370
|
-
asciiarmor[previousfn] ||= false
|
371
|
-
end
|
372
|
-
else
|
373
|
-
# Header name as a key, The value of header as a value
|
374
|
-
(lhs, rhs) = e.split(/:[ ]*/, 2)
|
375
|
-
next unless lhs
|
376
|
-
lhs.downcase!
|
377
|
-
previousfn = ''
|
378
|
-
|
379
|
-
next unless RFC822Head.key?(lhs)
|
380
|
-
previousfn = lhs
|
381
|
-
headerpart[previousfn] = rhs unless headerpart[previousfn]
|
382
|
-
end
|
168
|
+
# Convert a text including email headers to a hash reference
|
169
|
+
# @param [String] argv0 Email header data
|
170
|
+
# @param [Bool] argv1 Decode "Subject:" header
|
171
|
+
# @return [Hash] Structured email header data
|
172
|
+
# @since v4.25.6
|
173
|
+
def self.makemap(argv0 = '', argv1 = nil)
|
174
|
+
return {} if argv0.empty?
|
175
|
+
argv0.gsub!(/^[>]+[ ]/m, '') # Remove '>' indent symbol of forwarded message
|
176
|
+
|
177
|
+
# Select and convert all the headers in $argv0. The following regular expression
|
178
|
+
# is based on https://gist.github.com/xtetsuji/b080e1f5551d17242f6415aba8a00239
|
179
|
+
headermaps = { 'subject' => '' }
|
180
|
+
recvheader = []
|
181
|
+
argv0.scan(/^([\w-]+):[ ]*(.*?)\n(?![\s\t])/m) { |e| headermaps[e[0].downcase] = e[1] }
|
182
|
+
headermaps.delete('received')
|
183
|
+
headermaps.each_key { |e| headermaps[e].gsub!(/\n[\s\t]+/, ' ') }
|
184
|
+
|
185
|
+
if argv0.include?('Received:')
|
186
|
+
# Capture values of each Received: header
|
187
|
+
recvheader = argv0.scan(/^Received:[ ]*(.*?)\n(?![\s\t])/m).flatten
|
188
|
+
recvheader.each { |e| e.gsub!(/\n[\s\t]+/, ' ') }
|
383
189
|
end
|
384
|
-
|
190
|
+
headermaps['received'] = recvheader
|
191
|
+
|
192
|
+
return headermaps unless argv1
|
193
|
+
return headermaps if headermaps['subject'].empty?
|
385
194
|
|
386
195
|
# Convert MIME-Encoded subject
|
387
|
-
if Sisimai::String.is_8bit(
|
196
|
+
if Sisimai::String.is_8bit(headermaps['subject'])
|
388
197
|
# The value of ``Subject'' header is including multibyte character,
|
389
198
|
# is not MIME-Encoded text.
|
390
|
-
|
199
|
+
headermaps['subject'].scrub!('?')
|
391
200
|
else
|
392
201
|
# MIME-Encoded subject field or ASCII characters only
|
393
202
|
r = []
|
394
|
-
if
|
203
|
+
if Sisimai::MIME.is_mimeencoded(headermaps['subject'])
|
395
204
|
# split the value of Subject by borderline
|
396
|
-
|
205
|
+
headermaps['subject'].split(/ /).each do |v|
|
397
206
|
# Insert value to the array if the string is MIME encoded text
|
398
207
|
r << v if Sisimai::MIME.is_mimeencoded(v)
|
399
208
|
end
|
400
209
|
else
|
401
210
|
# Subject line is not MIME encoded
|
402
|
-
r <<
|
211
|
+
r << headermaps['subject']
|
403
212
|
end
|
404
|
-
|
213
|
+
headermaps['subject'] = Sisimai::MIME.mimedecode(r)
|
405
214
|
end
|
406
|
-
return
|
215
|
+
return headermaps
|
407
216
|
end
|
408
217
|
|
409
218
|
# @abstract Parse bounce mail with each MTA module
|
@@ -425,7 +234,6 @@ module Sisimai
|
|
425
234
|
bodystring = argvs['body']
|
426
235
|
hookmethod = argvs['hook'] || nil
|
427
236
|
havecaught = nil
|
428
|
-
|
429
237
|
return nil unless mailheader
|
430
238
|
|
431
239
|
# PRECHECK_EACH_HEADER:
|
@@ -437,7 +245,6 @@ module Sisimai
|
|
437
245
|
# Decode BASE64 Encoded message body, rewrite.
|
438
246
|
mesgformat = (mailheader['content-type'] || '').downcase
|
439
247
|
ctencoding = (mailheader['content-transfer-encoding'] || '').downcase
|
440
|
-
|
441
248
|
if mesgformat.start_with?('text/plain', 'text/html')
|
442
249
|
# Content-Type: text/plain; charset=UTF-8
|
443
250
|
if ctencoding == 'base64'
|
@@ -461,166 +268,86 @@ module Sisimai
|
|
461
268
|
bodystring = p unless p.empty?
|
462
269
|
end
|
463
270
|
end
|
464
|
-
|
465
|
-
# EXPAND_FORWARDED_MESSAGE:
|
466
|
-
# Check whether or not the message is a bounce mail.
|
467
|
-
# Pre-Process email body if it is a forwarded bounce message.
|
468
|
-
# Get the original text when the subject begins from 'fwd:' or 'fw:'
|
469
|
-
if mailheader['subject'].downcase =~ /\A[ \t]*fwd?:/
|
470
|
-
# Delete quoted strings, quote symbols(>)
|
471
|
-
bodystring = bodystring.gsub(/^[>]+[ ]/m, '').gsub(/^[>]$/m, '')
|
472
|
-
elsif Sisimai::MIME.is_mimeencoded(mailheader['subject'])
|
473
|
-
# Decode MIME-Encoded "Subject:" header
|
474
|
-
mailheader['subject'] = Sisimai::MIME.mimedecode(mailheader['subject'].split(/[ ]/))
|
475
|
-
mailheader['subject'].scrub!('?')
|
476
|
-
end
|
477
271
|
bodystring = bodystring.scrub('?').delete("\r")
|
478
272
|
|
273
|
+
haveloaded = {}
|
274
|
+
parseddata = nil
|
275
|
+
modulename = ''
|
479
276
|
if hookmethod.is_a? Proc
|
480
277
|
# Call the hook method
|
481
278
|
begin
|
482
|
-
p = {
|
483
|
-
'datasrc' => 'email',
|
484
|
-
'headers' => mailheader,
|
485
|
-
'message' => bodystring,
|
486
|
-
'bounces' => nil
|
487
|
-
}
|
279
|
+
p = { 'headers' => mailheader, 'message' => bodystring }
|
488
280
|
havecaught = hookmethod.call(p)
|
489
281
|
rescue StandardError => ce
|
490
282
|
warn ' ***warning: Something is wrong in hook method :' << ce.to_s
|
491
283
|
end
|
492
284
|
end
|
493
285
|
|
494
|
-
bodystring << EndOfEmail
|
495
|
-
haveloaded = {}
|
496
|
-
parseddata = nil
|
497
|
-
|
498
286
|
catch :PARSER do
|
499
287
|
while true
|
500
|
-
# 1.
|
501
|
-
# 2.
|
502
|
-
# 3.
|
503
|
-
# 4. Sisimai::
|
504
|
-
# 5. Sisimai::
|
288
|
+
# 1. User-Defined Module
|
289
|
+
# 2. MTA Module Candidates to be tried on first
|
290
|
+
# 3. Sisimai::Lhost::*
|
291
|
+
# 4. Sisimai::RFC3464
|
292
|
+
# 5. Sisimai::ARF
|
505
293
|
# 6. Sisimai::RFC3834
|
506
|
-
if Sisimai::ARF.is_arf(mailheader)
|
507
|
-
# Feedback Loop message
|
508
|
-
parseddata = Sisimai::ARF.make(mailheader, bodystring)
|
509
|
-
throw :PARSER if parseddata
|
510
|
-
end
|
511
|
-
|
512
294
|
while r = argvs['tobeloaded'].shift do
|
513
295
|
# Call user defined MTA modules
|
514
296
|
next if haveloaded[r]
|
515
297
|
parseddata = Module.const_get(r).make(mailheader, bodystring)
|
516
298
|
haveloaded[r] = true
|
299
|
+
modulename = r
|
517
300
|
throw :PARSER if parseddata
|
518
301
|
end
|
519
302
|
|
520
|
-
argvs['tryonfirst'].
|
521
|
-
while r = argvs['tryonfirst'].shift do
|
303
|
+
[argvs['tryonfirst'], DefaultSet].flatten.each do |r|
|
522
304
|
# Try MTA module candidates
|
523
|
-
next if haveloaded
|
524
|
-
require r
|
305
|
+
next if haveloaded[r]
|
306
|
+
require LhostTable[r]
|
525
307
|
parseddata = Module.const_get(r).make(mailheader, bodystring)
|
526
308
|
haveloaded[r] = true
|
309
|
+
modulename = r
|
527
310
|
throw :PARSER if parseddata
|
528
311
|
end
|
529
312
|
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
parseddata = Sisimai::RFC3834.make(mailheader, bodystring)
|
539
|
-
break if parseddata
|
540
|
-
|
541
|
-
# as of now, we have no sample email for coding this block
|
542
|
-
break
|
543
|
-
end
|
544
|
-
end
|
545
|
-
|
546
|
-
parseddata['catch'] = havecaught if parseddata
|
547
|
-
return parseddata
|
548
|
-
end
|
549
|
-
|
550
|
-
# Parse bounce object with each MTA(JSON) module
|
551
|
-
# @param [Hash] argvs Processing message entity.
|
552
|
-
# @param options argvs [Hash] json Decoded bounce object
|
553
|
-
# @param options argvs [Proc] hook Hook method to be called
|
554
|
-
# @return [Hash] Parsed and structured bounce mails
|
555
|
-
def self.adapt(argvs)
|
556
|
-
Sisimai::Message.warn(self.name, 'gone')
|
557
|
-
bouncedata = argvs['json'] || {}
|
558
|
-
hookmethod = argvs['hook'] || nil
|
559
|
-
havecaught = nil
|
560
|
-
haveloaded = {}
|
561
|
-
parseddata = nil
|
313
|
+
unless haveloaded['Sisimai::RFC3464']
|
314
|
+
# When the all of Sisimai::Lhost::* modules did not return bounce
|
315
|
+
# data, call Sisimai::RFC3464;
|
316
|
+
require 'sisimai/rfc3464'
|
317
|
+
parseddata = Sisimai::RFC3464.make(mailheader, bodystring)
|
318
|
+
modulename = 'RFC3464'
|
319
|
+
throw :PARSER if parseddata
|
320
|
+
end
|
562
321
|
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
'headers' => nil,
|
570
|
-
'message' => nil,
|
571
|
-
'bounces' => argvs['json']
|
572
|
-
}
|
573
|
-
havecaught = hookmethod.call(p)
|
574
|
-
rescue StandardError => ce
|
575
|
-
warn ' ***warning: Something is wrong in hook method :' << ce.to_s
|
576
|
-
end
|
577
|
-
end
|
322
|
+
unless haveloaded['Sisimai::ARF']
|
323
|
+
# Feedback Loop message
|
324
|
+
require 'sisimai/arf'
|
325
|
+
parseddata = Sisimai::ARF.make(mailheader, bodystring) if Sisimai::ARF.is_arf(mailheader)
|
326
|
+
throw :PARSER if parseddata
|
327
|
+
end
|
578
328
|
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
argvs['tobeloaded'].each do |r|
|
586
|
-
# Call user defined MTA(JSON) modules
|
587
|
-
next if haveloaded[r]
|
588
|
-
begin
|
589
|
-
require r.gsub('::', '/').downcase
|
590
|
-
rescue LoadError => ce
|
591
|
-
warn ' ***warning: Failed to load ' << ce.to_s
|
592
|
-
next
|
593
|
-
end
|
594
|
-
parseddata = Module.const_get(r).json(bouncedata)
|
595
|
-
haveloaded[r] = true
|
596
|
-
throw :ADAPTOR if parseddata
|
329
|
+
unless haveloaded['Sisimai::RFC3834']
|
330
|
+
# Try to parse the message as auto reply message defined in RFC3834
|
331
|
+
require 'sisimai/rfc3834'
|
332
|
+
parseddata = Sisimai::RFC3834.make(mailheader, bodystring)
|
333
|
+
modulename = 'RFC3834'
|
334
|
+
throw :PARSER if parseddata
|
597
335
|
end
|
598
336
|
|
599
|
-
break # as of now, we have no sample
|
337
|
+
break # as of now, we have no sample email for coding this block
|
600
338
|
end
|
601
339
|
end
|
602
340
|
return nil unless parseddata
|
603
|
-
return nil unless parseddata['ds']
|
604
341
|
|
605
342
|
parseddata['catch'] = havecaught
|
606
|
-
|
343
|
+
modulename = modulename.sub(/\A.+::/, '')
|
344
|
+
parseddata['ds'].each do |e|
|
345
|
+
e['agent'] = modulename unless e['agent']
|
346
|
+
e.each_key { |a| e[a] ||= '' } # Replace nil with ""
|
347
|
+
end
|
607
348
|
return parseddata
|
608
349
|
end
|
609
350
|
|
610
|
-
# @abstract Print warnings about an obsoleted method. This method will be
|
611
|
-
# removed at the future release of Sisimai
|
612
|
-
# @until v4.25.5
|
613
|
-
def self.warn(whois = '', useit = nil)
|
614
|
-
label = ' ***warning:'
|
615
|
-
methodname = caller[0][/`.*'/][1..-2]
|
616
|
-
messageset = sprintf("%s %s.%s is marked as obsoleted", label, whois, methodname)
|
617
|
-
|
618
|
-
useit ||= methodname
|
619
|
-
messageset << sprintf(" and will be removed at %s.", Sisimai::Lhost.removedat)
|
620
|
-
messageset << sprintf(" Use %s.%s instead.\n", self.name, useit) if useit != 'gone'
|
621
|
-
Kernel.warn messageset
|
622
|
-
end
|
623
|
-
|
624
351
|
end
|
625
352
|
end
|
626
353
|
|