メールサーバの役割として送信メールサーバ、受信メールサーバがあります。
送受信するメールの中身にウイルスが含まれていた場合はclamdにて
ウイルス判定するため、clamsmtpを使用します。(定義ファイルに無いウイルスは判定できませんが対策は実施します。)
送信メールサーバはPostfixを使用します。
受信メールサーバはDovecotを使用します。
送信メールサーバの仕様
メールサーバ宛の通信はTCP 25
クライアントソフトからの通信はsubmissionport TCP 587,submissionport STARTTLS TCP 587,SSL/TLS TCP 465
受信メールサーバの仕様
クライアントソフトからの通信はPOP3 TCP 110,POP3s TCP 995,IMAP4 TCP 143,IMAP4s TCP 993
メール送受信のユーザ認証のユーザ名、パスワードはログインIDと同じものを使用する。
目次
/etc/postfix/main.cfを編集します。
myhostname = [ホスト名] mydomain = [ドメイン名] inet_protocols = ipv4 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 127.0.0.0/8, [::1] alias_maps = hash:/etc/aliases home_mailbox = Maildir/ smtpd_helo_restrictions = reject_invalid_hostname reject_non_fqdn_hostname smtpd_sender_restrictions = reject_unknown_sender_domain reject_non_fqdn_sender check_sender_mx_access hash:$config_directory/reject_mx smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_recipient_domain reject_unauth_destination check_client_access regexp:$config_directory/white-list.txt check_client_access regexp:$config_directory/permit_client_nots25r reject_unknown_client permit allow_mail_to_commands = alias,forward,include smtpd_recipient_limit = 12000 unknown_address_reject_code = 550 strict_rfc821_envelopes = yes smtpd_helo_required = yes smtpd_error_sleep_time = 25s message_size_limit = 20480000 smtpd_sasl_local_domain = [ドメイン名] broken_sasl_auth_clients = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_tls_CAfile = /etc/letsencrypt/live/[証明書取得したドメイン名]/chain.pem smtpd_tls_cert_file = /etc/letsencrypt/live/[証明書取得したドメイン名]/cert.pem smtpd_tls_key_file = /etc/letsencrypt/live/[証明書取得したドメイン名]/privkey.pem smtpd_use_tls = yes delay_warning_time = 6h bounce_template_file = $config_directory/bounce.cf smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3 disable_vrfy_command = yes smtpd_client_message_rate_limit = 10 content_filter = scan:127.0.0.1:10025 receive_override_options = no_address_mappings mailbox_size_limit = 102400000 virtual_mailbox_limit = 102400000 /etc/postfix/master.cfの編集 submission inet n – n – – smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_helo_restrictions= smtps inet n – n – – smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_helo_restrictions= maildrop unix – n n – – pipe flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} old-cyrus unix – n n – – pipe flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user} cyrus unix – n n – – pipe user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user} uucp unix – n n – – pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender – $nexthop!rmail ($recipient) ifmail unix – n n – – pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix – n n – – pipe flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient # AV scan filter (used by content_filter) scan unix – – n – 16 smtp -o smtp_send_xforward_command=yes # For injecting mail back into postfix from the filter 127.0.0.1:10026 inet n – n – 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xforward_hosts=127.0.0.0/8
etc/postfix/master.cfを編集します。
submission inet n – n – – smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_helo_restrictions= smtps inet n – n – – smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_helo_restrictions= maildrop unix – n n – – pipe flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} old-cyrus unix – n n – – pipe flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user} cyrus unix – n n – – pipe user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user} uucp unix – n n – – pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender – $nexthop!rmail ($recipient) ifmail unix – n n – – pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix – n n – – pipe flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient # AV scan filter (used by content_filter) scan unix – – n – 16 smtp -o smtp_send_xforward_command=yes # For injecting mail back into postfix from the filter 127.0.0.1:10026 inet n – n – 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xforward_hosts=127.0.0.0/8
/etc/dovecot/conf.d/10-auth.confを編集します。
disable_plaintext_auth = yes
auth_mechanisms = plain login
/etc/dovecot/conf.d/10-mail.confを編集します。
mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-master.confを編集します。
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
/etc/dovecot/conf.d/10-ssl.confを編集します。
ssl = yes
ssl_cert = </etc/letsencrypt/live/[証明書取得したドメイン名]/cert.pem
ssl_key = </etc/letsencrypt/live/[証明書取得したドメイン名]/privkey.pem
/etc/clamd.confを編集します。
LocalSocket /var/run/clamd.clamsmtp/clamd.sock
User clam
/etc/clamsmtpd.confを編集します。
Listen: 0.0.0.0:10025
Header: X-Virus-Scanned: ClamAV using ClamSMTP
Action: drop
設定が完了したら、サービスの再起動を実施することでSMTPs+IMAP4s,POP3sに対応できます。