徒然なるままに プログラミングメモや日々の生活などつれづれとつづっていくblog

2016年11月7日

Docker + LDAP+ MailServer(Postfix + dovecot) + Roundcubeを構築する

Filed under: Docker,Linux,OSS,postfix,Roundcube,オープンソース — ranpei @ 3:11 AM

ちょっと流れから脱線しますが、

Dockerを使ってのメールサーバー構築に成功したため

その内容をメモとして残します。

 

1.メールサーバーの要件

現在のメールサーバーの使い方なのですが、

以下の2つがあるためこれらを満たす必要があります。

・サービス毎のメールアカウント管理

・フリーメールの集約

サービス毎のメールアカウントを管理するのは前にも言ったようにLDAPL+バーチャルメールボックスで行けるのですが、

フリーメールの集約はFetchmailを使っているためこれが動作する環境である必要があります。

ではできるのか?というとRoundcubeにはFetchmailの設定をWeb上で行えるプラグインが存在します。

ですが、Fetchmailは取得したメールをローカルのMDAにフォーワードすることしかできないのできません。

つまりRoundcube自身にプラグインが入った状態でなおかつローカルにMDAが存在する必要があるのです。

 

2.考えられる構成は?

考えられる構成は2種類あります。

1つは以下のようにすべてを1つのContainerにまとめること。

%e3%83%a1%e3%83%bc%e3%83%ab%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc_%e5%8d%98%e4%b8%80%e3%82%b3%e3%83%b3%e3%83%86%e3%83%8a

もう1つは以下のように転送用のメールサーバーを構築してメインのメールサーバーにメールを転送すること。

%e3%83%a1%e3%83%bc%e3%83%ab%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc_%e5%88%86%e9%9b%a2%e5%9e%8b

 

今回はどうしてもメールサーバーとRoundcubeは別に構築したかったため後者で構築を行いました。

 

3.メールサーバーを構築する

これらのContanerについては要件を満たすものがなかったため

DockerHub上のものを改造する形で自分で作りました。

GitHubに挙げてますのでダウンロードしてください。

 

// メールサーバーのチェックアウト
$ git clone https://github.com/gittrname/mailserver-ldap.git
// Roundcube + Fetchmailサーバーのチェックアウト
$ git clone https://github.com/gittrname/roundcube-fetchmail.git

・docker-compose.yml

version: '2'
services:  
  mail:  
    build: mailserver-ldap  
    ports:  
      - "25:25"  
      - "465:465"  
      - "587:587"  
      - "110:110" 
      - "143:143"  
      - "995:995"  
      - "993:993"  
    links:  
      - ldap  
    extra_hosts:  
      - "mail.example.com:127.0.0.1"  
    environment:  
      - "LDAP_SERVER=ldap"  
      - "DOMAIN=example.com"  
      - "HOSTNAME=mail.example.com" 
      - "LDAP_BASE=ou=People,dc=example,dc=com"  
      - "LDAP_USER_FIELD=uid"  
  roundcube:
    build: roundcube-fetchmail
    ports:
      - "80:80"
    links:
      - ldap
      - mail
    extra_hosts:
      - "fetch.example.com:127.0.0.1"
    environment:
      - "ROUNDCUBE_DEFAULT_HOST=mail"
      - "ROUNDCUBE_SMTP_SERVER=mail"
      - "ROUNDCUBE_USERNAME_DOMAIN=example.com"
      - "HOSTNAME=fetchmail.example.com"
  ldap:  
    image: sharaku/ldap  
    ports:  
      - "8080:80"  
    environment:  
      - "LDAP_DOMAIN=example.com"  
      - "LDAP_ADMIN_PWD=password"  
      - "LDAP_ORGANISATION=LDAP for docker."

 

※ RoundcubeとLdapAdminのポートが被らないようにしてください。

後はLdapAdmin上でユーザーを作成すればメールアカウントの作成は完了します。

 

 

定期的なメールの取得はログインした後「設定」⇒「Fetchmail]で設定します。

取得先のドメイン、ユーザー、パスワードを設定すると15分間隔でメールを取得し、

ログインユーザー@ドメインにメールを転送します。

 

ちょっとデータの永続化に多少の不安がありますが

一応、やりたいことはできたので公開してます。

2014年10月15日

不正アクセス再び

Filed under: postfix,ログ,不正アクセス — ranpei @ 12:20 AM

