{{tag>mail dkim}} ====== DKIM keys via amavis ====== ===== Generate new private/public key pair ===== ==== Manual ==== amavisd-new genrsa /var/lib/amavis/example.key.pem 1024 openssl rsa -in example.key.pem -out /var/lib/amavis/example.key.pem.public -pubout -outform PEM === Create new configuration === vi /etc/amavis/conf.d/60-dkim add $enable_dkim_verification = 1; $enable_dkim_signing = 1; dkim_key('example.com', 'mail1550766080', '/var/lib/amavis/example.key.pem'); @dkim_signature_options_bysender_maps = ( { '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } ); @mynetworks = qw(0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16); === List public keys === amavisd-new showkeys ... ; key#2 1024 bits, i=mail1550766080, d=example.com, /var/lib/amavis/example.key.pem mail1550766080._domainkey.example.com. 3600 TXT ( "v=DKIM1; p=" "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUwuIBMBsfo1uMwM8baCLy3VMw" "Iv1lhIfUq6r2ZhSEySmFpJt0QEDl2JxId/0nHUD9kqaeQIOh+BvMYfQbJypltvJw" "BcXhDeC0JmCv39/PXQGKPunoJXB27iDkrz8RQNVH1eJaSjT033PTa1cb8orPNHRN" "s3tjCMzu6eonaFWKmQIDAQAB") and copy it into DNS zone. ==== Via ISPconfig web UI ==== Under //Email > choose domain > DomainKeys Identified Mail (DKIM)// you can generate the keys. Don't add the public key via ISP config web ui (DNS > Records) because the input form will truncate it if the key has 2048 bits. Instead add it directly on the server in ///etc/bind// zone file, e.g. ... example.com. 86400 TXT "v=spf1 a mx ip4:138.201.137.220 -all" example.com. 3600 TXT "google-site-verification=Vd9dD-9pxxxxxxxxxxxxxxxxxxxx-bdxxxxx" example.com. 3600 TXT "MS=ms20857300" mail1550766080._domainkey.example.com. 3600 TXT "v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUwuIBMBsfo1uMwM8baCLy3VMwIv1lhIfUq6r2ZhSEySmFpJt0QEDl2JxId/0nHUD9kqaeQIOh+BvMYfQbJypltvJwBcXhDeC0JmCv39/PXQGKPunoJXB27iDkrz8RQNVH1eJaSjT033PTa1cb8orPNHRNs3tjCMzu6eonaFWKmQIDAQAB" If the key is generated vi ISCconfig it is automatically added. ===== Check if the key is added ===== amavisd-new testkeys TESTING#1 example.org: example._domainkey.example.org => pass TESTING#2 example.com: mail._domainkey.example.com => pass ===== Add new conf file ===== vi /etc/amavis/conf.d/70-policy_bank with content # policy bank to have mails DKIM signed $policy_bank{'ORIGINATING'} = { # indicates client is ours, allows signing originating => 1, # force MTA to convert mail to 7-bit before DKIM signing # to avoid later conversions which could destroy signature: smtpd_discard_ehlo_keywords => ['8BITMIME'], # forward to a smtpd service providing DKIM signing service # (if using a signing milter instead of signing by amavisd): forward_method => 'smtp:[127.0.0.1]:10025', virus_admin_maps => ["virusalert\@$mydomain"], spam_admin_maps => ["spamalert\@$mydomain"], }; # Use ORIGINATING policy to enable DKIM signing $interface_policy{'10024'} = 'ORIGINATING'; ===== Restart amavis ===== service amavis restart ===== Test ===== https://dkimvalidator.com https://www.unlocktheinbox.com (send mail to mailtest@unlocktheinbox.com) ====== Tested on ====== * Debianu Jessie 8.7 * ISP config 3.1.1p1 ====== See also ====== * [[wiki:send_test_email_server|Send test email from server]] * [[wiki:send_test_email_via_php|Send test email via php]] ====== References ====== * https://www.faqforge.com/linux/how-to-enable-dkim-email-signatures-in-amavisd-new-and-ispconfig-3/ * https://www.linuxquestions.org/questions/linux-server-73/how-to-dkim-sign-emails-by-amavisd-new-839526/page2.html * https://serverfault.com/questions/255580/how-do-i-enter-a-strong-long-dkim-key-into-dns