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.