Amazon Simple Email Service (SES) Set-Up
https://eu-west-1.console.aws.amazon.com/sns/home?region=eu-west-1 can be used to set up e-mail services. We have done this for the sapsailing.com domain which is verified and has the necessary Route53 DNS set-up for DKIM validation.
An IAM user can be generated with SES for SMTP authentication. The SMTP server is email-smtp.eu-west-1.amazonaws.com on port 25 which can be entered into the mail.properties file of servers. Authorization is required, and we "bake" the standard user's authorization into the /home/sailing/servers/server/configuration/mail.properties file in our AWS AMI images. The IAM user is arn:aws:iam::017363970217:user/ses-smtp-user.20190113-001356, and an API access key has been generated for it. The user's policy is restricted to e-mail sending only.
As of 2019-01-28 we have been removed from the SES sandbox and can now deliver e-mail also to addresses that have not been validated on SES before. Our current limits are 200,000 messages per day and 100 messages per second.
DNS entries for mails regarding DNS setup
- SPF record for zone
sapsailing.comwhich points to"v=spf1 mx ip4:54.229.94.254 -all" - MX record for zone
sapsailing.comwhich points to10 mail.sapsailing.com - CNAME record for zone
mail.sapsailing.comwhich points tosapsailing.com - Reverse DNS entry for IP
54.229.94.254pointing tosapsailing.comthrough AWS support case - DKIM keys: not done yet: DKIM keys
- DMARC keys: not done yet (and not really neccessary if smtp ports are closed)
Setup central mail server (instance "Webserver")
- you need to add the local subnet (which the instance which should relay) is in
- edit
/etc/postfix/main.cfand editmynetworks = x.y.z.w/vto match the subnet. Currently all subnets from VPC Ireland and US East are in here, this means adding an instance to existing subnets / zones will not require a change here - restart postfix with
service postfix restart - check the log if everything is working with
tailf /var/log/maillogSetup standalone instance for relaying
- edit
- on each Sailing App instance a local sendmail client will be running, which is in default using its own binaries to send out mails directly
- the problem here is, that external mail servers will check actually the domain "sapsailing.com" and its MX and A-Record. IF this does not match (it does not, because A/MX goes to central webserver) most correctly mailservers will deferr or even reject the incoming mail as it looks like hard spam
- to prevent this you need to relay mails send from any instance to the central postfix (with the correct A and MX records), so that other mail servers dont reject mails
- install package
sendmail-cfviayum install - edit the config
/etc/mail/sendmail.mcand insert the linedefine(`SMART_HOST', `smtp.internalsapsailing.com')dnl ``` and save - regenerate the sendmail config with `. /etc/mail/make` - restart sendmail with `service sendmail restart` - test the setup by tailing both `/var/log/maillog`'s and send a mail from the relayed instance via `echo "test" | sendmail yourmail@domain.tld` => all this shall be included to a next HVM version ## USSailing mail relaying - on server dev, there are two postfix processes running - main process is doing the normal relaying stuff as before - slave process is listening externally on port `1025` to accept sasl auth users for sending mails - add A-Record in Route53 and let point `uss.sapsailing.com` towards external IP of dev `52.17.217.83` - responding to incoming mails is not needed and will also not work on port 1025, as we _MUST_ use the standard 25 port then and create an corresponding MX-Record towards the A-Record - enable multi instance mode of postfix via - `postmulti -e init` - `postmulti -I postfix-ussailing -G outgoing -e create` - comment out the following lines in file `/etc/postfix-ussailing/main.cf` ``` #master_service_disable = inet #authorized_submit_users = ``` - change listen port of slave postfix to something other than 25 via `/etc/postfix-ussailing/master.cf` - `1025 inet n - n - - smtpd` - restart posfix via `/etc/init.d/postfix restart` - adjust configuration of slave postfix to allow sasl authenticated users to login - edit `/etc/postfix-ussailing/main.cf` and modify/add following lines - modify `myhostname = uss.sapsailing.com`, `mydomain = uss.sapsailing.com`, `myorigin = $mydomain`, `inet_interfaces = all` - go to the end of the config and set some parameters for authentication and alias lookup according to: ``` # SUPPORT FOR CLIENT LOGIN alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_use_tls = no broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains ``` - create a normal linux user via `useradd <name>` and give it a password via `passwd <user>` - create a destination alias where mails shall go (currently internally only, see above) to, if someone responds to the mail <name>@<myhostname> via `/etc/aliases` and add additional destination mails comma-seperatedUSSailing Mailing
uss: steffen.tobias.wagner@sap.com ```
- install package
-
testing the setup is possible via http://smtper.nanogenesis.fr
- sources
- http://steam.io/2013/11/05/postfix-multi-instance-configuration/
- http://sharadchhetri.com/2013/03/06/how-to-change-smtp-port-number-25-in-postfix/
- http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailclients.html
- https://www.df.eu/de/support/df-faq/cloudserver/anleitungen/smtp-authentifizierung-mit-postfix-debian/