如何设置fail2ban以使用msmtp发送电子邮件?
我尝试将mta = sendmail
线路更改为mta = msmtp
并将action = %(action_)s
线路更改为action = %(action_mwl)s
。
我想/etc/fail2ban/action.d/msmtp-whois-lines.conf
文件,但我不知道该放什么。
我通常可以从命令行发送邮件,无需密码。echo -e "Subject: subject\nMessage contents" | msmtp [email protected]
答案1
我要做的如下:
首先是将所有action.d/sendmail-*.conf
文件复制到action.d/msmtp-*.conf
文件:
for file in /etc/fail2ban/action.d/sendmail*.conf; do cp "$file" "${file/sendmail/msmtp}"; done
下一步是更改文件中出现的before = sendmail
to :before = msmtp
action.d/msmtp-*.conf
sed -i 's/before = sendmail/before = msmtp/' /etc/fail2ban/action.d/msmtp-*.conf
这将更正对其他 sendmail 配置文件(例如before = sendmail-common.conf
.
随后将所有出现的sendmail -f <sender>
to更改msmtp
为action.d/msmtp-*.conf
:
sed -i 's/sendmail -f <sender>/msmtp/p' /etc/fail2ban/action.d/msmtp-*.conf
sendmail
这将纠正称为 like 的行Fail2Ban | /usr/sbin/sendmail -f <sender> <dest>
。
最后一步是更改文件mta = msmtp
中的action.d/jail.conf
。然后重新加载fail2ban来测试这些修改是否有效。
另一件需要记住的事情是fail2ban 相对于msmtp 配置的用户上下文。如果您配置了本地msmtprc
文件,则当fail2ban尝试运行msmtp时,由于其他用户上下文,该文件可能不会被应用。在这种情况下,请使用全局配置来配置 msmtp,或者为运行fail2ban 的用户创建单独的配置。
答案2
由于我没有足够的声誉,无法直接在下面发表评论兰伯特的答案非常有帮助,我将在这里添加我的想法:
作为德克萨斯州洪水他们在评论中指出,你需要运行
sudo sed -i 's/\/usr\/sbin\/sendmail/\/usr\/bin\/msmtp/' /etc/fail2ban/action.d/msmtp*.conf
以及[标记发送邮件而不是德克萨斯洪水邮件传输协议! - 可能只是他们这边的一个错字]。
你可能需要添加须藤在...前面CP或者sed为了让它正常工作。