受信メールのレーキ作業

GitLab 15.9 で導入されました

以下は着信メール関連のRakeタスクです。

シークレット

GitLabでは、ファイルシステムに平文で保存する代わりに、暗号化されたファイルから読み取った受信メールのシークレットを使用することができます。暗号化されたファイルの内容を更新するために、以下のRakeタスクが用意されています。

シークレットを表示

現在の受信メールのシークレットの内容を表示します。

Linux package (Omnibus)
sudo gitlab-rake gitlab:incoming_email:secret:show
Helm chart (Kubernetes)

Kubernetesシークレットを使用して、受信メールのパスワードを保存します。詳細については、Helm IMAPシークレットをお読みください。

Docker
sudo docker exec -t <container name> gitlab:incoming_email:secret:show
Self-compiled (source)
bundle exec rake gitlab:incoming_email:secret:show RAILS_ENV=production

出力例

password: 'examplepassword'
user: 'incoming-email@mail.example.com'

シークレットの編集

秘密の内容をエディタで開き、終了時に暗号化された秘密ファイルに結果を書き込みます。

Linux package (Omnibus)
sudo gitlab-rake gitlab:incoming_email:secret:edit EDITOR=vim
Helm chart (Kubernetes)

Kubernetesシークレットを使用して、受信メールのパスワードを保存します。詳細については、Helm IMAPシークレットをお読みください。

Docker
sudo docker exec -t <container name> gitlab:incoming_email:secret:edit EDITOR=editor
Self-compiled (source)
bundle exec rake gitlab:incoming_email:secret:edit RAILS_ENV=production EDITOR=vim

生のシークレットを書き込む

新しいシークレットコンテンツをSTDINに書き込んでください。

Linux package (Omnibus)
echo -e "password: 'examplepassword'" | sudo gitlab-rake gitlab:incoming_email:secret:write
Helm chart (Kubernetes)

Kubernetesシークレットを使用して、受信メールのパスワードを保存します。詳細については、Helm IMAPシークレットをお読みください。

Docker
sudo docker exec -t <container name> /bin/bash
echo -e "password: 'examplepassword'" | gitlab-rake gitlab:incoming_email:secret:write
Self-compiled (source)
echo -e "password: 'examplepassword'" | bundle exec rake gitlab:incoming_email:secret:write RAILS_ENV=production

シークレットの例

エディタの例

writeタスクはeditコマンドがエディタで動作しない場合に使用できます:

# Write the existing secret to a plaintext file
sudo gitlab-rake gitlab:incoming_email:secret:show > incoming_email.yaml
# Edit the incoming_email file in your editor
...
# Re-encrypt the file
cat incoming_email.yaml | sudo gitlab-rake gitlab:incoming_email:secret:write
# Remove the plaintext file
rm incoming_email.yaml

KMSインテグレーション例

KMSで暗号化されたコンテンツの受信アプリケーションとしても使用できます:

gcloud kms decrypt --key my-key --keyring my-test-kms --plaintext-file=- --ciphertext-file=my-file --location=us-west1 | sudo gitlab-rake gitlab:incoming_email:secret:write

Google Cloud シークレットインテグレーション例

Google Cloudからシークレットを受け取るアプリケーションとしても使用できます:

gcloud secrets versions access latest --secret="my-test-secret" > $1 | sudo gitlab-rake gitlab:incoming_email:secret:write