Archive for the ‘linux’ tag
Install Postfix on Ubuntu
Install Postfix
Postfix will be your mail server. Install it by simply typing into shell:
sudo apt-get install postfix
Install TLS Encryption
You’d want to encrypt your outgoing mail. Issue the following commands (this is an excerpt from ubuntu site):
touch smtpd.key chmod 600 smtpd.key openssl genrsa 1024 > smtpd.key openssl req -new -key smtpd.key -x509 -days 3650 -out smtpd.crt # has prompts openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 # has prompts sudo mv smtpd.key /etc/ssl/private/ sudo mv smtpd.crt /etc/ssl/certs/ sudo mv cakey.pem /etc/ssl/private/ sudo mv cacert.pem /etc/ssl/certs/ sudo postconf -e 'smtp_tls_security_level = may' sudo postconf -e 'smtpd_tls_security_level = may' sudo postconf -e 'smtpd_tls_auth_only = no' sudo postconf -e 'smtp_tls_note_starttls_offer = yes' sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key' sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt' sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem' sudo postconf -e 'smtpd_tls_loglevel = 1' sudo postconf -e 'smtpd_tls_received_header = yes' sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s' sudo postconf -e 'tls_random_source = dev:/dev/urandom' sudo postconf -e 'myhostname = server1.example.com' # remember to change this to yours
In the last command, make sure you replace server1.example.com with your domain name.
If you have multiple domain names, add them to /etc/postfix/main.cf under
mydestination = domain1.com, domain2.com, domain3.com
Install DKIM for Postfix
Before you begin, make sure you’ve installed Postfix as your smtp server as your first step.
This guide is based on Ubuntu guide and someone’s answer on Serverfault.
sudo aptitude install dkim-filter
Open up /etc/dkim-filter.conf and edit it so that it’s like below:
# Log to syslog Syslog yes # Required to use local socket with MTAs that access the socket as a non- # privileged user (e.g. Postfix) #UMask 002 # dkim-milter (2.5.2.dfsg-1ubuntu1) hardy: # Disable new umask option by default (not needed since Ubuntu default # uses a TCP socket instead of a Unix socket). # Attempt to become the specified userid before starting operations. #UserID 105 # 'id postfix' in your shell # Sign for example.com with key in /etc/mail/dkim.key using # selector '2007' (e.g. 2007._domainkey.example.com) # Domain won't really matter because that will be specified in the KeyList file Domain yourdomain.com #KeyFile /etc/mail/dkim.key # See bellow how to generate and set up the key Selector mail # Common settings. See dkim-filter.conf(5) for more information. AutoRestart yes Background yes Canonicalization simple DNSTimeout 5 Mode sv SignatureAlgorithm rsa-sha256 SubDomains no #UseASPDiscard no #Version rfc4871 X-Header no #InternalHosts /etc/mail/dkim-InternalHosts.txt # The contents of /etc/mail/dkim-InternalHosts.txt should be # 127.0.0.1/8 # 192.168.1.0/24 # other.internal.host.domain.tld # You need InternalHosts if you are signing e-mails on a gateway mail server # for each of the computers on your LAN. ############################################### # Other (less-standard) configuration options # ############################################### # # If enabled, log verification stats here Statistics /var/log/dkim-filter/dkim-stats # # KeyList is a file containing tuples of key information. Requires # KeyFile to be unset. Each line of the file should be of the format: # sender glob:signing domain:signing key file # Blank lines and lines beginning with # are ignored. Selector will be # derived from the key's filename. KeyList /etc/mail/mail # # If enabled, will generate verification failure reports for any messages # that fail signature verification. These will be sent to the r= address # in the policy record, if any. #ReportInfo yes # # If enabled, will issue a Sendmail QUARANTINE for any messages that fail # signature verification, allowing them to be inspected later. #Quarantine yes # # If enabled, will check for required headers when processing messages. # At a minimum, that means From: and Date: will be required. Messages not # containing the required headers will not be signed or verified, but will # be passed through #RequiredHeaders yes
Add the following lines to /etc/postfix/main.cf
# DKIM milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:8891 non_smtpd_milters = inet:localhost:8891
Create the public and private keys with these lines
openssl genrsa -out private.key 1024 openssl rsa -in private.key -out public.key -pubout -outform PEM cp private.key /etc/mail/mail
Add a TXT record to your DNS like so
mail._domainkey.yourdomain.com. IN TXT "k=rsa; t=y; p=yourpubkey"
Where yourdomain.com is the domain you want to authenticate against, and yourpubkey is the contents of public.key WITHOUT the
-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----
Create a new file called /etc/mail/dkim_domains.key and put into it
*:yourdomain.com:/etc/mail/mail
Then restart dkimfilter and postfix with
> /etc/init.d/dkim-filter restart
> /etc/init.d/postfix restart
Now you’re done install postfix dkim
Other useful resources: