Git Product home page Git Product logo

mail_server_scripts's Introduction

簡易メールサーバー設置用Ansible

サクッとPOP3/SMTPメールサーバーを構築したい人向けのAnsibleスクリプト集です。

AmazonS3と連携し、メールデータがバックアップされます。

世代管理等のバックアップではなく、現状入れ替えでのバックアップです。

※注意

サーバー構築スクリプトは非SSL通信でのメールサーバーが構築されます。

メールアカウント・パスワードの保持も平文での送信・MD5での保持になっています。

当方、いかなる責任も取れません。

更新履歴

2015-08-06

  • Dovecotへの失敗アクセスのログを管理者に送信するスクリプトを追加しました。

2015-04-16

  • 単位時間辺りの配信数制限を追加しました。
  • クライアント辺りの同時接続数/時間あたりの接続回数制限を追加しました。
  • 特定のドメインに対する遅延配信設定(スパム回避の為)を追加しました(outbound.ymlについてを参照)

2015-04-14

  • 簡易メーリングリスト作成機能を追加しました。(mailing.ymlについてを参照)
  • メールエイリアスに関する設定を変更(alias.ymlについてを参照)
  • スパムメール判定用のホワイトリスト・ブラックリスト設定をspam.ymlに追加しました。

※注)簡易メーリングリストの一斉送信用アドレスには外部からでも送信が可能です。注意してください。

2015-04-13

  • クォータの設定の代わりにドメイン毎の容量レポーターを追加しました。
  • imap接続に対応しました。

Todo

  • 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接続のチェックは外してください。

受信

POP

パラメータ 設定
サーバー [Aレコード登録したメールサーバーのドメイン]
ポート 110
認証 CRAM-MD5
ユーザー名 [user]@[domain]
パスワード 設定したパスワード

IMAP

パラメータ 設定
サーバー [Aレコード登録したメールサーバーのドメイン]
ポート 143
認証 CRAM-MD5
ユーザー名 [user]@[domain]
パスワード 設定したパスワード

送信

SMTP

パラメータ 設定
サーバー [Aレコード登録したメールサーバーのドメイン]
ポート 587
認証 CRAM-MD5
ユーザー名 [user]@[domain]
パスワード 設定したパスワード

使い方

設定ファイル

./vars内の*.yml.sample*.ymlにリネームする

mv ./vars/*.yml.sample ./vars/*.yml

./hosts.samplehostsにリネームする

main.ymlについて

メールサーバー管理情報やドメインに関しての情報が格納されています。

パラメータ名 内容
mailmaster 管理人のメールアドレス
mydomain Aレコード登録したサーバーのドメイン
domains MX登録したバーチャルドメイン
s3buckup amazonS3へバックアップするCronスケジュール
reporter mailmasterに送信するメールディレクトリの容量レポートスケジュール

mail.ymlについて

登録したいバーチャルドメインの情報が格納されています。

※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 内部エイリアス用のユーザー名

※内部エイリアス用のユーザー名は受信元の保持の為に必須のようです。

※viaパラメータを削除しました。

エイリアス設定を使った簡易メーリングリスト設定の情報が格納されています。

※ userパラメータ以下は配列として格納してください

パラメータ名 内容
master メーリングリスト一斉送信用のアドレス
user メーリングリスト参加者のアドレス

※注)簡易メーリングリストなので、外部からでも一斉送信用のアドレスに送信が出来てしまいます。

aws.ymlについて

AmazonS3への接続設定の情報が格納されています。

※S3へのアクセス設定はこのあたりAmazon S3 再入門 – AWS IAMでアクセスしてみよう!を参考にしてみて下さい。

パラメータ名 内容
backet s3のバケット名(s3://[この部分])です
access_key s3へのアクセスキーです
secret_key s3への秘密鍵です
region バケットのリージョンです

spam.ymlについて

spamassassin/amavisd用の設定情報が格納されています。

※white_lists/black_listsへの追加は配列として格納してください。

パラメータ名 内容
message スパムメール受信時の件名頭につけるメッセージ
white_lists ホワイトリストに入れるメールアドレス
black_lists ブラックリストに入れるメールアドレス

送信時の外部サーバー接続制限(遅延接続)用の設定情報が格納されています。

※domainsへの追加は配列として格納してください。

パラメータ名 内容
rate_limit 配信制限用の単位時間
send_limit_rate 単位時間辺りの配信数
domains 遅延接続を有効にするドメイン

hostsについて

[all]以下に設定したいサーバーを入れてください。

実行について

ゲストOSより下記コマンドを実行してください。

ansible-playbook playbook.yml -i ./hosts

サーバー環境について

  • メールボックス /var/spool/virtual/[domain]/[user]
  • バーチャルドメインマップ /etc/postfix/virtual-domain
  • エイリアスマップ /etc/postfix/virtual-alias
  • トランスポートマップ /etc/postfix/transport

ライセンス

好きに使ってください。

当方、メールサーバー構築・セキュリティ方面の知識が殆ど無い為ツッコミやプルリクお待ちしております。

mail_server_scripts's People

Contributors

aozora0000 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.