カテゴリー
サーバー

宅内サーバーからsendmailでメール配信

sendmailでOP25B越え。ssmtpが不便だったのでまたsendmailを使うことにしました。

以前、sendmailよりもssmtpの方が設定が楽だよ、と書いたことがある。

しばらく運用してみて困ったのは、ssmtpだと、Fromヘッダが、サーバーが指定したメールの宛先(ryow@midgen.asia)になってしまうこと。送信者がryow@midgen.asiaのメールはProtonMailから送信されるように設定してあるため、ProtonMailではスパム判定されてしまう。

かと言って、「このメールを送るサーバーは他にもあるよ」なんて横着な設定はしたくない。自宅サーバーのメールアドレスはわたしのRFCでryow@www.midgen.asiaと決められているから、Fromはryow@www.midgen.asiaで送られてほしい。

ところがどうも、ssmtpではそのあたりの細かい制御が利かないようだ。できるかもしれないけど、よくわからなかった。それで結局、sendmailに戻すことにした・・・のだが、いざ設定するとなると色々忘れていて、詰まる詰まる。送信できるようにしたいだけなのに。OP25Bを回避するだけなのに。

というわけで書き残す。

前提

  • FreeBSD 13.2
  • 自宅サーバー(ウェブサーバー)にメールを保存しない(全部転送する)
  • pkgngかPortsのsendmailを使う(組み込みのsendmailにSASLv2がなく、有効にする方法がよくわからなかった)

sendmailのSASLv2

SASLv2がサポートされていないとPLAINすら認証できず、OP25Bを越えられない、とどこかで見ました。

コンパイルされているかは以下で確認できます。

# sendmail -d0.1 -bv root
Version 8.**.*
 Compiled with: DANE DNSMAP IPV6_FULL LOG MAP_REGEX MATCHGECOS MILTER
                MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS
                PICKY_HELO_CHECK PIPELINING SASLv2 SCANF STARTTLS TCPWRAPPERS
                TLS_EC TLS_VRFY_PER_CTX USERDB XDEBUG

SASLv2がなかったら、sendmailをインストールして、mailer.confを書き換えてください。

# pkg install sendmail
...
# cd /etc/mail
# vi mailer.conf
sendmail        /usr/local/sbin/sendmail
send-mail       /usr/local/sbin/sendmail
mailq           /usr/local/sbin/sendmail
newaliases      /usr/local/sbin/sendmail
hoststat        /usr/local/sbin/sendmail
purgestat       /usr/local/sbin/sendmail

#以下はコメントアウト
#sendmail        /usr/libexec/sendmail/sendmail
#mailq           /usr/libexec/sendmail/sendmail
#newaliases      /usr/libexec/sendmail/sendmail
#hoststat        /usr/libexec/sendmail/sendmail
#purgestat       /usr/libexec/sendmail/sendmail

# killall sendmail
# make all install start

/etc/mailでmakeを実行すると、/etc/rc.confのhostnameに応じた名前の.mcファイルが作成されます。

書き換えるファイル

すべて/etc/mail内のファイルです。

  • access
  • authinfo
  • local-host-names
  • [yourhost.com].mc

accessの書き換え

下記の定義が必要です。1行目にあれば大丈夫です。

Connect:127.0.0.1       RELAY

authinfoの書き換え

AuthInfo:mail.example.com "I:[smtp user id]" "P:[smtp password]" "M:CRAM-MD5 DIGEST-MD5 LOGIN PLAIN"

local-host-namesの書き換え

yourhost.com

メールアドレスの@より後の部分がこのファイル内に書かれたホスト名に一致すると、「自分宛てのメールだ」と判断されます。したがって、配送先メールアドレスのドメインをここに書いてしまうと、たぶんハマります。

[yourhost.com].mcの書き換え

「←」のついた3行を書き足します。

FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
FEATURE(authinfo, `hash -o /etc/mail/authinfo') ←

~~~
dnl Dialup users should uncomment and define this appropriately
dnl define(`SMART_HOST', `your.isp.mail.server')
define(`SMART_HOST', `mail.example.com') ←
define(`RELAY_MAILER_ARGS', `TCP $h 587') ←

確認

sendmailに設定変更を適用して、メールを送信し、ログに不審なメッセージが出力されないか確認しつつ、メールボックスを開いて見つめましょう。makeで変なメッセージが出るようなら、どこかでtypoしています。

# make all install restart
# echo "This is a test mail." | mail -v -s Test root
# tail -f /var/log/maillog

「宅内サーバーからsendmailでメール配信」への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください