クライアント端末として利用しているLinuxで、root宛に届くメッセージを、外部のプロバイダのメールアドレスに転送する設定。 (わざわざ mail コマンドで確認する手間を省くため)
また、ウイルスに感染した場合、外部に勝手にメールを出されるのを防ぐため、指定したドメイン以外へのメール送信を拒否する設定とする。
■ 検証環境
Ubuntu 9.10, 10.04, 12.04
CentOS 6.5
Raspberry Pi (Debian) 2013-02-09-wheezy-raspbian
■ 想定環境
外部のプロバイダのメールサーバ:smtp.example.com
外部のプロバイダのメールアドレス:myname@example.com
外部のプロバイダのメールパスワード:mypassword
■ 必要なソフトウエアのインストール
# apt-get install postfix sasl2-bin
■ Postfixの設定
myorigin = example.com smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # 再送リトライは1回とする maximal_queue_lifetime = 0 bounce_queue_lifetime = 0 readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # 基本的な設定 myhostname = クライアントPCの名前 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases # user@localhost を user@example.com に書き換える等のルール設定ファイル smtp_generic_maps = hash:/etc/postfix/generic mydestination = クライアントPCの名前, localhost.localdomain, localhost mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + #inet_interfaces = all # localhostのみをListenする inet_interfaces = localhost #default_transport = error #relay_transport = error inet_protocols = ipv4 # ISPのSMTPサーバへリレー relayhost = [smtp.example.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/isp_auth smto_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = cram-md5, login, plain smtp_generic_maps = hash:/etc/postfix/generic # 送信先アドレスの制限 relay_domains = example.com smtpd_recipient_restrictions = permit_auth_destination,reject
■ ISPのSMTP認証用のユーザ名とパスワードを設定する。
[smtp.example.com]:587 myname@example.com:mypassword
そして、次のコマンドでハッシュ化する。そして、ソースファイルを削除し、ハッシュ化されたファイルはルートユーザ以外は読めないようにする。
# postmap /etc/postfix/isp_auth # rm /etc/postfix/isp_auth # chmod go-r /etc/postfix/isp_auth.db
ハッシュ化したファイル(/etc/postfix/isp_auth.db)が作成されれば、オリジナルのソースコード(/etc/postfix/isp_auth)ファイルは不要なので削除してよいと思う。
■ 転送設定を行う
# /etc/aliases
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: myname@example.com
そして、次のコマンドでハッシュ化する
# postalias /etc/aliases
■ SMTP送信時の送信者アドレスの変換設定
アドレス書き換えについての詳細は「Postfix アドレス書き換え」を参照のこと
@localhost @example.com
そして、次のコマンドでハッシュ化する
# postmap /etc/postfix/generic
■ Postfixの設定(main.cf)の文法チェック
次のコマンドで何もエラーが表示されなければOK。
# postfix check
次のようなエラーメッセージが出てきた場合は、/etc/resolv.conf
を/var/spool/postfix/etc/
にコピーする。
postfix/postfix-script: warning: /var/spool/postfix/etc/resolv.conf and /etc/resolv.conf differ
また、ipv6を無効化していてエラーメッセージが表示される場合は、/etc/postfix/main.cf を修正する。
inet_protocols = ipv4
■ 送信テスト
mailutilsパッケージをインストールし、mailコマンドを使って送信テストする。
# mail myname@example.com
CC:
Subj: TEST MAIL
Test Message
CTRL + D キーを押す
■ 参考資料
・Postfix設定パラメータ