wm: doc

ref: fc1c6f487806d788994ee51cd428b5495f776d8f
dir: /smtpd.ms/

View raw version
Copy /bin/service/!tcp25 to /bin/service/tcp25. You may need to make some changes.
.LP
Make sure to chmod +x /bin/service/tcp25 or else the mail server won't be able to start

.P1
; cat /bin/service/tcp25
#!/bin/rc
#smtp serv net incalldir user

user=`{cat /dev/user}
exec upas/smtpd -e -f -r -s -n $3
.P2

If you have a certificate you have generated using acmed, you can enable StartTLS
with -c:

.P1
exec upas/smtpd -c /sys/lib/tls/acmed/jrmu9.inter9.org.crt -e -f -r -s -n $3
.P2

.LP
Note: the -c argument currently has a bug where it does not send the full chain of
the TLS certificate, so email clients that connect to it may report a certificate
validation error.

.LP
Make sure to edit /mail/lib/smtpd.conf:
.P1
#
#	sample smtpd configuration options for inside connections
#

#
#	replace example.com with the name of your domain
#	replace 198.51.100.0 with the IP address range of your networks

defaultdomain		example.com
norelay			on	
verifysenderdom		off	#disable dns verification of sender domain
saveblockedmsg		off	#save blocked messages

#
# if norelay is on, you need to set the
# networks allowed to relay through 
# as well as the domains to accept mail for
#

ournets 198.51.100.0/24

ourdomains *.example.com

Copy /mail/lib/rewrite.direct to /mail/lib/rewrite, while replacing YOURDOMAIN.DOM with your actual domain name.

You will also want to edit /mail/lib/names.local for the users you want to handle mail for.

Make sure to replace yourdomain.dom in /mail/lib/remotemail to use your actual domain.

If you are logged in as a user other than the default hostowner (glenda), you will need to create the user's mailbox:

; upas/nedmail -c

.P2
.LP
See dkim.ms guide for enabling dkim. Make sure to add spf and dmarc records as indicated in ndb.ms guide.
To test sending an email:

.P1
; upasname=sender@example.com upas/marshal -s 'Alpha Bravo Charlie' recipient@example.org
.P2

Type a message, then a newline, then EOF.

If your email address is simply $user, you may be able to omit the upasname variable provided the domain is correctly configured elsewhere.