Solved: in case it helps anyone I found a solution on Reddit and it works.
In short, while manually adding a new account to your client for email@domain.com you need to still use your @icloud.com credentials as a username for IMAP and SMTP.
For Spark, when setting up the account:
- do not chose iCloud as the “account type”. Choose “setup manually”.
- On the next screen, Select “advanced settings” .
- For email, use your custom domain email address (it will be something@yourcustom.domain) - this DOES NOT end in icloud.com.
- For imap username, use your primary icloud username. your primary icloud email always will be of the format foobar@icloud.com (this DOES ALWAYS end in icloud.com); hence your primary icloud username is “foobar” (without the icloud.com).
- Password is an app-specific password that you already created .
- Server, port and security are standard (imap.mail.me.com, 993 and SSL) .
- For smtp username, its not the same as 4. just to keep things interesting, this time it will be foobar@icloud.com. (With the icloud.com).
- For smtp password, its same as what you used in step 5 .
- Server, port and security are smtp.mail.me.com, 587 and STARTTLS respectively Press login.
- Hurray you have DKIM configured.
Originally posted on Reddit by determined_warrior