unixユーザアカウントが1つか2つ、メールを外部に送ることはあっても内部のローカルメールなんか見ないよという場合のexim4の設定。目新しくはないけど、よくやる設定なのでメモしておく。
今回の例では myhostname が設定するサーバのホスト名で、 myhostname.local がメールサーバのドメイン名、 tateisu がサーバ上のメインユーザのアカウント名とする。
/etc/exim4/update-exim4.conf.conf を編集
dc_eximconfig_configtype='satellite' dc_other_hostnames='myhostname.local' dc_local_interfaces='127.0.0.1' dc_readhost='myhostname.local' dc_relay_domains='' dc_minimaldns='true' dc_relay_nets='' dc_smarthost='external.smtp.server::26' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='true' dc_mailname_in_oh='true' dc_localdelivery='mail_spool'
dc_smarthost の部分に外部のSMTPサーバのホスト名とポート番号を書く。ポート番号の区切りがコロン2つで間違えやすい。
dpkg-reconfigure exim4-config
編集が終わったら dpkg-reconfigure exim4-config する。
質問が出るので以下のように答える。
# メール設定の種別 General type of mail configuration: → mail sent by smarthost; no local mail # このメールサーバのドメイン名 System mail name: → myhostname.local # SMTP 待ち受けアドレス IP-addresses to listen on for incoming SMTP connections: → 127.0.0.1 # ほか、このメールサーバがSMTPで受け取るメールのドメイン名 Other destinations for which mail is accepted: → myhostname.local # ローカルメールを外部に送信する際にメールアドレスに付与するドメイン名 Visible domain name for local users: → myhostname.local # メールを外部に転送する先のSMTPサーバのホストとポート IP address or host name of the outgoing smarthost: → rings.juggler.jp::26 # なるべくDNSクエリを減らして、不要な自動ダイアルアップを抑制する? Keep number of DNS-queries minimal (Dial-on-Demand)? → Yes # 設定ファイルを分割する? Split configuration into small files? → No
最後の2つの質問は今回の設定には影響しない。好きな方を選んで構わない。
設定が終わると自動的にexim4が再起動される
/etc/email-addresses を編集
ローカルユーザ宛のメールをどこに転送するかを記述する…のだが、これを使う送信先のサーバでリレー失敗が出てしまう問題があった。
/etc/aliases を編集
1ユーザしか作っていない、ほとんど素のdebianだとこんな感じ
mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: tateisu tateisu: tateisu@juggler.jp
最後の行だけを追加した。
編集が終わっても再起動は特に必要ない。
動作確認
# mail tateisu Subject: test 5 hoge (Ctrl-Dを押す) Cc: (何も入れずにEnter)
これでメールが配送されればOK。
ダメなら /var/log/exim4/mainlog や 送信先SMTPサーバのログを確認する。
サーバ上のメインユーザ以外にもrootとpostmasterくらいは確認しておく。