This is a cryptographically signed message in MIME format.

--------------ms070509090801070505000504
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable

稘塚
ありがとうございます。

ドコモの IMAP の仕様書を見つけました。https://www.nttdocomo.co.jp/binary/pdf/service/developer/smart_phone/application/imap/mail_imap_spec_151201.pdf

これを見ると IDLE が成功したときにどのような
応答が返ってくるか書いていないようです。

ただし、「3.3.26.5 コマンドの実行例」では、
"+ ."が返ってくるような例が書かれています。


On 2017/08/27 15:36, Shugo Maeda wrote:
> 前田です。
> 
> 2017年8月27日 9:03 とみたまさひろ <tommy / tmtm.org>:
>> IDLE コマンドの応答が「+」だけなのがおかしいですね。
>> 「+ 何かの文字列」である必要があります。
>>
>> https://tools.ietf.org/html/rfc3501#section-7.5
>>
>> # それで connection closed というエラーになるのもどうかと思いますが…。
>>
>> 原因はサーバーがIMAPプロトコルに従ってないためなので、クライアント側で
>> 対応するには net/imap ライブラリに手を入れるしかないと思います。
> 
> trunkでは修正しましたが、以下のようなモンキーパッチで対処できるのではないかと思います。
> 
> class Net::IMAP::ResponseParser
>    def continue_req
>      match(T_PLUS)
>      token = lookahead
>      if token.symbol == T_SPACE
>        shift_token
>        return ContinuationRequest.new(resp_text, @str)
>      else
>        return ContinuationRequest.new(ResponseText.new(nil, ""), @str)
>      end
>    end
> end
> 
> ついでにパースエラー等の時にオリジナルの例外を投げるように修正しました。
> 


とりあえず、上記を修正して
以下のようにすることで、
ドコモには対応できるようになりました。

class Net::IMAP::ResponseParser
   def continue_req
     match(T_PLUS)
     token = lookahead
     if token.symbol == T_SPACE
       shift_token
       return ContinuationRequest.new(resp_text, @str)
     else
#      return ContinuationRequest.new(ResponseText.new(nil, ""), @str)
       return T_PLUS
     end
   end
end


江本





