My MX, SPF and DKIM related settings were
example.com.au. IN MX 10 mx.zoho.com.au.
example.com.au. IN MX 20 mx2.zoho.com.au.
example.com.au. IN MX 50 mx3.zoho.com.au.
example.com.au. IN TXT "v=spf1 include:zohomail.com.au a mx a:example.com.au ip4:103.xx.xx.xxx ip4:103.xx.xx.xxx ?all"
zmail._domainkey.example.com.au. IN TXT "v=DKIM1; k=.. ; zoho DKIMN
202410._domainkey.example.com.au. IN TXT ( "v=DKIM1; k=.. ; server DKIM
mxtoolbox reports for both DKIM records:
||DKIM Record Published | DKIM Record found|
DKIM Syntax Check |The record is valid|
DKIM Public Key Check | Public key is present|
Setting MX records in DNS for Google Workspace or Zoho email in Virtualmin DNS settings results in Virtualmin informing me that this domain has email enabled / to disable email feature if email is hosted externally.
As per Virtualmin instructions, I disabled email, tested sending emails via zoho for the domain (worked) and sent to the domain (worked) with access via zoho. I then tested email from the server with a little test script. No email was received from this test script, I assume because literally Virtualmin disabled emails from the Virtualmin server.
This thread: VPS + Virtualmin + Google Apps: Mail appears most relevant to what I asked, however it’s dated and might no longer be best practice.
[edit: yeah, nah. still not sending from test script]
[edit: snippet from /var/log/maillog when trying test email from server, one to info@example.com, the other to a gmail account]
Sent to same domain address (info@example.com.au)
Nov 30 02:44:23 hostname postfix/pickup[349927]: BA49AE00370F: uid=1000 from=<example>
Nov 30 02:44:23 hostname postfix/cleanup[350949]: BA49AE00370F: message-id=<20241130024423.BA49AE00370F@hostname.example.com.au>
Nov 30 02:44:23 hostname opendkim[343664]: BA49AE00370F: no signing domain match for 'example.com.au'
Nov 30 02:44:23 hostname opendkim[343664]: BA49AE00370F: no signing subdomain match for 'example.com.au'
Nov 30 02:44:23 hostname opendkim[343664]: BA49AE00370F: no signature data
Nov 30 02:44:23 hostname postfix/qmgr[111801]: BA49AE00370F: from=<example@hostname.example.com.au>, size=421, nrcpt=1 (queue active)
Nov 30 02:44:53 hostname postfix/smtp[350624]: connect to mx.zoho.com.au[103.138.128.141]:25: Connection timed out
Nov 30 02:45:23 hostname postfix/smtp[350624]: connect to mx2.zoho.com.au[103.91.166.141]:25: Connection timed out
Nov 30 02:45:53 hostname postfix/smtp[350624]: connect to mx3.zoho.com.au[103.138.128.141]:25: Connection timed out
Nov 30 02:45:53 hostname postfix/smtp[350624]: BA49AE00370F: to=<info@example.com.au>, relay=none, delay=90, delays=0.05/0/90/0, dsn=4.4.1, status=deferred (connect to mx3.zoho.com.au[103.138.128.141]:25: Connection timed out)
Nov 30 02:48:06 hostname postfix/qmgr[111801]: AFC03E00370E: from=<example@hostname.example.com.au>, size=421, nrcpt=1 (queue active)
Nov 30 02:48:37 hostname postfix/smtp[351652]: connect to mx.zoho.com.au[103.138.128.141]:25: Connection timed out
Nov 30 02:49:07 hostname postfix/smtp[351652]: connect to mx2.zoho.com.au[103.91.166.141]:25: Connection timed out
Nov 30 02:49:37 hostname postfix/smtp[351652]: connect to mx3.zoho.com.au[103.138.128.141]:25: Connection timed out
Nov 30 02:49:37 hostname postfix/smtp[351652]: AFC03E00370E: to=<info@example.com.au>, relay=none, delay=1658, delays=1568/0.03/90/0, dsn=4.4.1, status=deferred (connect to mx3.zoho.com.au[103.138.128.141]:25: Connection timed out)
Sent to a gmail account
Nov 30 02:50:53 hostname postfix/pickup[349927]: 21924E003710: uid=1000 from=<example>
Nov 30 02:50:53 hostname postfix/cleanup[352397]: 21924E003710: message-id=<20241130025053.21924E003710@hostname.example.com.au>
Nov 30 02:50:53 hostname opendkim[343664]: 21924E003710: no signing domain match for 'example.com.au'
Nov 30 02:50:53 hostname opendkim[343664]: 21924E003710: no signing subdomain match for 'example.com.au'
Nov 30 02:50:53 hostname opendkim[343664]: 21924E003710: no signature data
Nov 30 02:50:53 hostname postfix/qmgr[111801]: 21924E003710: from=<example@hostname.example.com.au>, size=424, nrcpt=1 (queue active)
Nov 30 02:51:23 hostname postfix/smtp[351652]: connect to gmail-smtp-in.l.google.com[74.125.200.26]:25: Connection timed out
Nov 30 02:51:23 hostname postfix/smtp[351652]: connect to gmail-smtp-in.l.google.com[2404:6800:4003:c04::1a]:25: Network is unreachable
Nov 30 02:51:53 hostname postfix/smtp[351652]: connect to alt1.gmail-smtp-in.l.google.com[173.194.202.27]:25: Connection timed out
Nov 30 02:51:53 hostname postfix/smtp[351652]: connect to alt1.gmail-smtp-in.l.google.com[2607:f8b0:400e:c00::1a]:25: Network is unreachable
Nov 30 02:52:23 hostname postfix/smtp[351652]: connect to alt2.gmail-smtp-in.l.google.com[142.251.2.26]:25: Connection timed out
Nov 30 02:52:23 hostname postfix/smtp[351652]: 21924E003710: to=<user.name@gmail.com>, relay=none, delay=90, delays=0.05/0/90/0, dsn=4.4.1, status=deferred (connect to alt2.gmail-smtp-in.l.google.com[142.251.2.26]:25: Connection timed out)