• 他のMTAへのリレーのみをしてくれる。
  • 設定が超簡単。LAN上のsmtpサーバ使用なら、初期設定コマンド1つとecho <host> smtp >> /etc/nullmailer/remotes で終わり。
  • /etc/init.d/nullmailer がサービス。キュー/var/nullmailer/queueを持ち、送信失敗しても後で再送を試みてくれる。
  • sendmail でキュー&送信
  • mailq でキュー表示

初期設定

emerge --config nullmailer で、/etc/nullmailerに 2つのファイル me, defaultdomain が作成される。

設定例

/etc/nullmailer/remotes に、通信相手のホスト、プロトコル等を記す。

例:

neighbor         smtp               # LAN上のneighbor君にsmtpでリレー
neighbor         smtp --port=10025  # 同上、ポート番号指定
# インターネット上のサーバーでリレー。Submission & STARTTLS使用。
far.side.moon.jp smtp --port=587 --starttls --user=<uesr> --pass=<pass>
# 同上、オレオレCA証明書を指定。証明書形式がデフォルトのcrtでなくder。
far.side.moon.jp smtp --port=587 --starttls --user=<uesr> --pass=<pass> --x509cafile=<ca.crt> --x509fmtder

Submission+StartTLSの設定例

準備 オレオレ認証に対応

a. CA証明書を指定する

CA証明書を適当に設置する。nullmailerがアクセスできるパーミッションで。

# cp ca.crt /etc/nullmailer/
# chmod 644 /etc/nullmailer/ca.crt
or
# chgrp nullmail /etc/nullmailer/ca.crt

その上で、remotesにオプション –x509cafile=を書く。

ore.server.jp  smtp  --port=587 --user=<user> --pass=<pass> --starttls --x509cafile=/etc/nullmailer/ca.crt
b. etc/ca-certificate(nullmailerのデフォルト参照先)に手を出す

nullmailerはデフォルトで/etc/ssl/ca-certificates.crtを参照するので、メールサーバの証明書が参照する、オレオレ認証局の証明書をここに含めてみる。

/usr/share/ca-certificatesにCA証明書を置き、その相対パスを/etc/ca-certificates.confに記入し、update-ca-certificatesで /etc/ssl/cacertificates.crtをアップデート。

# mkdir /usr/share/ca-certificates/OreOre
# cp OreCA.crt /usr/share/ca-certificates/OreOre/
# echo OreOre/OreCA.crt >> /etc/ssl/ca-certificates.conf
# update-ca-certificates

但し、/etc/ca-certificates.confは、Gentooのca-certificatesが自動生成し、”Do not edit” と記載されている。パッケージが管理するということだろうけど、これは後で別途勉強する。

remotesのその他のオプション

nullmailerがメールを送信する際、/etc/nullmailer/remotesに記載のオプションが /usr/libexec/nullmailer/smtpに渡される。 このコマンドは--helpを受け付け、オプション一覧と簡単な説明を見ることが出来る。

usage: smtp [flags] remote-address < mail-file
Send an email message via SMTP
  -p, --port=INT            Set the port number on the remote host to connect to
      --user=VALUE          Set the user name for authentication
      --pass=VALUE          Set the password for authentication
  -d, --daemon              use syslog exclusively
  -s, --syslog              use syslog additionally
      --auth-login          Use AUTH LOGIN instead of auto-detecting in SMTP
      --ssl                 Connect using SSL (on an alternate port by default)
      --starttls            Use STARTTLS command
      --x509certfile=VALUE  Client certificate file
      --x509cafile=VALUE    Certificate authority trust file
                            (Defaults to /etc/ssl/certs/ca-certificates.crt)
      --x509crlfile=VALUE   Certificate revocation list file
      --x509fmtder          X.509 files are in DER format
                            (Defaults to PEM format)
      --insecure            Don't abort if server certificate fails validation

  -h, --help                Display this help and exit