--------------ms070509090801070505000504
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCC
CyswggU9MIIEJaADAgECAhBaNO6Dbr/4aIpiCPZMsf9DMA0GCSqGSIb3DQEBCwUAMIGXMQsw
CQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxm
b3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDE9MDsGA1UEAxM0Q09NT0RPIFJTQSBD
bGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTAeFw0xNzA4MDMwMDAw
MDBaFw0xODA4MDMyMzU5NTlaMCoxKDAmBgkqhkiG9w0BCQEWGWVtb3RvLm1hc2FoaWtvQG5p
ZnMuYWMuanAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1EyMwNbS+rlqX6xYl
nVNMt325FtYSwFHTMzy0lKPHoM6u/9cYeDpPa8V9FGeV2QOr8DNMj3rIiSo15S0mZsp7VKO3
ubN6iij/9aWMyW6sfbdFXJKSCdS90rRrbCe/dLRFdHiIDVCDuFC4dpWezET0fCLyMAkLx15I
dUy5v/tTybf7WW2wDTPNv+qDXJv0mpxhp9fpTVSQeirrVo20oGTMccEXF8HP+k0W8DCzFU0V
9raP9EpA9iut94ngxomDnkl5z2D9S3aQ5E2+EaV31vWnBTupCJazhENW/oQqt/gsxO7p4hW1
UudH/XwSnQvE5u5ys8VerTiWRNI6+nebf5P3AgMBAAGjggHvMIIB6zAfBgNVHSMEGDAWgBSC
r2yM+MX+lmF86B89K3FIXsSLwDAdBgNVHQ4EFgQUjrPCSoLdsjFi9HNNkEwTx1XNe1IwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwIAYDVR0lBBkwFwYIKwYBBQUHAwQGCysGAQQB
sjEBAwUCMBEGCWCGSAGG+EIBAQQEAwIFIDBGBgNVHSAEPzA9MDsGDCsGAQQBsjEBAgEBATAr
MCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21vZG8ubmV0L0NQUzBaBgNVHR8EUzBR
ME+gTaBLhklodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDbGllbnRBdXRoZW50
aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGLBggrBgEFBQcBAQR/MH0wVQYIKwYBBQUH
MAKGSWh0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNsaWVudEF1dGhlbnRpY2F0
aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
b2NhLmNvbTAkBgNVHREEHTAbgRllbW90by5tYXNhaGlrb0BuaWZzLmFjLmpwMA0GCSqGSIb3
DQEBCwUAA4IBAQAiiMQEgFvNYZx3mJ0yZQIcr6WJkKtOsoKcLHXp1hP5pp5evPYDQ5naNBGR
HD1KZY3mCuTcRTctgi7mIbLbDsU+mAzQ4Y/jtRg8zXa3G7+bExpPwQ6FjFZLU/+b0GPyivpv
MyfhWIGWlPwmmDizrg81Y+8lP5bvis5C+6USd/XiiACry6Wdlnmm5hKDmKXIeA02WMnqMsDo
jYm0LbuecLes7SwgFrUxXozSS3oGutePws/aIu1g2BlsA/ydIxR/65WT8bb+IAU/Nc6I1fHb
zhhdTVkzCKTegoPwNDAjW+RiIn9I+ZP4yjTRLCCMHVVfboQYyqd5Bm3Y6wFo5UP35NqhMIIF
5jCCA86gAwIBAgIQapvhODv/K2ufAdXZuKdSVjANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa
MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlm
aWNhdGlvbiBBdXRob3JpdHkwHhcNMTMwMTEwMDAwMDAwWhcNMjgwMTA5MjM1OTU5WjCBlzEL
MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2Fs
Zm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0Eg
Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0EwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQC+s55XrCh2dUAWxzgDmNPGGHYhUPMleQtMtaDRfTpYPpyn
MS6n9jR22YRq2tA9NEjk6vW7rN/5sYFLIP1of3l0NKZ6fLWfF2VgJ5cijKYy/qlAckY1wgOk
UMgzKlWlVJGyK+UlNEQ1/5ErCsHq9x9aU/x1KwTdF/LCrT03Rl/FwFrf1XTCwa2QZYL55AqL
PikFlgqOtzk06kb2qvGlnHJvijjI03BOrNpo+kZGpcHsgyO1/u1OZTaOo8wvEU17VVeP1cHW
se9tGKTDyUGg2hJZjrqck39UIm/nKbpDSZ0JsMoIw/JtOOg0JC56VzQgBo7ictReTQE5LFLG
3yQK+xS1AgMBAAGjggE8MIIBODAfBgNVHSMEGDAWgBS7r34CPfqm8TyEjq3uOJjs2TIy1DAd
BgNVHQ4EFgQUgq9sjPjF/pZhfOgfPStxSF7Ei8AwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB
/wQIMAYBAf8CAQAwEQYDVR0gBAowCDAGBgRVHSAAMEwGA1UdHwRFMEMwQaA/oD2GO2h0dHA6
Ly9jcmwuY29tb2RvY2EuY29tL0NPTU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3Js
MHEGCCsGAQUFBwEBBGUwYzA7BggrBgEFBQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5jb20v
Q09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
b2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAeFyygSg0TzzuX1bOn5dW7I+iaxf28/ZJCAbU
2C81zd9A/tNx4+jsQgwRGiHjZrAYayZrrm78hOx7aEpkfNPQIHGG6Fvq3EzWf/Lvx7/hk6zS
PwIal9v5IkDcZoFD7f3iT7PdkHJY9B51csvU50rxpEg1OyOT8fk2zvvPBuM4qQNqbGWlnhMp
IMwpWZT89RY0wpJO+2V6eXEGGHsROs3njeP9DqqqAJaBa4wBeKOdGCWn1/Jp2oY6dyNmNppI
4ZNMUH4Tam85S1j6E95u4+1Nuru84OrMIzqvISE2HN/56ebTOWlcrurffade2022O/tUU1gb
4jfWCcyvB8czm12FgX/y/lRjmDbEA08QJNB2729Y+io1IYO3ztveBdvUCIYZojTq/OCR6Mvn
zS6X72HP0PRLRTiOSEmIDsS5N5w/8IW1Hva5hEFy6fDAfd9yI+O+IMMAj1KcL/Zo9jzJ16HO
5m60ttl1Enk8MQkz/W3JlHaeI5iKFn4UJu1/cP2YHXYPiWf2JyBzsLBrGk1II+3yL8aorYew
6CQvdVifC3HtwlSam9V1niiCfOBe2C12TdKGu05LWIA3ZkFcWJGaNXOZ6Ggyh/TqvXG5v7zm
EVDNXFnHn9tFpMpOUvxhcsjycBtH0dZ0WrNw6gH+HF8TIhCnH3+zzWuDN0Rk6h9KVkfKehIx
ggQ1MIIEMQIBATCBrDCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hl
c3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7
BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1h
aWwgQ0ECEFo07oNuv/hoimII9kyx/0MwDQYJYIZIAWUDBAIBBQCgggJZMBgGCSqGSIb3DQEJ
AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE3MDgyNzEwMTc1OVowLwYJKoZIhvcN
AQkEMSIEINbLYI7e9KPt49txnTGH938PYysu7KA92RSD/PysBSe3MGwGCSqGSIb3DQEJDzFf
MF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgIC
AIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgb0GCSsGAQQBgjcQ
BDGBrzCBrDCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQ
MA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMT
NENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0EC
EFo07oNuv/hoimII9kyx/0Mwgb8GCyqGSIb3DQEJEAILMYGvoIGsMIGXMQswCQYDVQQGEwJH
QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYD
VQQKExFDT01PRE8gQ0EgTGltaXRlZDE9MDsGA1UEAxM0Q09NT0RPIFJTQSBDbGllbnQgQXV0
aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIQWjTug26/+GiKYgj2TLH/QzANBgkq
hkiG9w0BAQEFAASCAQBF3j1Iyh1vNoUxE3YqqejXFpDc8cVBZkStCTr5k4bXkzeSDndKaBrz
grHcLLEZTE0Swaf5VBs5mOzck8Y7KigFCwxbsV4w6Lu1anFImsN9Dzy71AryatP+HMAvmouv
Z8ttNHeewp56R+3F3grMqvYSN07H9u4cnKNDc4QTYUx+xt9mzWwt1dX641t3opjz8ODL8Zo6
3Za3+67G+GeLm/ddEcQ6pY5vxhemZdw9J9tQ9UDxbwrMg5Sm70+NMEurCdsVOKKmlENKPGrb
I7rljhT/RSymfWAs+HlYhL8JhB0eOdusQ41mIMa5QbCu9xd6xdRuuyc1fE6tohW4XzWPFc1t
AAAAAAAA
--------------ms070509090801070505000504--