成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Docker+Davmail換掉你的Outlook

云計算
作者從頭介紹了如何在Ubuntu系統(tǒng)下安裝Docker到使用Upstart工具配置一個Davmail服務器的全過程。每一步都配有圖文,詳盡易懂。對使用Docker配置郵件服務器的讀者很有價值。

簡介

不管你喜歡還是不喜歡,有時候不得不通過Exchange服務器去收發(fā)郵件,但是如果你不喜歡微軟系的郵件客戶端(指Outlook),就會給你帶來一定的不便,因為你可能更傾向于在兼容模式下,通過IMAP收取、SMTP發(fā)送您的郵件。

...好吧,這正是davmail出現(xiàn)的原因。

davmail是一個Java應用程序,它能在標準兼容的客戶端與Exchange服務器之間建立連接,這是一個非常棒的工具-這也是唯一的解決方案。它還是單機的,可以無狀態(tài)的使用,更有意思的是Java讓它非常適合運行在Docker容器里面。

目標

把Docker安裝在CenturyLink的云主機上,獲取一個無狀態(tài)的運行davmail的容器鏡像,然后讓系統(tǒng)通過upstart來管理容器。

附加說明

如何獲取一臺CenturyLink云主機就作為一項練習留給讀者。

為了簡單,我們在Ubuntu平臺使用docker.io包來安裝docker,然后手動配置它;當然你還可以使用一種更方便的方式即通過puppet-git-receiver和docker Puppet Forge module這兩個工具來管理Docker安裝包和容器關于upstart的配置,關于這兩個工具的使用會在以后的教程中講述。

安全是我們最關心的問題,尤其是在一個企業(yè)的環(huán)境中,所以請注意你的本地的工作站與云主機之間的連接是否安全。常見的和行之有效的方法包括ssh端口轉(zhuǎn)發(fā)和使用stunnel(一個不是那么隨意與方便(ad-hoc)的方法)。

無論你個人的郵件有多么不重要,也不要以明文的方式收取他們,因為這樣會影響到整個郵件服務器的安全,從而波及其他人。

前期準備

出于這篇文章的考慮,我們假設你已經(jīng)做好了充分的準備,已經(jīng)運行了一臺基于Ubuntu-14.04的云主機;如果沒有,請接著往下讀你可以非常容易的啟動一臺Ubuntu機器,然后安裝Vagrant v1.6.x+和VirtualBox并進行相關配置,我的前一篇關于Chef和Vagrant的教程會提供一些指導,這又是給讀者留下的一個練習。

好了,準備好了嗎,讓我們開始吧!

安裝Docker

我們從Ubuntu上從安裝docker開始:

  1. root@trusty:~# apt-get install docker.io 
  2. Reading package lists... Done 
  3. Building dependency tree 
  4. Reading state information... Done 
  5. The following extra packages will be installed: 
  6. aufs-tools cgroup-lite 
  7. Suggested packages: 
  8. btrfs-tools debootstrap lxc rinse 
  9. The following NEW packages will be installed: 
  10. aufs-tools cgroup-lite docker.io 
  11. 0 upgraded, 3 newly installed, 0 to remove and 15 not upgraded. 
  12. Need to get 4,207 kB of archives. 
  13. After this operation, 25.0 MB of additional disk space will be used. 
  14. Do you want to continue? [Y/n] 
  15. Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe aufs-tools amd64 1:3.2+20130722-1.1 [92.3 kB] 
  16. Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe docker.io amd64 1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1 [4,111 kB] 
  17. Get:3 http://archive.ubuntu.com/ubuntu/ trusty/main cgroup-lite all 1.9 [3,918 B] 
  18. Fetched 4,207 kB in 8s (480 kB/s) 
  19. Selecting previously unselected package aufs-tools. 
  20. (Reading database ... 61703 files and directories currently installed.) 
  21. Preparing to unpack .../aufs-tools_1%3a3.2+20130722-1.1_amd64.deb ... 
  22. Unpacking aufs-tools (1:3.2+20130722-1.1) ... 
  23. Selecting previously unselected package docker.io. 
  24. Preparing to unpack .../docker.io_1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1_amd64.deb ... 
  25. Unpacking docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ... 
  26. Selecting previously unselected package cgroup-lite. 
  27. Preparing to unpack .../cgroup-lite_1.9_all.deb ... 
  28. Unpacking cgroup-lite (1.9) ... 
  29. Processing triggers for man-db (2.6.7.1-1) ... 
  30. Processing triggers for ureadahead (0.100.0-16) ... 
  31. Setting up aufs-tools (1:3.2+20130722-1.1) ... 
  32. Setting up docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ... 
  33. Adding group `docker' (GID 114) ... 
  34. Done. 
  35. docker.io start/running, process 2353 
  36. Setting up cgroup-lite (1.9) ... 
  37. cgroup-lite start/running 
  38. Processing triggers for libc-bin (2.19-0ubuntu6.3) ... 
  39. Processing triggers for ureadahead (0.100.0-16) ... 

在安裝日志的第33行(注:Adding group `docker' (GID 114) ...這行),我們看到系統(tǒng)創(chuàng)建了一個docker用戶組;值得一提的是,如果把用戶加入到這個“docker用戶組”后,此后再通過命令行與docker服務(或者說是進程)交互的時候就不用每次在命令前面加sudo了,這同樣作為一個練習留給讀者。

