Lewati ke isi

instalasi mail server agar bisa ngirim email ke gmail

sudo apt update
sudo apt install opendkim opendkim-tools postfix

Perintah sudo apt update digunakan untuk memperbarui daftar paket atau package list yang ada di sistem operasi Ubuntu atau Debian. Hal ini penting untuk memastikan bahwa paket-paket yang akan diinstall nanti adalah yang terbaru dan terkini.

Sedangkan perintah sudo apt install opendkim opendkim-tools postfix digunakan untuk menginstall tiga program yaitu opendkim, opendkim-tools, dan postfix. Berikut penjelasan singkat mengenai ketiga program tersebut:

opendkim: program ini digunakan untuk mengimplementasikan DomainKeys Identified Mail (DKIM) pada server email. DKIM adalah mekanisme keamanan yang digunakan untuk memverifikasi keaslian email dan mengidentifikasi pemilik domain.

opendkim-tools: program ini merupakan paket alat-alat tambahan yang dibutuhkan untuk melakukan konfigurasi DKIM dengan lebih mudah.

postfix: program ini merupakan agen transfer email (MTA) atau Mail Transfer Agent yang digunakan untuk mengirimkan email dari satu server ke server email lainnya.

Dengan menginstall ketiga program ini, kita dapat membuat email server yang aman dan dapat digunakan untuk mengirim email ke server Google dan penyedia email lainnya. Namun, konfigurasi lebih lanjut masih diperlukan untuk membuat email server yang berfungsi dengan baik.

sudo usermod -G opendkim postfix

sudo mkdir -p /etc/opendkim/keys  sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod  744 /etc/opendkim/keys

Perintah sudo usermod -G opendkim postfix digunakan untuk menambahkan pengguna "postfix" ke grup "opendkim". Tujuan dari perintah ini adalah agar postfix dapat membaca kunci privat yang telah dibuat oleh opendkim.

Perintah sudo mkdir -p /etc/opendkim/keys digunakan untuk membuat direktori baru di dalam direktori "/etc/opendkim" dengan nama "keys". Direktori ini akan digunakan untuk menyimpan kunci-kunci DKIM yang dibuat oleh opendkim.

Perintah sudo chown -R opendkim:opendkim /etc/opendkim digunakan untuk mengubah pemilik dan grup dari direktori "/etc/opendkim" dan semua sub-direktorinya menjadi "opendkim:opendkim". Hal ini diperlukan agar opendkim dapat membuat dan mengakses file-file di dalam direktori tersebut.

Perintah sudo chmod 744 /etc/opendkim/keys digunakan untuk mengubah hak akses (permission) dari direktori "/etc/opendkim/keys" menjadi "rwxr--r--" atau "744". Hal ini diperlukan agar postfix dapat membaca kunci privat yang telah dibuat oleh opendkim.

sudo mkdir /etc/opendkim/keys/agungsurya.my.id
sudo opendkim-genkey -b 2048 -d agungsurya.my.id -D /etc/opendkim/keys/agungsurya.my.id -s default -v

Setelah konfigurasi postfix selesai dilakukan, langkah selanjutnya adalah membuat kunci DKIM menggunakan opendkim. Berikut adalah penjelasan mengenai perintah-perintah yang digunakan:

Perintah sudo mkdir /etc/opendkim/keys/agungsurya.my.id digunakan untuk membuat direktori baru dengan nama "agungsurya.my.id" di dalam direktori "/etc/opendkim/keys". Direktori ini akan digunakan untuk menyimpan kunci-kunci DKIM untuk domain "agungsurya.my.id".

Perintah sudo opendkim-genkey -b 2048 -d agungsurya.my.id -D /etc/opendkim/keys/agungsurya.my.id -s default -v digunakan untuk membuat kunci DKIM dengan panjang 2048 bit untuk domain "agungsurya.my.id". Parameter "-D" digunakan untuk menentukan direktori tempat kunci akan disimpan, sedangkan parameter "-s" digunakan untuk menentukan nama selector untuk kunci. Pada perintah di atas, selector yang digunakan adalah "default". Setelah perintah ini dijalankan, akan terbentuk dua file yaitu "default.private" dan "default.txt" di dalam direktori "/etc/opendkim/keys/agungsurya.my.id". File "default.private" berisi kunci privat, sedangkan file "default.txt" berisi informasi tentang kunci tersebut yang nantinya akan digunakan untuk konfigurasi DNS.

Dengan melakukan perintah-perintah tersebut, kita telah berhasil membuat kunci DKIM untuk domain "agungsurya.my.id" menggunakan opendkim. Selanjutnya, kita perlu mengkonfigurasi DNS untuk domain tersebut dan juga melakukan konfigurasi pada postfix agar dapat menggunakan kunci DKIM tersebut saat mengirimkan email.

