Buat Email Server di FreeBSD: OpenSMTPD

Kontribusi oleh al1r4d pada
dari kategori #freebsd dan label #opensmtpd

Jadi gini, dari dulu pingin bisa self-hosted email pakai domain sendiri karena penasaran plus bosen nama panjang dengan provider email kebanyakan. Orang bilang sih self-hosted email ribet; banyak hal–spam, email masuk spam–yang harus dipahami.

Tapi gapapa, hobi ini bersifat senang-senang. Segala sesuatu bakal dilewati, terlepas mudah dan gampang.

Ok, dalam membuat email server, saya akan menggunakan opensmtpd sebagai smtp server.

Langsung aja unduh paket opensmtpd lewat pkg.

# pkg install opensmtpd

Jangan lupa certbot untuk dapetin SSL Lets Encrypt gratis.

# pkg install py39-certbot

Sebelum mulai setup opensmtpd, pastiin kita punya SSL. Kalau belum, generate aja dulu. Pakein standalone karena kita ga punya web server.

# certbot certonly --standalone -d domain.com

Sekarang langsung deh buat konfigurasi untuk opensmtpd.

table aliases file:/etc/mail/aliases
table domains file:/etc/mail/domains

# bagian ini khusus SSL
pki domain.com key "/usr/local/etc/letsencrypt/live/domain.com/privkey.pem"
pki domain.com cert "/usr/local/etc/letsencrypt/live/domain.com/fullchain.pem"

# ini sudah masuk bagian kredential akun. jadi harus login dulu baru bisa kirim email.
# kalau kamu ngalamin ndak bisa login, meskipun username dan password sudah bener, bisa jadi bagian ini ada yang salah
listen on vtnet0 tls pki domain.com auth-optional
listen on vtnet0 smtps pki domain.com auth
listen on vtnet0 port submission tls-require pki domain.com auth

action "local" maildir alias <aliases>
action "relay" relay helo domain.com

match from local for local action "local"
match from any for domain <domains> action "local"
match from any auth for any action "relay"

tambahin domain yang mau dipakai sebagai email

# vim /etc/mail/domains
---
domain.com

jalanin layanan smtpd secara otomatis.

# sysrc smtpd_enable=YES
# service smtpd start

kita check apakah smtpd berjalan atau tidak

# service smtpd status
smtpd is running as pid 4755.

bagaimana tahu smtp kita bekerja? kamu bisa check pakai openssl seperti ini.

$ openssl s_client -starttls smtp -connect domain.com:587
Connecting to 80.xx.xxx.xx
CONNECTED(00000003)
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
depth=1 C=US, O=Let's Encrypt, CN=E5
verify return:1
depth=0 CN=domain.com
verify return:1