sendmailでメールサーバーを構築してみる

SSL証明書を作成

SMTPSを提供する場合のみ必要

/etc/pki/tls/certsに移動して、そこでsudo make sendmail.pemを実行する。あとは情報を入力すると証明書が生成される

/etc/mail/authinfoを設定

OP25Bの制限を受ける場合にはこれを設定しないと外部にメールがおくれない

AuthInfo:リレーメールサーバー名 "U:ユーザーID" "P:パスワード" "M:認証メカニズム"

ユーザーID、パスワードはプロバイダによって必要な場合のみ

/etc/mail/sendmail.mcを修正

必要な部分のみ

# サーバーで提供する認証メカニズムを設定
TRUST_AUTH_METH(`EXTERNAL LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS',`EXTERNAL LOGIN PLAIN')dnl

# SSL関連の情報を設定
define(`confCACERT_PATH',`/etc/pki/tls/certs')dnl
define(`confCACERT','/etc/pki/tls/certs/sendmail.pem')dnl
define(`confSERVER_CERT','/etc/pki/tls/certs/sendmail.pem')dnl
define(`confSERVER_KEY','/etc/pki/tls/certs/sendmail.pem')dnl

# OP25B設定ファイルを読み込む
FEATURE(authinfo,DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`authinfo')dnl

# SMTPとSMTPSを利用する設定
DAEMON_OPTIONS(`Port=smtp,Name=MTA')dnl
DAEMON_OPTIONS(`Port=smtps,Name=TLSMTA,M=s')dnl

# ドメインに関する情報を設定
LOCAL_DOMAIN(`example.com')dnl
MASQUERADE_AS(`example.com')dnl

# サーバーのバージョン等を隠蔽する
define(`confSMTP_LOGIN_MSG',`unknown')dnl

これを設定したら/etc/mail内でsudo makeを行う。サーバーを起動しエラーが出ない事を確認後メール送信テストを行う

備考

sendmailはMaildir形式に対応していない為、procmailを利用して疑似的にMaildir形式の所に集約させる事ができる

SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR

これを/etc/procmailrcとしておいとけば良い