* 目次 [#ja974246] #contents * 趣旨 [#ncb69dec] このページでは、オンプレミス環境でオープンソースのメールサーバであるmailcowを立ち上げるまでの手順を解説しています。2023/05/08 * mailcowの特徴 [#d59e620a] ** スパム対策済み [#l27e8cba] clamd(Clam AntiVirus とは、オープンソース で提供されているクロスプラットフォームのアンチウイルスソフトウェア)とRspamd(OSSの迷惑メールフィルタリングシステム)とか最初から入ってる * 手順 [#gaf0d833] mkdir mailcow cd mailcow git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized mkdir data mkdir helper-scripts ./generate_config.sh vi mailcow.conf ** mailcow.conf [#e139d895] 変更箇所 MAILCOW_HOSTNAME=mail.example.com HTTP_PORT=11334 HTTPS_PORT=11335 SMTP_PORT=2525 TZ=Asia/Tokyo ** CRLFをLFに統一 [#l895f0f4] windows環境でやると、volumesで指定したフォルダにある設定ファイルの改行文字がCRLFになってしまい、そのせいでbashのスクリプトや定義ファイルが処理されないのが原因のエラーが起きるように思うので、以下を実行して対応する。 一旦docker-composeを起動させて、設定ファイルを生成する docker-compose up -d しばらくすると、設定ファイルが十分ではないので、再起動を繰り返すようになるので、停止させる。設定ファイルが生成されればそれでよし。 find data/conf -type f -exec dos2unix {} \; おそらくGitの自動改行コード変換が裏目にでたのだとおもうので、以降はこのプロジェクトに限り、自動変換しないように以下のコマンドを実行しておく git config core.autocrlf false ** 暗号鍵の設定方法 [#vd5cbffa] docker-compose.ymlのあるディレクトリで以下 # 念のためバックアップとっておく cp data/assets/ssl/cert.pem data/assets/ssl/cert.pem.bak cp data/assets/ssl/key.pem data/assets/ssl/key.pem.bak # 暗号キーを生成 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout data/assets/ssl/key.pem -out data/assets/ssl/cert.pem ** それぞれのコンテナのログの見方 [#a59c50c2] docker-compose ps とやると、コンテナ名がわかるので docker logs -f コンテナ名 で、ログが見れる。確か、していした行からのログを出力することもできるが、まあいらんだろうけど、使い方をのせておきます。 *** docker logsの使い方 [#r5d014f6] docker logs --help Usage: docker logs [OPTIONS] CONTAINER Fetch the logs of a container Aliases: docker container logs, docker logs Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. "2013-01-02T13:23:37Z") or relative (e.g. "42m" for 42 minutes) -n, --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. "2013-01-02T13:23:37Z") or relative (e.g. "42m" for 42 minutes) * セキュリティツールClaimAVの不具合の修正 [#za388969] なぜかdockerのimageの設定ファイルで、セキュリティのアップデート用ダウンロードサイトが見えなくなっているので、設定を修正する必要があります。 dockerのホスト側のファイルを以下のように変更してください。 ** data/conf/clamav/freshclam.confの修正後 [#be49a558] #UpdateLogFile /dev/console LogTime yes PidFile /run/clamav/freshclam.pid DatabaseOwner clamav DNSDatabaseInfo current.cvd.clamav.net # DatabaseMirror db.uk.clamav.net # DatabaseMirror db.nl.clamav.net # DatabaseMirror db.fr.clamav.net # DatabaseMirror db.ch.clamav.net # 追加 DatabaseMirror db.jp.clamav.net DatabaseMirror db.us.clamav.net MaxAttempts 4 ScriptedUpdates yes Checks 6 NotifyClamd /etc/clamav/clamd.conf Foreground yes ConnectTimeout 20 ReceiveTimeout 20 TestDatabases yes Bytecode yes ** 起動確認 [#m6f342d1] 初回起動は時間がかかりますが、以下のアドレスで確認できます。 http://localhost:11334/ 初期パスワードは admin / moohoo です。 * 使い方 [#uf052fba] ** 日本語表示させる [#yab13df1] adminでログインができたら、メニューが日本語対応ではないのですが、Chromeブラウザを使っていれば、翻訳機能で日本語表示できます。 以下は、直感でなんとかなるので、ざっくりと説明するだけにします。 ** ドメインの追加 [#z5c7f036] まずは、メールの@の右側、これを「ドメイン」と呼ぶのですが、これを追加しましょう。ローカルなので、なんでもいいです。 ** メールの追加 [#le8d4b21] ユーザ名を入れましょう。 パスワードは適当に入れると、保存はできますがログインできないかもしれません。 ** SOGoというWebメール [#qa62bcd2] ** ログイン [#ze789898] ログインはメールアドレスとパスワードを入れます。 このドキュメントで説明しようと思っていた範囲は以上となります。以下はおまけです。 ** docker-compose up -dしたときに立ち上がるサーバたち [#l157d2a8] $ docker-compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS mailcowdockerized-acme-mailcow-1 mailcow/acme:1.84 "/sbin/tini -g -- /s…" acme-mailcow 2 minutes ago Up 24 seconds mailcowdockerized-clamd-mailcow-1 mailcow/clamd:1.61 "/sbin/tini -g -- /c…" clamd-mailcow 2 minutes ago Up 10 seconds (health: starting) 3310/tcp, 7357/tcp mailcowdockerized-dockerapi-mailcow-1 mailcow/dockerapi:2.03 "/bin/sh /app/docker…" dockerapi-mailcow 2 minutes ago Up About a minute mailcowdockerized-dovecot-mailcow-1 mailcow/dovecot:1.23 "/docker-entrypoint.…" dovecot-mailcow 2 minutes ago Up 56 seconds 0.0.0.0:110->110/tcp, :::110->110/tcp, 0.0.0.0:143->143/tcp, :::143->143/tcp, 0.0.0.0:993->993/tcp, :::993->993/tcp, 0.0.0.0:995->995/tcp, :::995->995/tcp, 0.0.0.0:4190->4190/tcp, :::4190->4190/tcp, 127.0.0.1:19991->12345/tcp mailcowdockerized-ipv6nat-mailcow-1 robbertkl/ipv6nat "/docker-ipv6nat-com…" ipv6nat-mailcow 2 minutes ago Up 11 seconds mailcowdockerized-memcached-mailcow-1 memcached:alpine "docker-entrypoint.s…" memcached-mailcow 2 minutes ago Up About a minute 11211/tcp mailcowdockerized-mysql-mailcow-1 mariadb:10.5 "docker-entrypoint.s…" mysql-mailcow 2 minutes ago Up About a minute 127.0.0.1:13306->3306/tcp mailcowdockerized-netfilter-mailcow-1 mailcow/netfilter:1.52 "python3 -u /server.…" netfilter-mailcow 2 minutes ago Up 37 seconds mailcowdockerized-nginx-mailcow-1 nginx:mainline-alpine "/docker-entrypoint.…" nginx-mailcow 2 minutes ago Up 10 seconds 80/tcp, 0.0.0.0:11334-11335->11334-11335/tcp, :::11334-11335->11334-11335/tcp mailcowdockerized-ofelia-mailcow-1 mcuadros/ofelia:latest "/usr/bin/ofelia dae…" ofelia-mailcow 2 minutes ago Up 32 seconds mailcowdockerized-olefy-mailcow-1 mailcow/olefy:1.11 "python3 -u /app/ole…" olefy-mailcow 2 minutes ago Up About a minute mailcowdockerized-php-fpm-mailcow-1 mailcow/phpfpm:1.83 "/docker-entrypoint.…" php-fpm-mailcow 2 minutes ago Up About a minute 9000/tcp mailcowdockerized-postfix-mailcow-1 mailcow/postfix:1.68 "/docker-entrypoint.…" postfix-mailcow 2 minutes ago Up 58 seconds 0.0.0.0:465->465/tcp, :::465->465/tcp, 0.0.0.0:587->587/tcp, :::587->587/tcp, 588/tcp, 0.0.0.0:2525->25/tcp, :::2525->25/tcp mailcowdockerized-redis-mailcow-1 redis:7-alpine "docker-entrypoint.s…" redis-mailcow 2 minutes ago Up About a minute 127.0.0.1:7654->6379/tcp mailcowdockerized-rspamd-mailcow-1 mailcow/rspamd:1.92 "/docker-entrypoint.…" rspamd-mailcow 2 minutes ago Up 24 seconds mailcowdockerized-sogo-mailcow-1 mailcow/sogo:1.117 "/docker-entrypoint.…" sogo-mailcow 2 minutes ago Up About a minute mailcowdockerized-solr-mailcow-1 mailcow/solr:1.8.1 "docker-entrypoint.s…" solr-mailcow 2 minutes ago Up About a minute 127.0.0.1:18983->8983/tcp mailcowdockerized-unbound-mailcow-1 mailcow/unbound:1.17 "/docker-entrypoint.…" unbound-mailcow 2 minutes ago Up About a minute 53/tcp, 53/udp mailcowdockerized-watchdog-mailcow-1 mailcow/watchdog:1.97 "/bin/sh -c /watchdo…" watchdog-mailcow 2 minutes ago Up About a minute * 参考ブログ [#e67d1edf] ** mailcowをインストールしてubuntuでお手軽メールサーバー構築 [#je227973] https://takuya-1st.hatenablog.jp/entry/2021/03/17/071022 ** メールサーバにmailcowを使ってみましたwith Docker [#hbb53c08] https://blog.tstylestudio.com/2022/02/08/%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92docker%E3%81%A7-mailcow%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F/ *** Install a mail server on Linux in 10 minute [#wd3f16b8] 上記のサイトで紹介されていたYoutube https://youtu.be/4rzc0hWRSPg