がらくたネット


sendmail

sendmail

sendmailについて

sendmailはよくセキュリティに脆弱性があると言われている&それと扱いにくいと言われる

しかし業界標準のMTAとなっている

つまり、使いやすいって事でし

セキュリティの面はアップデートが頻繁にされているのでこれを怠らないようにすればよい
ディストリビューションに添付されている管理ソフトなどを使うのも手

設定に関してはm4マクロを上手に使うのがよい
m4のREADMEにはそれぞれの設定値の意味が記載されている
/usr/share/sendmail-cfとかにある
RPMではsendmail-cf(そのままぢゃん)

基本設定

各種の基本的なファイル(例えばaliases)は全てcfファイルにて定義しておく必要がある。

  • aliases
  • vertusertable
  • local-host-names

オプション

多数あるオプションで覚えるのが大変

 -L <strings> syslog書き込み時のモジュール名
 -bd      デーモンモードでバックグラウンド動作
 -q<time_string> キューディレクトリ監視時間
 -qI<queue_id> 該当キューIDを配送
 -qS<sender_string> 送信者に該当文字列を含むキューを配送
 -qR<reciver_string> 受信者に該当文字列を含むキューを配送

Oオプションの値は色々と利用可能な設定値があるので特に重要

 QueueSortTime
 FallbackSmarthost(8.13以降)
 FallbackMXHost
 Timeout.何がし
  Timeout値は多数設定項目が存在している

キュー処理

sendmailのキューは個々に処理が可能である。

rootユーザのみキュー操作ができる。

/usr/lib/sendmail -C <cfファイル> -v -O 設定したいoptions値 -qXyyy
XはI、S、Rのいずれかであり、複数指定して組み合わせる事が可能

yyyはI,S,Rのいずれかに対する文字列となる

これらを組み合わせる事で特定のキューのみを処理する事が可能である

postmaster宛メールへの考察

postmaster宛てメールはRFC的には管理者が読めるように設定しておく必要性がある。ただ、MAILER-DAEMON宛てやbounceメールなどがpostmasterに配送されて不用な多数のメールを受け取る必要性はないために、これらのメール転送先設定や処理方法などを適切に設定しておく必要性がある。
一気に処理したい場合には、該当アドレス宛てに対するaliasを作成して転送先を/dev/nullに設定することで削除することができる。

送信元ドメイン書き換え

送信元ドメインを書き換えるにはsendmail.mc内でMASQUERADEを利用する

MASQUERADE_AS(`mydomain.com')dnl ←書き換え後ドメイン名
FEATURE(masquerade_envelope)dnl ←envelopeも書き換え対象
MASQUERADE_DOMAIN(mydomainalias.com)dnl ←指定したドメイン名分を対象

sendmail.mc変更後はm4マクロでsendmail.cfを生成

# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

OP25B対応

OP25B制限によりSMTP通信出来ないサーバから送る場合

  • SMARTHOST機能を利用して外部SMTPから送信する
  • 送信先ポートはSubmission(587)を利用する
  • SMTP-Authを利用する1)

sendmail.mcを修正

# vi /etc/mail/sendmail.mc
define(`SMART_HOST', `esmtp:[プロバイダのSMTPサーバー名]')dnl
define(`ESMTP_MAILER_ARGS',`TCP $h 587')
FEATURE(authinfo, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`authinfo')
# m4 sendmail.mc > sendmail.cf

authinfoを作成

# vi /etc/mail/authinfo
AuthInfo:SMTPサーバー名 "U:ユーザー名" "P:パスワード" "M:認証方法"
# chmod 640 authinfo;
# makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo
# chgrp smmsp /etc/mail/authinfo.db

認証方法はCRAM-MD5とかPLAINとか。複数指定する場合は空白で区切る

1)
Submissionポートを利用する場合はSMTP-Authが最低限必要だからね…