サクッとPOP3/SMTPメールサーバーを構築したい人向けのAnsibleスクリプト集です。
AmazonS3と連携し、メールデータがバックアップされます。
世代管理等のバックアップではなく、現状入れ替えでのバックアップです。
サーバー構築スクリプトは非SSL通信でのメールサーバーが構築されます。
メールアカウント・パスワードの保持も平文での送信・MD5での保持になっています。
当方、いかなる責任も取れません。
- Dovecotへの失敗アクセスのログを管理者に送信するスクリプトを追加しました。
- 単位時間辺りの配信数制限を追加しました。
- クライアント辺りの同時接続数/時間あたりの接続回数制限を追加しました。
- 特定のドメインに対する遅延配信設定(スパム回避の為)を追加しました(outbound.ymlについてを参照)
- 簡易メーリングリスト作成機能を追加しました。(mailing.ymlについてを参照)
- メールエイリアスに関する設定を変更(alias.ymlについてを参照)
- スパムメール判定用のホワイトリスト・ブラックリスト設定をspam.ymlに追加しました。
※注)簡易メーリングリストの一斉送信用アドレスには外部からでも送信が可能です。注意してください。
- クォータの設定の代わりにドメイン毎の容量レポーターを追加しました。
- imap接続に対応しました。
aws-cli syncコマンドのログ出力をタイムスタンプ付きにしたい諦める方向で- オレオレ証明書付きと切り替え出来るようにしたい
送信数制限(時間辺り)2015-04-16 追加メーリングリスト作成機能2015-04-14 追加Webメールクライアント諦める方向で
-
ホスト
-
MacOSX Yosemite
-
Ansible 1.9.0
-
ゲスト
-
CentOS 6.5
-
TCP 22(SSH),110(POP3),143(IMAP),587(SUBMISSION) 開放済み
-
構築後
-
Postfix
-
Dovecot
-
clam
-
amavis-new
-
Spamassasin
※どちらの接続もTLS接続のチェックは外してください。
パラメータ | 設定 |
---|---|
サーバー | [Aレコード登録したメールサーバーのドメイン] |
ポート | 110 |
認証 | CRAM-MD5 |
ユーザー名 | [user]@[domain] |
パスワード | 設定したパスワード |
パラメータ | 設定 |
---|---|
サーバー | [Aレコード登録したメールサーバーのドメイン] |
ポート | 143 |
認証 | CRAM-MD5 |
ユーザー名 | [user]@[domain] |
パスワード | 設定したパスワード |
パラメータ | 設定 |
---|---|
サーバー | [Aレコード登録したメールサーバーのドメイン] |
ポート | 587 |
認証 | CRAM-MD5 |
ユーザー名 | [user]@[domain] |
パスワード | 設定したパスワード |
./vars
内の*.yml.sample
を*.yml
にリネームする
mv ./vars/*.yml.sample ./vars/*.yml
./hosts.sample
をhosts
にリネームする
メールサーバー管理情報やドメインに関しての情報が格納されています。
パラメータ名 | 内容 |
---|---|
mailmaster | 管理人のメールアドレス |
mydomain | Aレコード登録したサーバーのドメイン |
domains | MX登録したバーチャルドメイン |
s3buckup | amazonS3へバックアップするCronスケジュール |
reporter | mailmasterに送信するメールディレクトリの容量レポートスケジュール |
登録したいバーチャルドメインの情報が格納されています。
※mailパラメータ以下に配列として格納してください
パラメータ名 | 内容 |
---|---|
domain | 登録したいバーチャルドメインのドメイン名 |
user | 登録したいユーザー名 |
pass | 登録したいパスワード |
transport_limit.rate_time | 配信制限用の単位時間 |
transport_limit.send_limit_rate | 単位時間あたりの制限配信数 |
transport_limit.maxconnection | クライアント辺りの同時接続数制限 |
transport_limit.connection_limit_rate | 単位時間辺りのクライアント接続回数制限 |
メールのエイリアス(転送)設定の情報が格納されています。
※aliasパラメータ以下に配列として格納してください
パラメータ名 | 内容 |
---|---|
receive | 転送元のメールアドレス |
forward | 転送先のメールアドレス |
※内部エイリアス用のユーザー名は受信元の保持の為に必須のようです。
※viaパラメータを削除しました。
エイリアス設定を使った簡易メーリングリスト設定の情報が格納されています。
※ userパラメータ以下は配列として格納してください
パラメータ名 | 内容 |
---|---|
master | メーリングリスト一斉送信用のアドレス |
user | メーリングリスト参加者のアドレス |
※注)簡易メーリングリストなので、外部からでも一斉送信用のアドレスに送信が出来てしまいます。
AmazonS3への接続設定の情報が格納されています。
※S3へのアクセス設定はこのあたりAmazon S3 再入門 – AWS IAMでアクセスしてみよう!を参考にしてみて下さい。
パラメータ名 | 内容 |
---|---|
backet | s3のバケット名(s3://[この部分])です |
access_key | s3へのアクセスキーです |
secret_key | s3への秘密鍵です |
region | バケットのリージョンです |
spamassassin/amavisd用の設定情報が格納されています。
※white_lists/black_listsへの追加は配列として格納してください。
パラメータ名 | 内容 |
---|---|
message | スパムメール受信時の件名頭につけるメッセージ |
white_lists | ホワイトリストに入れるメールアドレス |
black_lists | ブラックリストに入れるメールアドレス |
送信時の外部サーバー接続制限(遅延接続)用の設定情報が格納されています。
※domainsへの追加は配列として格納してください。
パラメータ名 | 内容 |
---|---|
rate_limit | 配信制限用の単位時間 |
send_limit_rate | 単位時間辺りの配信数 |
domains | 遅延接続を有効にするドメイン |
[all]
以下に設定したいサーバーを入れてください。
ゲストOSより下記コマンドを実行してください。
ansible-playbook playbook.yml -i ./hosts
- メールボックス
/var/spool/virtual/[domain]/[user]
- バーチャルドメインマップ
/etc/postfix/virtual-domain
- エイリアスマップ
/etc/postfix/virtual-alias
- トランスポートマップ
/etc/postfix/transport
好きに使ってください。
当方、メールサーバー構築・セキュリティ方面の知識が殆ど無い為ツッコミやプルリクお待ちしております。