DocFraggle I use SpamHero for inbound and outbound mail. I do not have a Static Public IP and am not able to send or receive without a relay. I have MX records setup in my domain that points to SpamHero domains and there is an SMTP service that can be setup too under my plan. I only allow specified SpamHero IP’s through my firewall for incoming. I don’t have to open up ports for outgoing as I use SpamHero’s smtp server smtp.mxthunder.net with the generated username and password in that portal. When I am setting up email clients (Thunderbird, Android mail, Nextcloud Mail etc), I have to manually add the SpamHero SMTP server details in order to successfully connect. My messages are DKIM signed by SpamHero - I also had to setup DKIM records for SpamHero in my domain for dkim signing outgoing messages through SpamHero. The autodiscover for Mailcow currently autofills parameters based on mailcow user information which is fine for IMAP.
I will continue to direct users to manually input the SMTP server parameters when connecting their clients if this is not feasible to adjust the autodiscover parameters within mailcow.