1
Linux: Can't send emails out through Proofpoint on DigitalOcean
Problem reported by James North - 6/19/2024 at 8:44 PM
Resolved
Hi! I've been testing the Linux BETA for Smartermail for the past day on a DigitalOcean droplet with not that many system resources, but it seems to be working great regardless. I've managed to get a lot of it setup relatively quickly.

I have Automatic SSL certs setup and I can access webmail through HTTPS. I've also got IMAP/SMTP setup through TLS by Binding the ports using the same certificate as the hostname as a help article suggested. I also have Autodiscover setup and most of the other usual DNS settings.

I can get email; if I send an email from Gmail, I'll receive it after 5 minutes in Smartermail. I can connect Thunderbird up to my Smartermail instance and read all my emails.

The only thing I can't do is send emails.

I have a Proofpoint gateway setup and Smartermail was able to verify the connection so I saved the configuration. But that doesn't seem to be working properly.

I also wonder if DigitalOcean is blocking email from being sent.

I checked my /var/lib/smartermail/Logs/2024.06.20-delivery.log and found this:

03:17:16.558 [78912019] Added to SpamCheckQueue (1 queued; 0/30 processing)
03:17:16.558 [78912019] [SpamCheckQueue] Begin Processing. 03:17:16.561 [78912019] Blocked Sender Checks started. 03:17:16.569 Error in ScanLocal: System.Net.Sockets.SocketException (99): Cannot assign requested address at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ConnectAsync(Socket socket) at System.Net.Sockets.Socket.ConnectAsync(EndPoint remoteEP, CancellationToken cancellationToken) at System.Net.Sockets.Socket.ConnectAsync(EndPoint remoteEP) at nClam.ClamClient.CreateConnection(TcpClient clam) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/ClamClient.cs:line 189 at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at nClam.ClamClient.CreateConnection(TcpClient clam) at nClam.ClamClient.ExecuteClamCommandAsync(String command, CancellationToken cancellationToken, Func`3 additionalCommand) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/ClamClient.cs:line 91 at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at nClam.ClamClient.ExecuteClamCommandAsync(String command, CancellationToken cancellationToken, Func`3 additionalCommand) at nClam.ClamClient.SendAndScanFileAsync(Stream sourceStream, CancellationToken cancellationToken) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/ClamClient.cs:line 383 at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at nClam.ClamClient.SendAndScanFileAsync(Stream sourceStream, CancellationToken cancellationToken) at SmarterMail.MailService.Spam.Clam.SmClamClient.ScanLocal(CancellationToken token) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/SmClamClient.cs:line 160 at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at SmarterMail.MailService.Spam.Clam.SmClamClient.ScanLocal(CancellationToken token) at SmarterMail.MailService.Spam.Clam.SmClamClient.ScanFile(String filePath) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/SmClamClient.cs:line 79 at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at SmarterMail.MailService.Spam.Clam.SmClamClient.ScanFile(String filePath) at MailService.RelayServer.MessageQueue.SpamCheckQueueWorkSession.DoClamDCheck() in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/RelayServer/MessageQueue/SpamCheckQueueWorkSession.cs:line 752 at MailService.RelayServer.MessageQueue.SpamCheckQueueWorkSession.DoChecks() in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/RelayServer/MessageQueue/SpamCheckQueueWorkSession.cs:line 90 --- End of stack trace from previous location --- at nClam.ClamClient.CreateConnection(TcpClient clam) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/ClamClient.cs:line 189 at nClam.ClamClient.ExecuteClamCommandAsync(String command, CancellationToken cancellationToken, Func`3 additionalCommand) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/ClamClient.cs:line 91 at nClam.ClamClient.SendAndScanFileAsync(Stream sourceStream, CancellationToken cancellationToken) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/ClamClient.cs:line 383 at SmarterMail.MailService.Spam.Clam.SmClamClient.ScanLocal(CancellationToken token) in /build/SmarterMail/gitsrc/src/SmarterMail/MailService/Spam/Clam/SmClamClient.cs:line 160 03:17:16.569 [78912019] ClamD Checks error: Cannot assign requested address | error 03:17:16.569 [78912019] Spam Checks started. 03:17:16.569 [78912019] Spam Checks skipped: User authenticated 03:17:16.569 [78912019] Spam Checks completed. 03:17:16.569 [78912019] Removed from SpamCheckQueue (0 queued or processing) 03:17:22.578 [78912019] Added to RemoteDeliveryQueue (1 queued; 0/50 processing) 03:17:22.580 [78912019] [RemoteDeliveryQueue] Begin Processing. 03:17:22.580 [78912019] Sending remote mail from james@domainname.tld 03:17:42.590 [78912019] Error in getting recipient A records. Message: LookupA.Exception: Query 32014 => outbound-us1.ppe-hosted.com IN A on 170.xxx.xxx.xxx:53 timed out or is a transient error. 03:17:42.590 [78912019] ARecord count: '0' for domain 'outbound-us1.ppe-hosted.com' 03:17:42.590 [78912019] Failed to send to gateway outbound-us1.ppe-hosted.com using MX Lookups, error string: Failed to connect to the recipient's mail server. No DNS information was found for the 'outbound-us1.ppe-hosted.com' domain. Status: 544 5.4.4 Host not found (not in DNS). 03:17:42.591 [78912019] Removed from RemoteDeliveryQueue (0 queued or processing) 03:18:43.833 [78912019] Added to RemoteDeliveryQueue (1 queued; 0/50 processing) 03:18:43.833 [78912019] [RemoteDeliveryQueue] Begin Processing. 03:18:43.835 [78912019] Sending remote mail from EMAIL@DOMAIN.TLD
I've also found that my system journal gets this error roughly every half an hour:

Jun 20 13:36:16 smartermail-linux-beta MailService[26794]: Microsoft.AspNetCore.Server.Kestrel[0] Unhandled exception while processing 0HN4GP4ST3T9P. System.NullReferenceException: Object reference not set to an instance of an object.    at Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionMiddleware.ServerOptionsCallback(SslStream sslStream, SslClientHelloInfo clientHelloInfo, Object state, CancellationToken cancellationToken)    at System.Net.Security.SslStream.ReceiveHandshakeFrameAsync[TIOAdapter](CancellationToken cancellationToken)    at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken)    at Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionMiddleware.OnConnectionAsync(ConnectionContext context)    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1.ExecuteAsync()
It doesn't seem related, as the website seems to be functioning fine. As far as I know, Kestrel is the webserver Smartermail uses.

I've been impressed by Smartermail on Linux. This is essentially my first experience administering it, and it was pretty easy to setup. It has so many features! If I could just get SMTP working, I think it's all setup.

2 Replies

Reply to Thread
1
Sébastien Riccio Replied
Marked As Resolution
From your logs, it seems SM is not able to resolve the gateway hostname "outbound-us1.ppe-hosted.com".

What are your DNS servers set to ?
In both:
- Your Linux host: You should be able to check it with cat /etc/resolv.conf
- SmarterMail configuration (It should be in general settings)

Maybe set them temporarily to 1.1.1.1 and 8.8.8.8 and give it another try.

Also what target port are you using on the external gateway. Is it 25 or 587 with auth ?
As far as I know, by default, DigitalOcean blocks outgoing stuff to port 25. If you're using this target port you might need to ask them to unblock it for your instance or to use another port on the target gateway as 587 (submission port with auth).

Kind regards
Sébastien Riccio System & Network Admin https://swisscenter.com
1
James North Replied
Thanks for the response! I managed to get SMTP working thanks to your advice.

I had mistakenly configured the server's own IP address as the DNS IP Address in General Settings, so I changed it to Google's 8.8.8.8 and it then resolved the domain name properly.

At that point, it still wouldn't send email. I added a missing SPF record in my DNS registrar for Proofpoint as their help docs recommend, and that seemed to fix it.

I can now send emails out!

(DigitalOcean does block outgoing traffic on port 25 but the Proofpoint gateway uses Port 587, so that wasn't a problem. They did open port 25 when asked, though.)

Reply to Thread