sudo chown opendkim:opendkim /etc/opendkim/keys/agungsurya.my.id/default.private

sudo cat /etc/opendkim/keys/agungsurya.my.id/default.txt

Setelah kunci DKIM berhasil dibuat, kita perlu memberikan hak akses dan memeriksa informasi pada file kunci tersebut. Berikut adalah penjelasan mengenai perintah-perintah tersebut:

Perintah sudo chown opendkim:opendkim /etc/opendkim/keys/agungsurya.my.id/default.private digunakan untuk mengubah pemilik dan grup dari file "default.private" di dalam direktori "/etc/opendkim/keys/agungsurya.my.id" menjadi "opendkim:opendkim". Hal ini diperlukan agar opendkim dapat membaca kunci privat tersebut saat melakukan verifikasi DKIM pada email yang dikirimkan melalui postfix.

Perintah sudo cat /etc/opendkim/keys/agungsurya.my.id/default.txt digunakan untuk menampilkan isi file "default.txt" di dalam direktori "/etc/opendkim/keys/agungsurya.my.id". File ini berisi informasi tentang kunci DKIM yang telah dibuat, seperti nama domain, selector, dan kunci publik yang nantinya akan digunakan untuk konfigurasi DNS.

Dengan melakukan perintah-perintah tersebut, kita telah berhasil memberikan hak akses dan memeriksa informasi pada file kunci DKIM yang telah dibuat menggunakan opendkim. Selanjutnya, kita perlu melakukan konfigurasi DNS untuk domain yang akan menggunakan kunci DKIM tersebut dan juga melakukan konfigurasi pada postfix agar dapat menggunakan kunci DKIM tersebut saat mengirimkan email.

default._domainkey      IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
          "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwC/i/W8cVs5610MpSw1DmRWr5Dh7979SBpmSBpdzmKxyRr1S8hwapB2wWypouxS1RP3s9eEW9Oek2eKNAySZUvb6vQgUP+EK5sBuNe/bR4yvyc9pH9+eR2qvEmky4xksSNaS34F74ZUshwV1QSn8eG/5lTrxJD5TUv3/AymqsmOyT5ya9ga0smNtz+3yP9zAbMsGysnVFS2EQN"
          "9fIUc3S7tqpN9FJhcZG7DVfqcMNUDP7q+9cbu/i9UoFmRbuQW3em1JSGFnu0IwRfnmgPvH4dwjLL9DzXkC576RusuFiDjXzgOtTn/KOHUJ1MoF/vp52hwi+QZPPRfF3ILZbe/+0wIDAQAB" )  ; ----- DKIM key default for agungsurya.my.id

jadikan kurang lebih seperti ini hapus tanda petik tanda kurung cuma angka garis miring dan huruf dan tambah di dns

ini namanya dkim key

v=DKIM1;h=sha256;k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj+1TF4izMjawOcEOM7S3mjitwT55+dy9NMyg0eZn6stKeLwv7W0VrY6RBESMYWzmr9fUJ98AtpmMu2oRfrYt7WGdZT1sCD8uKyVE8IQeUTz6GhCNGrc5SuxSAR9OjzB5839g6FnFAHvdc4OYtCIGQ/fQ2DQkxW/QvlW3+NIrRAwt32uA/S15VyC4SDg19v8y4ZxwJYHa9bJZ7/neW7PTaB+Up7TJ1fv2Ln9J3nTEWBn6NUs/P5uxBqMcI2jCbGP3NFbvcfWU3Qq/h6afH4FI+12c6q6qRK3E8xd0FcvvTu18EzWGnIjnOLC7+QN/XuSuh7szEXRRxhxt8wRVHi/Z/QIDAQAB

jangan lupa juga tambahkan spf di dns anda contoh nya

ini namanya record spf

v=spf1 mx a ip4:103.76.129.90 ~all

jangan lupa tambahkan dmrac, ini hanya contoh dmrac

v=DMARC1;  p=none; rua=mailto:[email protected]
sudo opendkim-testkey -d agungsurya.my.id -s default -vvv

Perintah sudo opendkim-testkey -d agungsurya.my.id -s default -vvv digunakan untuk melakukan pengujian kunci DKIM yang telah dibuat dengan opendkim. Berikut adalah penjelasan mengenai parameter yang digunakan pada perintah tersebut:

Parameter -d agungsurya.my.id digunakan untuk menentukan domain yang akan diuji kuncinya.

