Contents
1.Postfix、Dovecotのインストール
1-1.必要なソフトウェアのインストール
1 |
# dnf -y install postfix dovecot cyrus-sasl cyrus-sasl-plain cyrus-sasl-devel |
1 |
# systemctl enable postfix |
1 |
# systemctl enable dovecot |
1 |
# systemctl enable saslauthd |
1 2 |
# rpm -qa | grep postfix postfix-2.10.1-7.el7.x86_64 |
1 2 3 4 5 6 |
# rpm -qa | grep sasl cyrus-sasl-plain-2.1.26-23.el7.x86_64 cyrus-sasl-lib-2.1.26-23.el7.x86_64 cyrus-sasl-devel-2.1.26-23.el7.x86_64 cyrus-sasl-md5-2.1.26-23.el7.x86_64 これがない場合 # dnf install cyrus-sasl-md5 cyrus-sasl-2.1.26-23.el7.x86_64 |
1 2 3 |
# systemctl enable postfix.service Created symlink from /etc/systemd/system/multi-user.target.wants/postfix.service to /usr/lib/systemd/system/postfix.service. |
1-2.ユーザー登録の前準備
①新規ユーザーの為の前準備
新規でユーザーを追加した場合、自動的にメールの送受信ができるよう設定をする
1 2 3 4 |
# mkdir -p /etc/skel/Maildir/{new,cur,tmp} # chmod -R 700 /etc/skel/Maildir/ # echo "~/Maildir/"> /etc/skel/.forward # chmod 600 /etc/skel/.forward |
すでに作成してあるユーザー(例ではユーザー[tama])がメールの送受信が出来るよう設定をする
1 2 3 4 |
# mkdir -p /home/tama/Maildir/{new,cur,tmp} # chown -R tama:tama /home/tama/Maildir/ # chmod 700 /home/tama/Maildir # chmod 700 /home/tama/Maildir/{new,cur,tmp} |
1-3.Postfix設定ファイルの編集
①SMTP 認証設定ファイルの編集
SMTP 認証設定ファイルのバックアップ
1 |
# cp -p /etc/sasl2/smtpd.conf `date '+ /etc/sasl2/smtpd.conf.%Y%m%d'` |
1 2 3 4 5 6 7 8 |
# vi /etc/sasl2/smtpd.conf ■ 1 行目、2 行目の行頭に「#」を挿入し、追記 # pwcheck_method: saslauthd # mech_list: plain login pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: cram-md5 digest-md5 plain login |
1 2 3 |
# systemctl enable saslauthd.service Created symlink from /etc/systemd/system/multi -user.target.wants/saslauthd.service to /usr/lib/systemd/sy stem/saslauthd.service. |
1 2 |
# systemctl is-enabled saslauthd.service enabled |
1 |
# systemctl start saslauthd.service |
今回は例としてユーザー[rocky]
1 |
# useradd -s /sbin/nologin rocky |
1 2 3 4 |
# passwd rocky 新しいパスワード: ←パスワードを入力 新しいパスワードを再入力してください: ←再度パスワードを入力 passwd: すべての認証トークンが正しく更新できました。 |
SMTP-AUTH パスワードの設定
メールを送信(SMTP)する際に使用するパスワード
1 |
# echo "<任意のパスワード>" | saslpasswd2 -p -u <ドメイン名> -c rocky |
postfix グループに変更
1 |
# sasldblistusers2 |
1 |
# chgrp postfix /etc/sasldb2 |
1 |
# vi /etc/postfix/main.cf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
■96 行目あたりに追加 #myhostname = virtual.domain.tld myhostname = mail.<自ドメイン名> ■103 行目あたりに自ドメイン名を追加 #mydomain = domain.tld mydomain = <自ドメイン名> ■119 行目あたりに追加 #myorigin = $mydomain myorigin = $mydomain ■135 行目あたりに追加「inet_interfaces = localhost」の行頭に「#」を挿入し、その下に「inet_interfaces = all」を追加 #inet_interfaces = localhost inet_interfaces = all ■183 行目あたりに追加コメントアウトし、その下に追加 #mydestination = $myhostname, localhost.$mydomain, localhost mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ■241 行目あたりを確認 エラーメッセージ(550)を返すことを確認 unknown_local_recipient_reject_code = 550 ■287 行目あたりに追加 #mynetworks = hash:/etc/postfix/network_table mynetworks = 192.168.11.0/24, 127.0.0.0/8 [192.168.11.0/24は自環境に合わす・・・・] ■406 行目あたりを確認 alias_maps = hash:/etc/aliases ■440 行目あたりに追加 メールの格納形式の設定 #home_mailbox = Mailbox #home_mailbox = Maildir/ home_mailbox = Maildir/ ■447 行目あたりに追加 #mail_spool_directory = /var/mail #mail_spool_directory = /var/spool/mail mail_spool_directory = /var/spool/mail ■594 行目あたりに追加 #smtpd_banner = $myhostname ESMTP $mail_name #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) smtpd_banner = $myhostname ESMTP unknown ■以下の内容を最終行に追加 allow_percent_hack = no # smtp auth を利用 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $mydomain smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,reject_unauth_destination broken_sasl_auth_clients = yes allow_min_user=yes message_size_limit = 10485760 disable_vrfy_command = yes virtual_maps = hash:/etc/postfix/virtual virtual_alias_maps = hash:/etc/postfix/virtual |
1 2 3 4 5 6 7 |
# vi /etc/postfix/master.cf 16 行目、19 行目の行頭にある「#」を削除 変更後は下記の通り submission inet n - n - - smtpd # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes |
1 2 |
# postmap hash:/etc/postfix/virtual # systemctl start postfix.service |
1-4.Dovecot設定ファイルの編集
①dovecot.conf ファイルを編集
dovecot.conf ファイルをバックアップ
1 |
# cp -p /etc/dovecot/dovecot.conf `date '+ /etc/dovecot/dovecot.conf.%Y%m%d'` |
1 2 3 4 5 6 7 8 9 |
# vi /etc/dovecot/dovecot.conf ■25 行目あたりに追加 「# protocols = imap pop3 lmtp protocols = imap pop3 ■最終行に追加 !include_try local.conf disable_plaintext_auth = no mail_location = maildir:~/Maildir |
1 2 3 |
# vi /etc/dovecot/conf.d/10-ssl.conf ■ 8行目あたり 「ssl = required」の行頭に「#」を挿入し、その下行に「ssl = yes」を追加 |
1 2 |
# systemctl enable dovecot.service # systemctl start dovecot.service |
2.Postfix + Clamav + Amavisd
①Amavisd および Clamav Server をインストール
1 |
# dnf --enablerepo=epel,powertools -y install amavisd-new clamd perl-Digest-SHA1 perl-IO-stringy |
1 2 3 4 5 6 7 8 9 10 11 12 |
# vi /etc/clamd.d/scan.conf ■8行目:コメントにする #Example ■14行目:コメント解除 LogFile /var/log/clamd.scan ■77行目:コメント解除 PidFile /run/clamd.scan/clamd.pid ■81行目:コメント解除 TemporaryDirectory /var/tmp ■96行目:コメント解除 LocalSocket /run/clamd.scan/clamd.sock |
1 2 3 |
# touch /var/log/clamd.scan # chown clamscan. /var/log/clamd.scan # systemctl enable --now clamd@scan |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# vi /etc/amavisd/amavisd.conf ■13 行目あたり行頭の「#」を削除 @bypass_spam_checks_maps = (1); # controls running of anti-spam code ■23行目:自ドメイン名に変更 $mydomain = '<自ドメイン>'; ■28 行目あたり 行頭に「#」を追加して無効化 #$QUARANTINEDIR = undef; # -Q ■125 行目あたり行頭に「#」を追加して無効化 # $virus_admin = undef; # notifications recip ■158行目:コメント解除して自ホスト名に変更 $myhostname = 'mail.<自ドメイン>'; ■163 行目あたり行頭の「#」を削除 $notify_method = 'smtp:[127.0.0.1]:10025'; $forward_method = 'smtp:[127.0.0.1]:10025'; # set to undef with milter! |
1 |
# systemctl enable --now amavisd |
1 2 3 4 |
# vi /etc/postfix/main.cf # 最終行に追記 content_filter=smtp-amavis:[127.0.0.1]:10024 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# vi /etc/postfix/master.cf # 最終行に下表追記 smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 |
1 |
# systemctl restart postfix |
3.スパム対策設定
①スパム対策としてSpamAssassin を導入
1 2 3 |
# dnf -y install --enablerepo=epel spamassassin spamass-milter-postfix # systemctl start spamassassin # systemctl enable spamassassin |
1 2 3 4 |
# vi /etc/mail/spamassassin/v310.pre ■24 行目あたり行頭の#を削除してTextCat プラグインを有効化 loadplugin Mail::SpamAssassin::Plugin::DCC |
1 |
# vi /opt/spamassassin-update.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#!/bin/bash cd /etc/mail/spamassassin wget -q https://github.com/kittyfreak/spamassassin_user_prefs/archive/refs/heads/main.zip [ $? -ne 0 ] && exit unzip main.zip >/dev/null 2>&1 [ $? -ne 0 ] && exit rm -f main.zip mv spamassassin_user_prefs-main/user_prefs . rm -rf spamassassin_user_prefs-main diff user_prefs user_prefs.org > /dev/null 2>&1 if [ $? -ne 0 ]; then cp user_prefs local.cf # スパム判断したメールを添付形式にしない echo "report_safe 0" >> local.cf # スパム判断したメールの件名に「***SPAM***」を付加する echo "rewrite_header Subject ***SPAM***" >> local.cf # SpamAssassin再起動 systemctl restart spamassassin.service > /dev/null fi cp user_prefs user_prefs.org |
1 2 |
# chmod 700 /opt/spamassassin-update.sh # /opt/spamassassin-update.sh |
作成されていることを確認
1 2 3 4 5 6 |
# ls -l /etc/mail/spamassassin drwxr-xr-x 2 root root 59 6 月 7 20:02 channel.d -rw-r--r-- 1 root root 1289 10 月16 2018 init.pre -rw-r--r-- 1 root root 486543 9 月 11 20:24 local.cf ←実行日当日日付になっている事を確認します。 drwx------ 2 root root 6 10 月16 2018 sa-update-keys -rw-r--r-- 1 root root 62 10 月16 2018 spamassassin-default.rc |
1 2 3 4 5 6 7 8 9 |
# vi /etc/postfix/master.cf ■11 行目あたり行頭に「#」を追加し12 行目にSpamAssassin 設定を追加 # smtp inet n - n - - smtpd smtp inet n - n - - smtpd -o content_filter=spamassassin ■最終行へ追加 spamassassin unix - n n - - pipe user=nobody argv=/usr/bin/spamc -e /usr/sbin/sendmail.postfix -oi -f ${sender} ${recipient} |
1 2 3 4 |
# vi /etc/postfix/main.cf ■最終行へ下記内容を追加 content_filter=smtp-amavis:[127.0.0.1]:10024 |
1 |
# systemctl restart postfix |