以前Webサーバーを踏み台にされた話をしましたが。

今度はMailサーバーを踏み台にされてしまいました;x;

 

 

ことの発端は以下のメールが送られてきたことでした。
————————————————————————————————
警告:お客様サーバーからのフィッシングメール送信行為について

いつもMyDNS.JPをご利用頂きましてありがとうございます。

お客様が使用している回線から、フィッシングメールがMyDNS.JPのメール
リレーサーバー経由で送信されていることを確認いたしました。

このような行為は、社会的に非常に迷惑であり、加入規約に反しており
ますので行なわないようにして頂けますようお願い致します。

再度行なわれた場合には、以後の利用を禁止させて頂きます。

もし身に覚えがないようであれば、お客様のサーバーがクラッキングを
受けていないかどうか確認をしていただけますようお願いいたします。

また、本件についてお客様のアクセス状況や個人情報を関係省庁に報告
することもありますので予めご了承ください。
————————————————————————————————

 

昼間はとりあえずスマホからVPNでメールサーバーを停止して、これ以上のスパム送信を防ぐ暫定措置をとり。

帰宅後にぐぬぬ、postfixで踏み台にされたお話を参考にログを解析しました。

以下が実際のログの一部です。

Sep 14 15:36:25 localhost postfix/smtpd[28698]: connect from unknown[216.251.77.186]
Sep 14 15:36:27 localhost postfix/smtpd[28698]: 06A9780053: client=unknown[216.251.77.186], sasl_method=LOGIN, sasl_username=○○○○@mail.ranran.mydns.jp
Sep 14 15:36:28 localhost postfix/cleanup[29044]: 06A9780053: message-id=<>
Sep 14 15:36:28 localhost postfix/qmgr[1936]: 06A9780053: from=<info@rolandbest.com>, size=1949, nrcpt=5 (queue active)
Sep 14 15:36:28 localhost postfix/smtpd[28698]: disconnect from unknown[216.251.77.186]
Sep 14 15:36:29 localhost postfix/smtp[29045]: 06A9780053: to=<tunde.adeoye@aol.com>, relay=auth.gate-on.net[210.197.72.170]:587, delay=2.9, delays=1.7/0.02/0.1/1.1, dsn=2.0.0, status=sent (250 Ok: queued as 8C61DD73A9)
Sep 14 15:36:29 localhost postfix/smtp[29045]: 06A9780053: to=<gordonbank11@gmail.com>, relay=auth.gate-on.net[210.197.72.170]:587, delay=2.9, delays=1.7/0.02/0.1/1.1, dsn=2.0.0, status=sent (250 Ok: queued as 8C61DD73A9)
Sep 14 15:36:29 localhost postfix/smtp[29045]: 06A9780053: to=<adamfarm103@hotmail.com>, relay=auth.gate-on.net[210.197.72.170]:587, delay=2.9, delays=1.7/0.02/0.1/1.1, dsn=2.0.0, status=sent (250 Ok: queued as 8C61DD73A9)
Sep 14 15:36:29 localhost postfix/smtp[29045]: 06A9780053: to=<honare.ravzio@ig.com.br>, relay=auth.gate-on.net[210.197.72.170]:587, delay=2.9, delays=1.7/0.02/0.1/1.1, dsn=2.0.0, status=sent (250 Ok: queued as 8C61DD73A9)
Sep 14 15:36:29 localhost postfix/smtp[29045]: 06A9780053: to=<a4deoye2004@yahoo.com>, relay=auth.gate-on.net[210.197.72.170]:587, delay=2.9, delays=1.7/0.02/0.1/1.1, dsn=2.0.0, status=sent (250 Ok: queued as 8C61DD73A9)
Sep 14 15:36:29 localhost postfix/qmgr[1936]: 06A9780053: removed

アカウントは伏せていますが、あるアカウントがハックされて1秒ごとに3~5通のペースでメールを送信していました。

(1週間余りでログが2Gぐらいになっていた)

参考にした「online106の日記」と同じで特定のアカウントをのっとってメールを不正に送信されていたようです。

 

とりあえず該当のアカウントのパスワードを変更して、様子を見ています。

今のところ、すべて認証エラーとなっていますが、先々のことを考えるとセキュリティを強化する必要がありそうです。

幸いにも「online106の日記」さんの中でそのことについても触れられているので、参考にして実施することにします。

とりあえず今日はここまで。

Powered by WordPress