AnonAddyをサーバーにインストールする方法

スポンサーリンク
スポンサーリンク

概要

たくさんのメールアドレスを作成して、特定のメールアドレスにメールを転送するために、AnonAddyをインストールして利用してみました。

やりたいこと

使い捨て用や、サービスごとにメールアドレスを使い分けたいと思います。このようにたくさんのメールアドレスを用意しておけば、もしもどこかのサービスが私のメールアドレスを漏らしたとしても、どこから漏れたのかわかりやすくなり、漏れたということが分かった際にそのメールアドレスを削除してスパムメールなどの対策ができます。

このようなことができるサービスには、AnonAddyやSimpleLoginがあります。どちらも一部の機能は無料で使うことができますが、メールアドレスの数に制限があったり、受信できるメールの容量に制限があったりします。

そこで、これらのサービスはオープンソースで開発が進められているため、自分でサーバーを用意してサービスを動かすことにしました。こうすることで、上記の制限が適用されません。

AnonAddyとSimpleLoginともにソースコードが公開されているのですが、インストールのやりやすさから今回はAnonAddyを利用することにしました。AnonAddyであれば、公式にDocker Composeでデータベースも含めて一括で実行できるスクリプトが用意されているためです。

インストール

AnonAddyのインストールに関する情報は、次のGitHubのプロジェクトにまとめられています。

https://github.com/anonaddy/docker

最初に、サーバー上にこのリポジトリをクローンします。

git clone https://github.com/anonaddy/docker.git docker-anonaddy

その後、ディレクトリを移動します。

cd docker-anonaddy/examples/compose

ここにある、docker-compose.ymlファイルを確認します。

version: "3.5"

services:
  db:
    image: mariadb:10.5
    container_name: anonaddy_db
    command:
      - "mysqld"
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
    volumes:
      - "./db:/var/lib/mysql"
    environment:
      - "MYSQL_ALLOW_EMPTY_PASSWORD=no"
      - "MYSQL_DATABASE=anonaddy"
      - "MYSQL_USER=anonaddy"
      - "MYSQL_PASSWORD=パスワード"
    restart: always

  redis:
    image: redis:4.0-alpine
    container_name: anonaddy_redis
    restart: always

  anonaddy:
    image: anonaddy/anonaddy:latest
    container_name: anonaddy
    depends_on:
      - db
      - redis
    ports:
      - target: 25
        published: 25
        protocol: tcp
      - target: 8000
        published: 8000
        protocol: tcp
    volumes:
      - "./data:/data"
    env_file:
      - "./anonaddy.env"
    environment:
      - "DB_HOST=db"
      - "DB_DATABASE=anonaddy"
      - "DB_USERNAME=anonaddy"
      - "DB_PASSWORD=パスワード"
      - "REDIS_HOST=redis"
    restart: always

変更した部分は、データベースの設定に関する記述です。MySQLの環境変数に、AnonAddy用のデータベースの名前やユーザー名、パスワードを設定しています。また、そのMySQLに接続できるようにAnonAddyの環境変数にデータベースの設定をしています。

このほかに、AnonAddyの設定をする必要があります。設定には、anonaddy.envを編集します。この設定は、DKIMなどの諸々の設定が済んだものになっています。

TZ=Asia/Tokyo
PUID=1000
PGID=1000

MEMORY_LIMIT=256M
UPLOAD_MAX_SIZE=16M
OPCACHE_MEM_SIZE=128
REAL_IP_FROM=0.0.0.0/32
REAL_IP_HEADER=X-Forwarded-For
LOG_IP_VAR=remote_addr

APP_KEY=
APP_DEBUG=false
APP_URL=https://anonaddy.example.com:

[email protected]
ANONADDY_ADMIN_USERNAME=anonaddy
ANONADDY_ENABLE_REGISTRATION=false
ANONADDY_DOMAIN=mail.example.com
ANONADDY_ALL_DOMAINS=mail.example.com
ANONADDY_HOSTNAME=mail.example.com
ANONADDY_DNS_RESOLVER=127.0.0.1
ANONADDY_SECRET=
ANONADDY_LIMIT=1000
ANONADDY_BANDWIDTH_LIMIT=10485760000
ANONADDY_NEW_ALIAS_LIMIT=1000
ANONADDY_ADDITIONAL_USERNAME_LIMIT=3

ANONADDY_DKIM_SIGNING_KEY=/data/dkim/mail.example.com.private
ANONADDY_DKIM_SELECTOR=default

MAIL_FROM_NAME=AnonAddy
[email protected]
MAIL_ENCRYPTION=tls

POSTFIX_DEBUG=false
POSTFIX_SMTPD_TLS=true
POSTFIX_SMTP_TLS=true
POSTFIX_SMTPD_TLS_CERT_FILE=/data/certs/fullchain.pem
POSTFIX_SMTPD_TLS_KEY_FILE=/data/certs/privkey.pem

SANCTUM_STATEFUL_DOMAINS=anonaddy.example.com

RSPAMD_ENABLE=true

ドメインなど、自分自身の環境に合わせて設定を修正してください。anonaddy.example.comは、AnonAddyにアクセスする際のドメインで置き換えてください。mail.example.comは、メールを送信するサーバーのドメインで置き換えてください。私の環境ではmail.example.comは、AnonAddyをインストールしたサーバーのIPアドレスとなっています。

そのほかにも、ANONADDY_SECRET=に、サーバー上でecho "base64:$(openssl rand -base64 32)"を実行した結果を設定します。ANONADDY_SECRET=には、推測されない乱数等で作成した長い文字列を指定します。

さらに、DKIMで利用する証明書を作成します。この証明書はANONADDY_DKIM_SIGNING_KEY=/data/dkim/mail.example.com.privateで指定しているものになります。ちなみにファイル名は、ANONADDY_DOMAINの指定に応じて変わります。

docker compose run --entrypoint '' anonaddy gen-dkim

最後に、AnonAddyを経由したメールについて、デフォルトでは平文で送受信するため、暗号化の設定をします。暗号化に用いるSSL/TLS証明書は、オレオレ証明書でもよいかもしれませんが、Let’s Encryptなどで用意するほうがメールサーバーの信用が上がるためよいです。用意した証明書は、Docker Composeでマウントする関係で./data/certs/fullchain.pem./certs/certs/privkey.pemなどに配置しておくとよいです。

これで設定は終わりです。

実行

設定が終わったら、AnonAddyを起動します。

docker compose up -d

デフォルトでは、8000番ポートでサービスを公開しています。

私は、Nginxのリバースプロキシ機能を利用して、AnonAddyにアクセスするようにしています。

管理者ユーザーとしてanonaddyが作成されているので、anonaddyでログインします。パスワードはなんでもよいです。初回ログイン後、パスワードの設定画面が表示されます。

さいごに

設定する箇所が多かったり、設定が分かりにくかったりして、動かすまで苦労しました。メールの送受信に関する暗号化の設定が抜けていると、メールサービスによっては、迷惑メールと判定されることがありました。この設定は必須のように思います。

私はほかのユーザーと共有しないようにするために、独自ドメインをいくつか持っているので、そのうちのひとつを自分用のドメインとして、インストール後に設定しました。anonaddy.envで設定してしまうと、サービスの利用者全員に共有されてしまうためです。

このほかにも、実際に利用していると、メールがちゃんと届かなかったり、遅延が発生したりと問題がありました。そちらについては、後で記事にしたいと思います。

参考になればうれしいです。

タイトルとURLをコピーしました