CentOS8ではPostfix、SendmailなどのMTAがインストールされておらず、する必要がある。
メールの送受信ができるようにPostfixとDovecotを使えるようにしておく。
主にサーバーサイドからの送信を目的とした設定を記載しています。
MTAとは Mail Transfer Agent の略。ネットワーク上でメールを転送・配送するソフトウェアの事。Postfix、Sendmail、qmailなど。
それに対し、ユーザ側がメールを表示・作成・送受信するソフトウェアをMUA(Mail User Agent)という。メールクライアント、メーラーと呼ばれるもの。Outlook、Thunderbird、Becky!(私はこれ使ってます)など。
それに対し、ユーザ側がメールを表示・作成・送受信するソフトウェアをMUA(Mail User Agent)という。メールクライアント、メーラーと呼ばれるもの。Outlook、Thunderbird、Becky!(私はこれ使ってます)など。
使用中のMTAの確認
# alternatives --display mta
mta -ステータスは自動です。
リンクは現在 /usr/sbin/sendmail.postfix を指しています。
/usr/sbin/sendmail.postfix - priority 60
スレーブ mta-mailq: /usr/bin/mailq.postfix
スレーブ mta-newaliases: /usr/bin/newaliases.postfix
スレーブ mta-pam: /etc/pam.d/smtp.postfix
スレーブ mta-rmail: /usr/bin/rmail.postfix
スレーブ mta-sendmail: /usr/lib/sendmail.postfix
スレーブ mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz
スレーブ mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz
スレーブ mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz
スレーブ mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz
スレーブ mta-smtpdman: /usr/share/man/man8/smtpd.postfix.8.gz
現在の「最適」バージョンは /usr/sbin/sendmail.postfix です。
使用中のMTAの変更
# alternatives --config mta
1 プログラムがあり 'mta' を提供します。
選択 コマンド
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.postfix
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
Postfix
実際に運用するには暗号化通信、スパム対策、などの対策も必要だが、今回はCentOS上で動作するWebアプリケーションの作製が主な目的のためとりあえず割愛。
参照:CentOS8でサーバー構築 - 7.Postfix3.3+Dovecot2.3の暗号化設定(SSL/TLS)
インストール
# dnf -y install postfix
設定
# vi /etc/postfix/main.cf
#myhostname = host.domain.tld #myhostname = virtual.domain.tld myhostname = mail.kowloonet.local ・省略 ・ #mydomain = domain.tld mydomain = kowloonet.local ・省略 ・ #myorigin = $myhostname myorigin = $mydomain ・省略 ・ inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost # Enable IPv4, and IPv6 if supported inet_protocols = ipv4 ・省略 ・ #mydestination = $myhostname, localhost.$mydomain, localhost mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, # mail.$mydomain, www.$mydomain, ftp.$mydomain ・省略 ・ #home_mailbox = Mailbox home_mailbox = Maildir/ ・省略 ・ #smtpd_banner = $myhostname ESMTP $mail_name #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) smtpd_banner = $myhostname ESMTP unknown ・ ・下記追加 # SMTP Auth # smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination # Mail size limit # 10M message_size_limit = 10485760 # Mailbox size limit # 1G mailbox_size_limit = 1073741824 # OP25B relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain
# vi /etc/postfix/master.cf
smtp inet n - n - - smtpd #smtp inet n - n - 1 postscreen #smtpd pass - - n - - smtpd #dnsblog unix - - n - 0 dnsblog #tlsproxy unix - - n - 0 tlsproxy submission inet n - n - - smtpd # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes
ユーザー毎にメールボックスが作製されるように設定
# mkdir -p /etc/skel/Maildir/{new,cur,tmp} # chmod -R 700 /etc/skel/Maildir/
既存ユーザにMaldirが存在しない場合はメールボックス作成
# mkdir -p /home/xiohei/Maildir/{new,cur,tmp} # chmod -R 700 /home/xiohei/Maildir/ # chown -R xiohei. /home/xiohei/Maildir/
SMTP認証
# dnf -y install cyrus-sasl # systemctl start saslauthd # systemctl enable saslauthd
SMTP認証で使用するパスワード設定
# echo [smtp.gmail.com]:587 Gmaiのlアドレス:Gmailのパスワード > /etc/postfix/sasl_passwd # chmod 640 /etc/postfix/sasl_passwd # postmap /etc/postfix/sasl_passwd
OP25B対策リレーに使うGmailアカウント設定
リレー(中継)に使うGmailアカウントのセキュリティレベルを変更する必要があったため変更。「リンクされているGoogleアカウントの重大なセキュリティ通知」のメールも飛んできました。
Gmailアカウントを管理 → セキュリティ → 安全性の低いアプリのアクセス を有効にする。
OP25:Outbound Port 25 Blocking。ISP(インターネットサービスプロバイダ)が迷惑メール対策として特定のサーバ以外からPort25をブロック。
Gmailのセキュリティ設定で中継がうまくいかない時のmailログ
# tail -f /var/log/maillog
May 17 13:02:35 kowloonet postfix/smtp[9253]: 45CF0185725A: to=<送信先メールアドレス>, relay=smtp.gmail.com[64.233.189.109]:587, delay=1.8, delays=0.04/0.03/1.7/0, dsn=4.7.8, status=deferred (SASL authentication failed; server smtp.gmail.com[64.233.189.109] said: 535-5.7.8 Username and Password not accepted. Learn more at?535 5.7.8 https://support.google.com/mail/?p=BadCredentials q100sm5156446pjc.11 - gsmtp)
変更後は無事に送信できました。
# tail -f /var/log/maillog
May 17 13:04:37 kowloonet postfix/smtp[9253]: 43B15185725D: to=<送信先メールアドレス>, relay=smtp.gmail.com[64.233.189.109]:587, delay=2.5, delays=0.02/0/1.7/0.86, dsn=2.0.0, status=sent (250 2.0.0 OK 1589688277 a16sm5273075pff.41 - gsmtp)
起動
# postfix check # systemctl start postfix # systemctl enable postfix Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service. # systemctl status postfix ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2020-05-11 17:26:22 JST; 9min ago Main PID: 8383 (master) Tasks: 3 (limit: 4884) Memory: 7.6M CGroup: /system.slice/postfix.service ├─8383 /usr/libexec/postfix/master -w ├─8384 pickup -l -t unix -u └─8385 qmgr -l -t unix -u
Dovecot
インストール
# yum -y install dovecot
設定
# vi /etc/dovecot/conf.d/10-mail.conf
# <doc/wiki/MailLocation.txt >
#
mail_location = maildir:~/Maildir
# vi /etc/dovecot/conf.d/10-auth.conf
# See also ssl=required setting.
disable_plaintext_auth = no
# vi /etc/dovecot/conf.d/10-ssl.conf
# plain imap and pop3 are still allowed for local connections
ssl = no
起動
# systemctl start dovecot # systemctl enable dovecot Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /usr/lib/systemd/system/dovecot.service.
root宛メールを一般ユーザへ転送
この場合は一般ユーザ xiohei# sed -i '/^root:/d' /etc/aliases # echo 'root: xiohei' >> /etc/aliases # newaliases
メール配送の確認
Gmailなどの外のアドレス宛へメールが送信できるか確認。mailコマンドが使えない場合はインストール。
mailxインストール
# dnf -y install mailx
メール送信
# echo testMessage| mail -s "test" 送信先メールアドレス
メールログ確認
# tail -f /var/log/maillog May 18 07:26:42 kowloonet postfix/pickup[18628]: 6C4831857241: uid=0 from=status=sent と出てればOK。May 18 07:26:42 kowloonet postfix/cleanup[18829]: 6C4831857241: message-id=<20200517222642.6C4831857241@mail.kowloonet.local> May 18 07:26:42 kowloonet postfix/qmgr[9097]: 6C4831857241: from= , size=451, nrcpt=1 (queue active) May 18 07:26:46 kowloonet postfix/smtp[18831]: 6C4831857241: to=<送信先メールアドレス>, relay=smtp.gmail.com[64.233.189.108]:587, delay=3.9, delays=0.06/0.04/2.2/1.5, dsn=2.0.0, status=sent (250 2.0.0 OK 1589754406 ce21sm6744215pjb.51 - gsmtp) May 18 07:26:46 kowloonet postfix/qmgr[9097]: 6C4831857241: removed
キューの確認
# postqueue -p
キューの配送
# postqueue -i キューのID
全てのキューの配送
# postqueue -f
キューの削除
# postsuper -d キューのID
全てのキューの削除
# postsuper -d all