3

I have long used Apple’s standard Mail.app client for OS X and macOS, since it is, to me, overall by far the best mail client in existence. For several years now, however, it’s annoyed me that it’s exceedingly slow at fetching mail from Yahoo! mail via IMAP. New messages eventually appear in the inbox, but sometimes as much as three or four days after it was actually received.

Meanwhile, logging on to mail.yahoo.com works fine, and fetching e-mail on my iPhone or iPad (on the same network), also through the default mail app, also works fine: e-mail shows up in the inbox within minutes of being sent/received.

Looking into it more closely, it appears that Mail.app frequently receives the message NO [LIMIT] CAPABILITY Rate limit hit from the Yahoo! servers, and I can’t figure out exactly what this message means, or indeed whether it’s anything to do with the delays.

For the sake of completeness, here is the entire (redacted) conversation of a recent attempt to fetch new messages:

INITIATING CONNECTION Aug 17 00:19:52.885 host:imap.mail.yahoo.com -- port:993 -- socket:0x0 -- thread:0x600003cc1e80

CONNECTED Aug 17 00:19:53.263 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600004d5d920 -- thread:0x600003cc1e80

READ Aug 17 00:19:53.263 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600004d5d920 -- thread:0x600003cc1e80

  • OK [CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=XOAUTH2 AUTH=OAUTHBEARER ID MOVE NAMESPACE XYMHIGHESTMODSEQ UIDPLUS LITERAL+ CHILDREN X-MSG-EXT OBJECTID] IMAP4rev1 Hello

WROTE Aug 17 00:19:53.263 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600004d5d920 -- thread:0x600003cc1e80 1.146 ID ("name" "Mac OS X Mail" "version" "13.4 (3608.120.23.2.7)" "os" "Mac OS X" "os-version" "10.15.7 (19H1217)" "vendor" "Apple Inc.")

READ Aug 17 00:19:53.328 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600004d5d920 -- thread:0x600003cc1e80

  • ID ("remote-host" "[my IP address]" "vendor" "Yahoo! Inc." "support-url" "http://help.yahoo.com/" "name" "Y!IMAP" "host" "[subdomain].imap.mail.yahoo.com" "version" "1.1.18742")

1.146 OK ID completed

WROTE Aug 17 00:19:53.329 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600004d5d920 -- thread:0x600003cc1e80 2.146 AUTHENTICATE OAUTHBEARER [long OAuthBearer payload here]

READ Aug 17 00:19:54.136 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600004d5d920 -- thread:0x600003cc1e80 2.146 OK AUTHENTICATE completed

WROTE Aug 17 00:19:54.136 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600004d5d920 -- thread:0x600003cc1e80 3.146 CAPABILITY

READ Aug 17 00:19:58.685 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600004d5d920 -- thread:0x600003cc1e80

  • BYE IMAP4rev1 Server logging out

3.146 NO [LIMIT] CAPABILITY Rate limit hit.

(The 146 number varies.)

To me, this looks like the authentication goes smoothly, then Mail asks the Yahoo! server what capabilities it offers (even though the server actually sent that information previously, right after the connection was made) – and then the Yahoo! mail closes the connection with a BYE and this message that there’s no [LIMIT] capability (who asked for that?), and that some rate limit was apparently hit.

It doesn’t happen with SMTP connections – they go smoothly, and outgoing messages reach their destination just fine, without delays. I’ve seen complaints about mail.yahoo.com being inaccessible with the message “rate limited”, but this isn’t the case for me: logging in through the website works fine.

And of course, sometimes, it seems to work fine via Mail as well; the next attempt gave me this (just the ending):

READ Aug 17 00:45:54.196 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600000391c80 -- thread:0x6000035a3900
* CAPABILITY IMAP4rev1 ID MOVE NAMESPACE XYMHIGHESTMODSEQ UIDPLUS LITERAL+ CHILDREN X-MSG-EXT UNSELECT OBJECTID
3.281 OK CAPABILITY completed

WROTE Aug 17 00:45:54.197 [kCFStreamSocketSecurityLevelTLSv1_2] -- host:imap.mail.yahoo.com -- port:993 -- socket:0x600000391c80 -- thread:0x6000035a3900 4.281 LOGOUT

No rate limiting apparent, capabilities just listed as requested. But still no new messages fetched, even though there are several messages in the inbox which have not been fetched.

From previous logs, it looks like Mail is supposed to ask a lot of follow-up questions, like SELECT INBOX, STATUS [subfolder names] and then get some answers that include the number of unfetched messages and so on – but this doesn’t happen. Even when there’s no rate limiting, Mail’s response to receiving the remote server’s capabilities is… to log out.

Is this normal, expected IMAP behaviour? If not, are there any clues in this to figure out what’s going on and why? Is there some way to fix it?

0 Answers0