{"id":46165172,"url":"https://github.com/masa23/arcmilter","last_synced_at":"2026-05-22T03:07:44.355Z","repository":{"id":253496600,"uuid":"843689961","full_name":"masa23/arcmilter","owner":"masa23","description":"A milter that performs DKIM and ARC signatures.","archived":false,"fork":false,"pushed_at":"2026-01-23T04:59:49.000Z","size":201,"stargazers_count":9,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-23T22:14:23.620Z","etag":null,"topics":["arc","dkim","golang","mail","milter"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/masa23.png","metadata":{"files":{"readme":"README.ja.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-17T05:49:54.000Z","updated_at":"2026-01-23T04:59:33.000Z","dependencies_parsed_at":"2024-08-27T12:43:20.514Z","dependency_job_id":"f3e9bbfa-149c-47d4-98ff-4a6975c0580a","html_url":"https://github.com/masa23/arcmilter","commit_stats":null,"previous_names":["masa23/arcmilter"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/masa23/arcmilter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masa23%2Farcmilter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masa23%2Farcmilter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masa23%2Farcmilter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masa23%2Farcmilter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/masa23","download_url":"https://codeload.github.com/masa23/arcmilter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masa23%2Farcmilter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30001652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T11:09:27.951Z","status":"ssl_error","status_checked_at":"2026-03-02T11:08:53.255Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arc","dkim","golang","mail","milter"],"created_at":"2026-03-02T12:01:14.139Z","updated_at":"2026-05-22T03:07:44.349Z","avatar_url":"https://github.com/masa23.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# arcmilter [![Go Report Card](https://goreportcard.com/badge/github.com/masa23/arcmilter)](https://goreportcard.com/report/github.com/masa23/arcmilter) [![GoDoc](https://godoc.org/github.com/masa23/arcmilter?status.svg)](https://godoc.org/github.com/masa23/arcmilter) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/masa23/arcmilter/main/LICENSE)\n\n* [日本語](README.ja.md)\n* [English](README.md)\n\nDKIM署名およびARCの署名を行うmilterです。  \n[RFC6376](https://datatracker.ietf.org/doc/html/rfc6376)、[RFC8617](https://datatracker.ietf.org/doc/html/rfc8617)に準拠させたつもりですが、  \n個人での利用を想定しているため、実際の運用には十分なテストが必要です。  \nフィードバックやプルリクエストをお待ちしています。\n\n## 署名条件\n\n* DKIM\n  * Fromのドメインの秘密鍵があれば署名する\n  * すでにDKIM署名済のメールは署名しない\n* ARC\n  * Rcpt-Toのドメインの秘密鍵があれば受信時に署名する\n  * 送信時には署名しない\n\n## インストール\n\n### バイナリインストール\n\n* リリースページからバイナリをダウンロードしてください。\n  * [リリースページ](https://github.com/masa23/arcmilter/releases/latest/)\n\n* CentOS/RHELの場合は、以下のコマンドでインストールできます。\n  ``` bash\n  # rpm -ivh arcmilter_*_amd64.rpm\n  ```\n* Debian/Ubuntuの場合は、以下のコマンドでインストールできます。\n  ``` bash\n  # dpkg -i arcmilter_*_amd64.deb\n  ```\n\n### 手動ビルド＆インストール\n\n* golangが入ってる環境が必要です。\n  ``` bash\n  # git clone github.com/masa23/arcmilter\n  # (cd arcmilter/cmd/arcmilter \u0026\u0026 go build)\n\n  # install -m 700 arcmilter/cmd/arcmilter/arcmilter /usr/local/bin/\n  # install -m 600 arcmilter/cmd/arcmilter/arcmilter.yaml /usr/local/etc/arcmilter.yaml\n  # sed -e 's#/usr/bin/arcmilter#/usr/local/bin/arcmilter#' -e '#/etc/arcmilter.yaml#/usr/local/etc/arcmilter/arcmilter.yaml#' \\\n          arcmilter/misc/files/arcmilterctl.service \u003e /etc/systemd/system/arcmilterctl.service\n  # systemctl daemon-reload\n  ```\n\n## 設定\n\n* 設定ファイル\n  ``` bash\n  # vi /etc/arcmilter/arcmilter.yaml\n\n  MilterListen:\n    Network: tcp\n    Address: 127.0.0.1:10029\n  #MilterListen:\n  #  Network: unix\n  #  Address: /var/run/arcmilter.sock\n  #  Mode: 0600\n  #  Owner: postfix # デフォルト: 実行ユーザ\n  #  Group: postfix # デフォルト: 実行グループ\n  ControlSocketFile:\n    Path: /var/run/arcmilterctl.sock\n    Mode: 0600\n  PIDFile:\n    Path: /var/run/arcmilter.pid\n  LogFile:\n    Path: /var/log/arcmilter.log\n    Mode: 0600\n  MyNetworks:\n  - 127.0.0.0/8\n  - ::1/128\n  Domains:\n    # ドメイン名は以下のパターンマッチング構文で指定できます：\n    #\n    # 1. 完全一致: \"example.jp\" - 完全一致するドメインのみ\n    # 2. ワイルドカード: \"*.example.jp\" - example.jp およびそのサブドメインにマッチ\n    # 3. デフォルト: \"*\" - どのパターンにもマッチしない場合に使用\n    #\n    # マッチングの優先順位: 完全一致 \u003e ワイルドカード（より具体的なもの） \u003e デフォルト\n    #\n    # 複数のドメイン・パターンをカンマ区切りで一括指定することもできます：\n    # \"list:example.com,sub.example.com,*.example.net\"\n    #\n    \"example.jp\": # DKIM署名するFromのドメイン、ARC署名するRcpt-Toのドメイン\n      HeaderCanonicalization: \"relaxed\" # ヘッダの正規化方法\n      BodyCanonicalization: \"relaxed\"   # ボディの正規化方法\n      Selector: \"default\"               # セレクタ\n      PrivateKeyFile: \"/etc/arcmilter/keys/example.jp.key\" # 秘密鍵のパス\n      DKIM: true  # DKIM署名を行うか\n      ARC: true   # ARC署名を行うか\n    \"example.com\": # 複数のドメインを設定可能\n      HeaderBodyCanonicalization: \"relaxed\"\n      BodyCanonicalization: \"relaxed\"\n      Selector: \"default\"\n      ARCSelector: \"default\"\n      PrivateKeyFile: \"/etc/arcmilter/keys/example.com.key\"\n      DKIM: true\n      ARC: true\n  User: mail  # milterの子プロセス実行ユーザ    デフォルト: 実行ユーザ\n  Group: mail # milterの子プロセス実行グループ  デフォルト: 実行グループ\n  ARCSignHeaders: # ARC署名するヘッダ\n    - \"DKIM-Signature\"\n    - \"Date\"\n    - \"From\"\n    - \"To\"\n    - \"Message-Id\"\n  DKIMSignHeaders: # DKIM署名するヘッダ\n    - \"Date\"\n    - \"From\"\n    - \"To\"\n    - \"Reply-To\"\n    - \"Message-ID\"\n    - \"Subject\"\n  Debug: false\n  ```\n\n* 秘密鍵の生成\n  ``` bash\n  # openssl genpkey -algorithm rsa -out /etc/arcmilter/keys/example.jp.key -pkeyopt rsa_keygen_bits:2048\n  ```\n\n* 公開鍵の生成\n  ``` bash\n  # openssl pkey -in /etc/arcmilter/keys/example.jp.key -pubout -out /etc/arcmilter/keys/example.jp.pub\n  ```\n\n* DNSレコードの設定\n  ``` bash\n  # openssl pkey -in /etc/arcmilter/keys/example.jp.pub -pubin -outform DER | openssl base64 -A | tr -d '\\n' | fold -w 120 | sed -e 's/^/\"/g' -e 's/$/\"/g'\n  ```\n\n* DNSレコードの例\n  ``` zonefile\n  \u003cselector\u003e._domainkey IN TXT  (\"v=DKIM1; h=sha256; k=rsa; p=\"\n                                 \"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxBYDpP2LvLICZKSyzA9noR39zm8FGi2F2f83zldwvxyqaKgnmJ0sNsx86zfcbF1JosTLVXdyPE/u\"\n                                 \"eaILXQ4CLK065m39NTv+UzIyg1Jsp9KeOnfia1/Bn3dYjLV/Ix84SwMtP15k7zY+2l4or38/uyhTGFpLF/bET2LlP8eBxXHtg6t1A798qR4/ZGVauKCDkbye\"\n                                 \"YHjGJ6DktYmjk9Cv2DC7x3SYekHjGQMamswHZl7kYlKgiZKDVevXWcd5IFWONOObzZdgO2boDf/wrqS1eA0BFstbTRdENj1tH573pku3vrOPfJF123E8h6ii\"\n                                 \"86jISHmtWg500WPJ8LB8Gzc7CQIDAQAB\")\n  ```\n\n## 起動\n\n``` bash\n# systemctl start arcmilter.service\n```\n\n## Postfixの設定例\n\n``` bash\n# vi /etc/postfix/main.cf\n\nTCPの場合\nsmtpd_milters = inet:127.0.0.1:10029\n\nUNIXソケットの場合\nsmtpd_milters = unix:/var/run/arcmilter.sock\n```\n\n## Thanks!\n\n以下の外部ライブラリを使用しています。\n\n  * [d--j/go-milter](https://github.com/d--j/go-milter)\n  * [k0kubun/pp](https://github.com/k0kubun/pp)\n  * [yaml.v3](https://gopkg.in/yaml.v3)\n\n以下のライブラリは制作に当たって参考にさせていただきました。\n\n  * [emersion/go-msgauth](https://github.com/emersion/go-msgauth/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasa23%2Farcmilter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmasa23%2Farcmilter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasa23%2Farcmilter/lists"}