Parameter -s default digunakan untuk menentukan selector yang akan diuji. Pada perintah sebelumnya, selector yang digunakan adalah "default".

Parameter -vvv digunakan untuk mengaktifkan mode verbose atau detail. Dengan mengaktifkan mode ini, kita dapat melihat informasi yang lebih lengkap mengenai proses pengujian kunci DKIM.

Setelah perintah dijalankan, opendkim akan mengambil kunci publik dari file "default.txt" di direktori "/etc/opendkim/keys/agungsurya.my.id", kemudian melakukan pengujian dengan menggunakan kunci publik tersebut. Jika kunci DKIM sudah berhasil diatur dengan benar, maka opendkim akan menampilkan pesan "key OK" dan menampilkan informasi detail mengenai kunci tersebut. Namun, jika terdapat masalah dengan konfigurasi kunci DKIM, opendkim akan menampilkan pesan error beserta informasi detail mengenai masalah tersebut. Dengan melakukan perintah ini, kita dapat memastikan bahwa kunci DKIM yang telah dibuat menggunakan opendkim sudah berfungsi dengan benar dan dapat digunakan untuk mengirim email melalui postfix

sudo nano /etc/opendkim.conf

Uncomment these values and configure as below:

Syslog                      yes
LogWhy                      yes

Canonicalization            relaxed/simple
Mode                        sv
SubDomains                  no
OversignHeaders             From

Now add the following values

AutoRestart         yes
AutoRestartRate     10/1M
Background          yes
DNSTimeout          5
SignatureAlgorithm  rsa-sha256

Next make sure that UserID is set to opendkim:

#Remember to add user postfix to group opendkim
UserID             opendkim

Now, append the following entries to the end of the file.

KeyTable            refile:/etc/opendkim/key.table
SigningTable        refile:/etc/opendkim/signing.table
ExternalIgnoreList  /etc/opendkim/trusted.hosts
InternalHosts       /etc/opendkim/trusted.hosts
sudo nano /etc/opendkim/signing.table

Perintah sudo nano /etc/opendkim/signing.table digunakan untuk membuka file "signing.table" di direktori "/etc/opendkim" menggunakan teks editor Nano. File ini digunakan untuk menentukan domain mana yang akan menggunakan kunci DKIM, selector yang digunakan, dan juga konfigurasi lainnya terkait dengan penggunaan kunci DKIM pada postfix. Pada file "signing.table", setiap baris terdiri dari tiga kolom yang dipisahkan oleh spasi atau tab, yaitu:

Kolom pertama berisi domain atau subdomain yang akan menggunakan kunci DKIM.

Kolom kedua berisi selector yang akan digunakan untuk kunci DKIM tersebut. Selector biasanya memiliki nama yang spesifik dan unik untuk setiap domain yang menggunakan kunci DKIM.

Kolom ketiga berisi "keytable:", yang menunjukkan path ke file keytable yang digunakan untuk kunci DKIM tersebut.

Dengan melakukan perintah tersebut, kita dapat membuka file "signing.table" menggunakan Nano dan melakukan konfigurasi domain yang akan menggunakan kunci DKIM pada postfix. Setelah melakukan konfigurasi pada file "signing.table", kita perlu melakukan konfigurasi lainnya pada postfix agar dapat menggunakan kunci DKIM tersebut saat mengirimkan email.

Add the following entries.

*@agungsurya.my.id    default._domainkey.agungsurya.my.id
*@*.agungsurya.my.id    default._domainkey.agungsurya.my.id
sudo nano /etc/opendkim/key.table

Perintah sudo nano /etc/opendkim/key.table digunakan untuk membuka file "key.table" di direktori "/etc/opendkim" menggunakan teks editor Nano. File ini digunakan untuk menentukan path ke file kunci privasi DKIM yang digunakan untuk setiap domain atau subdomain yang terdaftar pada file "signing.table". Pada file "key.table", setiap baris terdiri dari dua kolom yang dipisahkan oleh spasi atau tab, yaitu:

Kolom pertama berisi "default._domainkey" diikuti dengan domain atau subdomain yang terdaftar pada file "signing.table".

Kolom kedua berisi "domain.tld:default:/path/to/private/key", yang menunjukkan path ke file kunci privasi DKIM untuk domain atau subdomain yang terdaftar pada file "signing.table".

default._domainkey.agungsurya.my.id     agungsurya.my.id:default:/etc/opendkim/keys/agungsurya.my.id/default.private
sudo nano /etc/opendkim/trusted.hosts

