はじめに
CentOS7にPostfixを構築して動かしてみたメモ
参考
できるPRO CentOS 7サーバー (できるPROシリーズ)
使用するメールサーバ
昔は、Sendmailが主流。現在はPostfixが多く使われる
メールサーバ機能
- メールを配送し、保存
- SMTPサーバ(Postfix)
- メールを読み出せるようにする機能
- POPサーバ(Dovecot)
- Linuxのユーザ名とパスワードを使ってメールを読み出す
メールサーバを構築する場合、通常、Postfix、Dovecotを使用する
メール送信フロー
- メールクライアントが送信元のドメインで使っているメールサーバにメールを送信
事前にメールクライアントがどのメールサーバを使用するか設定している必要あり
- 送信元のメールサーバは宛先のドメインをみて、自分のドメインが受け取るのか、宛先のドメインのメールサーバに送るのか判断
- 他のドメインの場合、そのドメインのDNSのMXレコードを見て、メールサーバに送信する
- 自分のドメインの場合、スプールにメールを保存する
POPとImap
- POP
- クライアントに読み込んだメールはサーバから削除
- 110ポートで接続
- Imap
- クライアントに読み込んだメールはサーバから削除されない
- クライアントもImapに対応している必要あり
- 143ポートで接続
メールサーバセキュリティ強化
暗号化
と認証
暗号化
- SSL/TLSを利用する。サーバに証明書を用意して、Postfix、Dovecotが読み込む。Webサイトと同じような暗号方法になる。
- Postfix、Dovecotともにデフォルトで暗号化なし
- smtpの暗号化ではsmtpsとstarttls
フロー
- メールソフト -> Postfixへの送信
- starttls/smtps
- Dovecto -> メールソフト
- pops
フロー2
- postfix -> 宛先メールサーバ
- starttls/smtps
smtpsとstarttlsの違い
SMTPSではSMTPによる接続前にSSL(Secure Socket Layer)/TLS(Transport Layer Security)による仮想的な通信路を形成する。通常のSMTPとは異なる専用のポート番号(一般的には465番)を用いて当初からSSL/TLSにより通信を開始する方式と、通常のSMTPで通信を開始し、「STARTTLS」と呼ばれる手順で双方がSSL/TLSに対応しているか確認し、対応していればSSL/TLSで再接続する方式の2つがあり、現在では後者が定着している。
starttls設定
- 相手サーバが暗号化に対応していれば、暗号化。対応していなければ平文
- 自分のメールサーバをstarttlsに対応したければ、サーバ証明書が必要
認証
- Dovecot
- メールを読み出すときはLinuxのユーザ名とパスワードが必要
- Postfix
- 特になし(デフォルト)
SMTP認証(SMTP AUTH)の導入
SASLとは
- 認証システムを実現するライブラリ(フレームワーク)です。Postfixだけでなくさまざまなアプリケーションで使用
- SASLは主に「Cyrus-SASL」と「Dovecot-SASL」というライブラリを
導入
- SASLという仕組みを利用
- SASLの認証方式
- PLAIN , LOGIN
- LinuxのログインパスワードをSMTP認証に使いたい場合。パスワードは暗号化しない
- CRAM-MD5、DIGEST-MD5
- 暗号化する。Linuxのログインパスワードを使わないので、SMTP認証用のパスワードを管理する必要がある
- PLAIN , LOGIN
SMTP認証設定(dovecot-sasl利用)
//SMTP認証を利用
smtpd_sasl_auth_enable=yes
smtpd_sasl_security_options=noanonymous
//Outlookの古いバージョンに対応
broken_sasl_auth_client= yes
//認証時の接続方法(デフォルト: cyrus)
smtpd_sasl_type=dovecot
//SMTP認証したクライアントを許可
smtpd_sasl_path=private/auth
smtpd_recipient_restrictions=
//SMTP認証したクライアントを許可
permit_sasl_authenticated,
//mynetworksからの接続を許可
permit_mynetworks,
//それ以外を拒否
reject_unauth_destination
共有できるメールアドレス(/etc/aliases)
project宛のメールを複数人に転送
- 編集 project: user1,user2,user3,user4@aaaa.co.jp
- ファイル読み込み project: :include:/etc/ml/test
- 反映:newaliasesコマンド
SPAM対策
- ドメインの逆引き設定
- 逆引き設定があるものは正しいという前提がある
- ドメインのSPFレコード設定
- SPAM製品の利用
- クライアント側でフィルタ設定をすることができるが、サーバ側でフィルタなどの設定をする
rootやpostmaster、webmaster、MAILER-DAEMONアカウント
- rootやpostmasterというアカウントは外部の管理者やユーザからの苦情や要望の窓口になっている。これら宛のメールは管理者の普段のアカウントに転送するように設定しておくべき
- エラーメールは差出人には出してメールの本文が送られるが、同時にpostmasterにも送られる。
補足
SSL/TLS
- 自己証明書を使った場合、最近のメールソフトだと警告が表示されたり、利用できなかったりする。SSL/TLSを使う場合は証明書を取得するようにしましょう
サブミッションポート
いかなるインターネット接続状態からのメール送信のための TCPポート25と異なるTCPポート(TCPポート587)のことを言います。
このSubmissionポートを使う(tcpポート番号を違える)ことで、OP25Bの規制を回避し、メール送信ができるようになります。
一般的に、このSubmissionポートを利用するには、認証(ユーザ、パスワード)が必要になります。