📨

logwatchを導入し、SPF対応してGmailアドレスへ送信する

2022/07/27に公開

環境

VPS: Vultr
OS: RHEL9

Postfix(メール転送エージェント)インストール

logwatchの稼働に必要なMTA(メール転送エージェント)をインストールする。OSインストール時にホントに最低限しか入れてなかったから……。
RHEL8の解説を参考に、定番のPostfixを入れる。

$ sudo dnf install postfix
~中略~
Complete!

そしてPostfixを有効化しておく。

$ systemctl start postfix
$ systemctl enable postfix

動作確認。

$ rpm -qa | grep postfix
postfix-3.5.9-18.el9.x86_64

Polifix設定

RHEL8の解説を参考に設定していく。

設定ファイルの編集。

$ sudo vi /etc/polifix/main.cf 
~前略~
# INTERNET HOST AND DOMAIN NAMES
# 
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
myhostname = mail.example.com # メールサーバのホスト名を入力
# myhostname = virtual.domain.tld

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld # ドメインを記入する……が、デフォルトでは$myhostnameから最初のコンポーネントを除いたものが使われる。例えば👆の例だとexample.comが使われる。なので今回は指定しない。
~後略~

Polifixを再起動する。

$ systemctl reload postfix

logwatchインストール

logwatchをインストールする。

$ sudo dnf install logwatch

logwatchはPerlで動くので、関連の入れていい? と足りないもののインストール許可を数回求めてくる。全部y連打。Complete!で完了。
試しにちゃんと動いているか確かめる。

$ sudo logwatch --output stdout # ログを標準出力

するとウワーーーーーとたくさんログが出る。これの解読に慣れなければならない。がんばるぞい。

logwatch設定ファイル編集

設定ファイルを設定フォルダにコピー&ペーストする。

$ sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf

そしてsudo viで編集する。説明文にウワーーとなるが、上から順にDeeplで翻訳していけばどうということはない。

#######################################################
# This was written and is maintained by:
#    Kirk Bauer <kirk@kaybee.org>
#
# Please send all comments, suggestions, bug reports,
#    etc, to kirk@kaybee.org.
#
########################################################

~中略~

#Output/Format Options
#By default Logwatch will print to stdout in text with no encoding.
#To make email Default set Output = mail to save to file set Output = file
Output = mail #メールにしたいので、ここをmailに設定
#To make Html the default formatting Format = html
Format = text
#To make Base64 [aka uuencode] Encode = base64
Encode = none

~中略~

# Default person to mail reports to.  Can be a local account or a
# complete email address.  Variable Output should be set to mail, or
# --output mail should be passed on command line to enable mail feature.
MailTo = email@google.com # 送り先のメアド
# WHen using option --multiemail, it is possible to specify a different
# email recipient per host processed.  For example, to send the report
# for hostname host1 to user@example.com, use:
#Mailto_host1 = user@example.com
# Multiple recipients can be specified by separating them with a space.

# Default person to mail reports from.  Can be a local account or a
# complete email address.
MailFrom = logwatch@email.example.com # 送信元。わかりやすい名前をつけておく。

~中略~

# The default detail level for the report.
# This can either be Low, Med, High or a number.
# Low = 0
# Med = 5
# High = 10
Detail = Med # 詳細度を好きに設定する。

~中略~

# By default we assume that all Unix systems have sendmail or a sendmail-like MTA.
# The mailer code prints a header with To: From: and Subject:.
# At this point you can change the mailer to anything that can handle this output
# stream.
# TODO test variables in the mailer string to see if the To/From/Subject can be set
# From here with out breaking anything. This would allow mail/mailx/nail etc..... -mgt
mailer = "/usr/sbin/sendmail.postfix -t" # postfixのコマンドパスを記載

~後略~

そして、これをこのまま試しに送信してみる。

$ sudo logwatch --output mail # logwatchメール送信

しかし待てど暮せど来ない。
maillogをチェックしてみる。

$ sudo cat /var/log/maillog |grep "from=<logwatch@example.com>"
Jul  8 22:10:49 localhost postfix/smtp[52769]: 742FB321998B: to=<XXX@gmail.com>, relay=gmail-smtp-in.l.google.com[XX.XX.XX.XX]:25, delay=9.1, delays=7.1/0.1/0.82/1.1, dsn=5.7.26, status=bounced (host gmail-smtp-in.l.google.com[XX.XX.XX.XX] said: 550-5.7.26 This message fails to pass SPF checks for an SPF record with a hard 550-5.7.26 fail policy (-all). To best protect our users from spam and 550-5.7.26 phishing, the message has been blocked. Please visit 550-5.7.26  https://support.google.com/mail/answer/81126#authentication for more 550 5.7.26 information. y20-20020a170903011400b0016bdf0dfc80si18045302plc.20 - gsmtp (in reply to end of DATA command))

要約:きみのところ、SPFに対応してないからダメです。

SPFレコード登録

ということで、SPFレコードを登録する。
VPS(今回はVultr)のDNS管理画面から、送信元として使いたいドメインに追加する。

タイプはTXT、名前は空欄、値に"v=spf1 ip4:XX.XX.XX.XX -all"(※XはIPアドレス)。

さあ、これでどうかな?

$ sudo logwatch --output mail # logwatchメール送信

やった~~~~~!!!!

Discussion