5.6 KiB
Reply by email
GitLab can be set up to allow users to comment on issues and merge requests by replying to notification emails.
In order to do this, you need access to an IMAP-enabled email account, with a provider or server that supports email sub-addressing. Sub-addressing is a feature where any email to user+some_arbitrary_tag@example.com
will end up in the mailbox for user@example.com
, and is supported by providers such as Gmail, Yahoo! Mail, Outlook.com and iCloud, as well as the Postfix mail server which you can run on-premises.
Set it up
In this example, we'll use the Gmail address gitlab-replies@gmail.com
. If you're actually using Gmail with Reply by email, make sure you have IMAP access enabled and allow less secure apps to access the account.
Installations from source
-
Go to the GitLab installation directory:
cd /home/git/gitlab
-
Find the
reply_by_email
section inconfig/gitlab.yml
, enable the feature and enter the email address including a placeholder for thereply_key
:sudo editor config/gitlab.yml
reply_by_email: enabled: true address: "gitlab-replies+%{reply_key}@gmail.com"
As mentioned, the part after
+
is ignored, and this will end up in the mailbox forgitlab-replies@gmail.com
. -
Find
config/mail_room.yml.example
and copy it toconfig/mail_room.yml
:sudo cp config/mail_room.yml.example config/mail_room.yml
-
Uncomment the configuration options in
config/mail_room.yml
and fill in the details for your specific IMAP server and email account:sudo editor config/mail_room.yml
:mailboxes: - # IMAP server host :host: "imap.gmail.com" # IMAP server port :port: 993 # Whether the IMAP server uses SSL :ssl: true # Email account username. Usually the full email address. :email: "gitlab-replies@gmail.com" # Email account password :password: "[REDACTED]" # The name of the mailbox where incoming mail will end up. Usually "inbox". :name: "inbox" # Always "sidekiq". :delivery_method: sidekiq # Always true. :delete_after_delivery: true :delivery_options: # The URL to the Redis server used by Sidekiq. Should match the URL in config/resque.yml. :redis_url: redis://localhost:6379 # Always "resque:gitlab". :namespace: resque:gitlab # Always "incoming_email". :queue: incoming_email # Always "EmailReceiverWorker" :worker: EmailReceiverWorker
-
Find
lib/support/init.d/gitlab.default.example
and copy it to/etc/default/gitlab
:sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
-
Edit
/etc/default/gitlab
to enablemail_room
:sudo editor /etc/default/gitlab
mail_room_enabled=true
-
Restart GitLab:
sudo service gitlab restart
-
Check if everything is configured correctly:
sudo bundle exec rake gitlab:reply_by_email:check RAILS_ENV=production
-
Reply by email should now be working.
Omnibus package installations
TODO
Development
-
Go to the GitLab installation directory.
-
Find the
reply_by_email
section inconfig/gitlab.yml
, enable the feature and enter the email address including a placeholder for thereply_key
:reply_by_email: enabled: true address: "gitlab-replies+%{reply_key}@gmail.com"
As mentioned, the part after
+
is ignored, and this will end up in the mailbox forgitlab-replies@gmail.com
. -
Find
config/mail_room.yml.example
and copy it toconfig/mail_room.yml
:sudo cp config/mail_room.yml.example config/mail_room.yml
-
Uncomment the configuration options in
config/mail_room.yml
and fill in the details for your specific IMAP server and email account::mailboxes: - # IMAP server host :host: "imap.gmail.com" # IMAP server port :port: 993 # Whether the IMAP server uses SSL :ssl: true # Email account username. Usually the full email address. :email: "gitlab-replies@gmail.com" # Email account password :password: "[REDACTED]" # The name of the mailbox where incoming mail will end up. Usually "inbox". :name: "inbox" # Always "sidekiq". :delivery_method: sidekiq # Always true. :delete_after_delivery: true :delivery_options: # The URL to the Redis server used by Sidekiq. Should match the URL in config/resque.yml. :redis_url: redis://localhost:6379 # Always "resque:gitlab". :namespace: resque:gitlab # Always "incoming_email". :queue: incoming_email # Always "EmailReceiverWorker" :worker: EmailReceiverWorker
-
Uncomment the
mail_room
line in yourProcfile
:mail_room: bundle exec mail_room -q -c config/mail_room.yml
-
Restart GitLab:
bundle exec foreman start
-
Check if everything is configured correctly:
bundle exec rake gitlab:reply_by_email:check RAILS_ENV=development
-
Reply by email should now be working.