#p#

創(chuàng)建或者挑選我們需要的鏡像

在Docker hub中有一些可用的davmail鏡像,我們選擇鏡像rsrchboy/davmail-savvis-docker(https://registry.hub.docker.co ... file/)理由很簡單,它是一個配置好了的davmail容器:

  • 他不需要掛載/綁定其他任何資源,也不需要掛載外部的數(shù)據(jù)卷(volume);
  • 他是單機運行的 ;
  • 沒有以root身份運行。

你可能需要根據(jù)Exchange的運行環(huán)境與配置來修改此鏡像(rsrchboy/davmail-savvis-docker)中davmail的配置;如果是這樣的話,你就可以把此鏡像作為一個基礎;把對配置的修改疊加(ADD)到它之上,然后保存成一個新的鏡像,再在新鏡像的基礎上重新構建davmail服務。

下面是該鏡像的Dockerfile:

  1. # This software is Copyright (c) 2014 by Chris Weyl <christopher.weyl@centurylink.com> 
  2. (That is, effectively by CenturyLinkLabs.) 
  3. This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 
  4. International License (CC-BY-SA-4.0). 
  5. http://creativecommons.org/licenses/by-sa/4.0/ 
  6. FROM gimoh/davmail:latest 
  7. MAINTAINER Chris Weyl <christopher.weyl@centurylink.com> 
  8.  
  9. RUN mkdir /etc/davmail 
  10. ADD davmail.properties /etc/davmail/ 
  11. add a non-root system user 
  12. note we specify a id so as to try to avoid collisions on the host 
  13. RUN adduser --system --uid 500 --group --home /var/lib/davmail davmail 
  14. RUN chmod 0644 /etc/davmail/* 
  15. ...and use it! 
  16. USER davmail 
  17. override default entry point as we've supplied a config 
  18. ENTRYPOINT ["/usr/local/davmail/davmail.sh""/etc/davmail/davmail.properties"

實在是迫不及待了,我們先試運行一下:

  1. root@trusty:~# docker run rsrchboy/davmail-savvis-docker 
  2. 2014-09-26 18:37:32,226 INFO [main] davmail - DavMail Gateway 4.5.0-2292 listening on SMTP port 1025 POP port 1110 IMAP port 1143 CALDAV port 1080 LDAP port 1389  

配置容器,通過upstart讓容器像系統(tǒng)服務一樣運行

upstart是類unix系統(tǒng)中的一種服務管理方式,最近的Ubuntu發(fā)行版本已經(jīng)默認采用upstart來管理系統(tǒng)服務了,它可以非常方便的實現(xiàn)我們的要求。

  1. Originally created by Gareth Rushgrove's puppetforge docker module 
  2. description "start and stop corporate-davmail in docker" 
  3. author "Chris Weyl <christopher.weyl@centurylink.com>" 
  4.  
  5. start on (started docker.io) 
  6. stop on stopping docker.io 
  7.  
  8. setuid root 
  9.  
  10. respawn 
  11. respawn limit 5 20 
  12.  
  13.  
  14. script 
  15. docker run --cidfile=/var/run/docker-corporate-davmail.cid \ 
  16. -p 127.0.0.1:11025:1025 \ 
  17. -p 127.0.0.1:11110:1110 \ 
  18. -p 127.0.0.1:11143:1143 \ 
  19. -p 127.0.0.1:11080:1080 \ 
  20. -p 127.0.0.1:11389:1389 \ 
  21. --net bridge \ 
  22. -m 0 \ 
  23. rsrchboy/davmail-savvis-docker \ 
  24. && 
  25. exec docker wait "$(cat /var/run/docker-corporate-davmail.cid)" 
  26. end script 
  27.  
  28.  
  29. post-stop script 
  30. if [ -e "/var/run/docker-corporate-davmail.cid" ]; then 
  31. docker kill "$(cat /var/run/docker-corporate-davmail.cid)" && \ 
  32. rm "/var/run/docker-corporate-davmail.cid" 
  33. fi 
  34. end script 
  35. vim: set ft=upstart : 

在這里我們要注意的關于upstart配置項如下(配置文件):

  • 聲明docker.io服務的依賴項(6-7行)
  • 聲明服務在異常終止時要重啟服務(11行)還有建立安全的限定(12行)
  • 聲明如何啟動(15-27行)和關閉(30-35行)服務

毋庸置疑,upstart配置中最核心的還是在docker run命令。

  1. docker run --cidfile=/var/run/docker-corporate-davmail.cid \ 
  2. -p 127.0.0.1:11025:1025 \ 
  3. -p 127.0.0.1:11110:1110 \ 
  4. -p 127.0.0.1:11143:1143 \ 
  5. -p 127.0.0.1:11080:1080 \ 
  6. -p 127.0.0.1:11389:1389 \ 
  7. --net bridge \ 
  8. -m 0 \ 
  9. rsrchboy/davmail-savvis-docker 

在日志中我們看到,Docker的端口轉(zhuǎn)發(fā)已經(jīng)建立,davmail監(jiān)聽的端口有:

  1. SMTP port 1025 
  2. POP port 1110 
  3. IMAP port 1143 
  4. CALDAV port 1080 
  5. LDAP port 1389 

這里要記得 類unix系統(tǒng)中non-privliged的進程是無法啟動小于1024的端口的,所以我們重新做了映射。

我們告訴docker在云主機也就是宿主機上綁定端口時,只綁定大于10000的端口,且只綁定在loopback上。

這樣,當你要訪問IMAP時,你就可以再云主機上通過127.0.0.1:11143訪問,這樣就可以阻止攻擊者遠程的連接你的davmail進行攻擊。

現(xiàn)在我們已經(jīng)有了一個upstart配置文件,剩下就是如果安裝這個文件了,就是把他復制到/etc/init下,然后啟動服務:

  1. root@trusty:~# cp docker-corporate-davmail.conf /etc/init/ 
  2. root@trusty:~# service docker-corporate-davmail status 
  3. docker-corporate-davmail stop/waiting 
  4. root@trusty:~# service docker-corporate-davmail start 
  5. docker-corporate-davmail start/running, process 4149 
  6. root@trusty:~# docker ps 
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
  8. 7f93d3b35b60 rsrchboy/davmail-savvis-docker:latest /usr/local/davmail/d 3 seconds ago Up 2 seconds 127.0.0.1:11025->1025/tcp, 127.0.0.1:11080->1080/tcp, 127.0.0.1:11110->1110/tcp, 127.0.0.1:11143->1143/tcp, 127.0.0.1:11389->1389/tcp kickass_mestorf 

這個容器是無狀態(tài)的,它只是在標準的客戶端和Exchange之間做一個轉(zhuǎn)譯(translate),你可以對容器進行啟動,關閉,終止,禁用,啟用等操作;現(xiàn)在davmail容器安全的運行在云主機里面,你不用有其他擔心,除非客戶端到服務器的連接中斷。因此,我們解決了復雜的問題同時,還節(jié)省了我們成把的時間。

享受的時刻

到目前為止,你的davmail已經(jīng)運行在容器里面了,通過正確的端口映射配置,現(xiàn)在你可以選擇你喜歡的客戶端去跟Exchange server 通信收發(fā)郵件了!davmail建議的客戶端是pine,當然這只是個建議而已。

原文鏈接:http://dockerone.com/article/91

責任編輯:Ophira 來源: dockerone
相關推薦

2018-10-30 11:19:33

智能破解安全

2017-07-21 09:48:34

SnackBarToastGoogle

2021-04-02 07:58:36

LogbackLog4j2日志

2011-09-20 09:51:13

2022-03-02 10:13:01

SELinux開源

2015-07-27 08:58:29

NAS云存儲非結(jié)構化數(shù)據(jù)存儲

2022-05-02 17:08:50

芯片蘋果高通

2021-02-05 15:50:27

PythonShell命令

2012-12-19 20:14:20

markdown

2012-12-19 20:18:54

markdown

2023-06-08 17:20:37

Lua樹莓派

2012-12-19 20:15:51

markdown

2022-01-27 15:37:34

Asciinema終端會話記錄器開源

2012-12-19 20:07:31

markdown

2022-06-19 14:13:29

tmateLinux

2020-04-15 11:00:24

ChezmoiLinux

2012-12-19 20:20:32

markdown

2021-04-17 15:11:36

開源VeraCrypt加密文件

2020-08-23 18:06:45

Python 開發(fā)Docker

2010-12-31 10:43:34

Outlook Web
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 熟女毛片 | 日本a视频 | 久久精品视频一区二区三区 | 久久里面有精品 | 狠狠爱综合 | 人人澡人人射 | 国产激情91久久精品导航 | 国产精品成人久久久久 | 欧美在线一区二区三区 | 男女网站免费观看 | 美女操网站 | 亚洲视频一区在线观看 | 先锋资源网 | 日韩久久中文字幕 | 国产国拍亚洲精品av | 亚洲看片网站 | 热re99久久精品国产99热 | 国产在线播放av | 国产精品国产a级 | 亚洲网站免费看 | 中文字幕亚洲精品 | 国产九九精品 | 午夜免费视频 | 男女视频网站 | 亚洲欧美一区二区三区视频 | 日本不卡一区二区三区 | 国产综合区 | 欧美一级片在线看 | 国产成人免费在线 | 免费一级欧美在线观看视频 | 亚洲电影免费 | av中文字幕在线 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 国产成人91视频 | 亚洲社区在线 | 久草久草久草 | 国产综合网址 | 激情五月婷婷综合 | 一级免费在线视频 | 欧洲亚洲视频 | 中文在线视频观看 |