Bazı VPS sağlayıcılarının spam e-posta gönderimine karşı olarak mail gönderim portlarını ön tanımlı olarak kapattıklarını hatırlatayım, yani abi ben kurdum ama e-posta gönderip alamıyorum diyorsanız sağlayıcınız ile ilgilidir ve destek ile iletişime geçmeniz gerekmektedir.
Engelleme olmayan bir sağlayıcı arıyorsanız, bakacağınız adres https://www.ilkbyte.com/ olmalı.
Bu makalede, sistemde yer alacak olan mail
komutuyla programatik olarak posta gönderebileceğimiz basit bir Postfix sunucusu kuracağız. Gerçek ve tam işlevsel bir posta sunucusuna sahip olmak için kullanıcıların gelen kutularını okuyup uzaktan posta gönderebilecekleri bir posta istemcisine giriş yapabilmeleri gerekiyor.
Bu amaca ulaşmak için bizim Dovecot’a ihtiyacımız var. Dovecot, sunucu tarafından alınan postaları depolayabilir, kullanıcı hesaplarını doğrulayabilir ve postayla etkileşim kurabilir.
Eğer bir gelen kutusu kuruyorsak, spam koruma yazılımı olan spamassassin gibi bir yazılımı da kuracağız böylece spam e-postalarda gelmeyecek.
apt install mailutils postfix dovecot-imapd dovecot-sieve spamassassin spamc
ShellScriptKurulum tamamlandıktan sonra e-posta için kullanılacak alt alan adı için SSL ayarlanacak isterseniz Acme.sh ile Ücretsiz SSL Sertifikası Nasıl Alınır ile isterseniz de Let’s Encrypt ile Web Server Yapılandırma ile bu işi kolayca yapabilir.
Ayrıca, alan adınızı nereden aldıysanız artık onun sitesinden ve/veya DNS sunucusunda iki küçük DNS kaydına ihtiyacımız var;
- Bir MX kaydı, “@” için ekleme yapın, örneğin mertcangokgoz.com olarak tanımlayın.
- Bir CNAME kaydı, Ana bilgisayar alanı: mail.example.org.
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.org/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.org/privkey.pem
ssl_min_protocol = TLSv1.2
ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED
ssl_prefer_server_ciphers = yes
ssl_dh = </usr/share/dovecot/dh.pem
auth_mechanisms = plain login
auth_username_format = %n
protocols = $protocols imap
userdb {
driver = passwd
}
passdb {
driver = pam
}
mail_location = maildir:~/Mail:INBOX=~/Mail/Inbox:LAYOUT=fs
namespace inbox {
inbox = yes
mailbox Drafts {
special_use = \Drafts
auto = subscribe
}
mailbox Junk {
special_use = \Junk
auto = subscribe
autoexpunge = 30d
}
mailbox Sent {
special_use = \Sent
auto = subscribe
}
mailbox Trash {
special_use = \Trash
}
mailbox Archive {
special_use = \Archive
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
protocol lda {
mail_plugins = \$mail_plugins sieve
}
protocol lmtp {
mail_plugins = \$mail_plugins sieve
}
plugin {
sieve = ~/.dovecot.sieve
sieve_default = /var/lib/dovecot/sieve/default.sieve
sieve_dir = ~/.sieve
sieve_global_dir = /var/lib/dovecot/sieve/
}
ShellScriptHemen ardından spamlar için /var/lib/dovecot/sieve/default.sieve
içerisine bir yapılandırma uygulayalım.
echo "require [\"fileinto\", \"mailbox\"];
if header :contains \"X-Spam-Flag\" \"YES\"
{
fileinto \"Junk\";
}"
ShellScriptBu işlemden sonra, e-postalara erişecek olan kullanıcıyı ve buna bağlı grubu oluşturmalıyız ardından sieve yapılandırmasını güncellemeliyiz.
grep -q '^vmail:' /etc/passwd || useradd vmail
chown -R vmail:vmail /var/lib/dovecot
sievec /var/lib/dovecot/sieve/default.sieve
ShellScriptDaha sonra, Dovecot için pam kimlik doğrulamayı etkinleştirmemiz gerekiyor.
echo "auth required pam_unix.so nullok
account required pam_unix.so" >> /etc/pam.d/dovecot
ShellScriptPostfix’e kullanıcıların/parolaların kimlik doğrulaması için Dovecot’a bakmasını söylememiz gerekiyor /var/spool/postfix/private/auth
içerisine aşağıdaki değişikliği uygulayın.
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'mailbox_command = /usr/lib/dovecot/deliver'
ShellScriptPostfix’in posta akışını spamassassin üzerinden yönlendirebilmesi için /etc/postfix/master.cf
dosyasını değiştireceğiz. Varsayılan yapılandırmayı kullanmayacağız silin gitsin ve aşağıdaki komutu çalıştırın.
echo "smtp unix - - n - - smtp
smtp inet n - y - - smtpd
-o content_filter=spamassassin
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f \${sender} \${recipient}" >> /etc/postfix/master.cf
ShellScriptİşlem tamam, geleneksel yöntem ile mail sunucunuz hazır, bu işlemler neticesinde sunucunuz üzerinden e-posta gönderebilirsiniz. Çok az sayıda e-posta atıyorsanız işinize oldukça yarar, diğer amaçlar için kullanılmasını önermem.