Perintah sudo nano /etc/opendkim/trusted.hosts digunakan untuk membuka file "trusted.hosts" di direktori "/etc/opendkim" menggunakan teks editor Nano. File ini digunakan untuk menentukan host mana yang diizinkan untuk menggunakan kunci DKIM untuk domain atau subdomain yang terdaftar pada file "signing.table". Setiap host yang terdaftar pada file "trusted.hosts" dianggap aman dan diberi akses untuk menggunakan kunci DKIM pada postfix.

Pada file "trusted.hosts", setiap baris dapat berisi sebuah host, subnet, atau nama domain yang dipisahkan oleh spasi atau tab. Baris yang dimulai dengan "#" dianggap sebagai komentar dan akan diabaikan oleh sistem.

127.0.0.1
localhost

.agungsurya.my.id
sudo systemctl restart opendkim
sudo mkdir /var/spool/postfix/opendkim
sudo chown opendkim:postfix /var/spool/postfix/opendkim
sudo nano /etc/opendkim.conf

Search for the Socket entry and update it as following:

Socket    local:/var/spool/postfix/opendkim/opendkim.sock
sudo nano /etc/default/opendkim

And set the SOCKET entry as below:

SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"
sudo nano /etc/postfix/main.cf

Add the following lines at the end of this file, so Postfix will be able to call OpenDKIM via the milter protocol.

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
sudo systemctl restart opendkim
sudo systemctl restart postfix

penalaran menarik

https://www.linuxbabe.com/mail-server/how-to-stop-your-emails-being-marked-as-spam

catatan pribadi

docker run --name mail-server --entrypoint /bin/sh -itd agungsurya/bot-statuscode:agungsurya-mail-server

mutt -e 'set [email protected]' -s "testing email" [email protected]

mutt -S 10.0.0.155 -e 'set [email protected]' -s "Subject email" [email protected]

opendkim.conf

# This is a basic configuration for signing and verifying. It can easily be
# adapted to suit a basic installation. See opendkim.conf(5) and
# /usr/share/doc/opendkim/examples/opendkim.conf.sample for complete
# documentation of available configuration parameters.

Syslog                  yes
SyslogSuccess           yes
LogWhy                  yes

# Common signing and verification parameters. In Debian, the "From" header is
# oversigned, because it is often the identity key used by reputation systems
# and thus somewhat security sensitive.
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              no
OversignHeaders         From


AutoRestart         yes
AutoRestartRate     10/1M
Background          yes
DNSTimeout          5
SignatureAlgorithm  rsa-sha256
# Signing domain, selector, and key (required). For example, perform signing
# for domain "example.com" with selector "2020" (2020._domainkey.example.com),
# using the private key stored in /etc/dkimkeys/example.private. More granular
# setup options can be found in /usr/share/doc/opendkim/README.opendkim.
#Domain                 example.com
#Selector               2020
#KeyFile                /etc/dkimkeys/example.private

# In Debian, opendkim runs as user "opendkim". A umask of 007 is required when
# using a local socket with MTAs that access the socket as a non-privileged
# user (for example, Postfix). You may need to add user "postfix" to group
# "opendkim" in that case.
UserID                  opendkim
UMask                   007

# Socket for the MTA connection (required). If the MTA is inside a chroot jail,
# it must be ensured that the socket is accessible. In Debian, Postfix runs in
# a chroot in /var/spool/postfix, therefore a Unix socket would have to be
# configured as shown on the last line below.
Socket    local:/var/spool/postfix/opendkim/opendkim.sock
#Socket                 local:/run/opendkim/opendkim.sock
#Socket                 inet:8891@localhost
#Socket                 inet:8891
#Socket                 local:/var/spool/postfix/opendkim/opendkim.sock

PidFile                 /run/opendkim/opendkim.pid

# Hosts for which to sign rather than verify, default is 127.0.0.1. See the
# OPERATION section of opendkim(8) for more information.
#InternalHosts          192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12

# The trust anchor enables DNSSEC. In Debian, the trust anchor file is provided
# by the package dns-root-data.
TrustAnchorFile         /usr/share/dns/root.key
#Nameservers            127.0.0.1

KeyTable            refile:/etc/opendkim/key.table
SigningTable        refile:/etc/opendkim/signing.table
ExternalIgnoreList  /etc/opendkim/trusted.hosts
InternalHosts       /etc/opendkim/trusted.hosts
agungsurya@hexadecimal:/etc/postfix$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 agungsurya.my.id ESMTP Postfix (Ubuntu)
ehlo agungsurya.my.id
250-agungsurya.my.id
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: ini adalah subjek email Anda
.
250 2.0.0 Ok: queued as EF3748B4E
QUIT
221 2.0.0 Bye
Connection closed by foreign host.