@@ -12,24 +12,24 @@ To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these
...
@@ -12,24 +12,24 @@ To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these
## Set it up
## Set it up
In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
In this example, we'll use the Gmail address `gitlab-incoming@gmail.com`.
### Omnibus package installations
### Omnibus package installations
1. Find the `reply_by_email` section in `/etc/gitlab/gitlab.rb`, enable the feature, enter the email address including a placeholder for the `reply_key` and fill in the details for your specific IMAP server and email account:
1. Find the `incoming_email` section in `/etc/gitlab/gitlab.rb`, enable the feature, enter the email address including a placeholder for the `key` that references the item being replied to and fill in the details for your specific IMAP server and email account:
gitlab_rails['reply_by_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. Usually "inbox".
gitlab_rails['incoming_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. Usually "inbox".
```
```
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-replies@gmail.com`.
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-incoming@gmail.com`.
1. Reconfigure GitLab for the changes to take effect:
1. Reconfigure GitLab for the changes to take effect:
...
@@ -40,7 +40,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
...
@@ -40,7 +40,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
1. Verify that everything is configured correctly:
1. Verify that everything is configured correctly:
```sh
```sh
sudo gitlab-rake gitlab:reply_by_email:check
sudo gitlab-rake gitlab:incoming_email:check
```
```
1. Reply by email should now be working.
1. Reply by email should now be working.
...
@@ -53,19 +53,19 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
...
@@ -53,19 +53,19 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
cd /home/git/gitlab
cd /home/git/gitlab
```
```
1. Find the `reply_by_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `reply_key`:
1. Find the `incoming_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `key` that references the item being replied to:
```sh
```sh
sudo editor config/gitlab.yml
sudo editor config/gitlab.yml
```
```
```yaml
```yaml
reply_by_email:
incoming_email:
enabled: true
enabled: true
address: "gitlab-replies+%{reply_key}@gmail.com"
address: "gitlab-incoming+%{key}@gmail.com"
```
```
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-replies@gmail.com`.
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-incoming@gmail.com`.
2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`:
2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`:
...
@@ -89,7 +89,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
...
@@ -89,7 +89,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
# Whether the IMAP server uses SSL
# Whether the IMAP server uses SSL
:ssl: true
:ssl: true
# Email account username. Usually the full email address.
# Email account username. Usually the full email address.
:email: "gitlab-replies@gmail.com"
:email: "gitlab-incoming@gmail.com"
# Email account password
# Email account password
:password: "[REDACTED]"
:password: "[REDACTED]"
# The name of the mailbox where incoming mail will end up. Usually "inbox".
# The name of the mailbox where incoming mail will end up. Usually "inbox".
...
@@ -125,7 +125,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
...
@@ -125,7 +125,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
7. Verify that everything is configured correctly:
7. Verify that everything is configured correctly:
@@ -134,15 +134,15 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
...
@@ -134,15 +134,15 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
1. Go to the GitLab installation directory.
1. Go to the GitLab installation directory.
1. Find the `reply_by_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `reply_key`:
1. Find the `incoming_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `key` that references the item being replied to:
```yaml
```yaml
reply_by_email:
incoming_email:
enabled: true
enabled: true
address: "gitlab-replies+%{reply_key}@gmail.com"
address: "gitlab-incoming+%{key}@gmail.com"
```
```
As mentioned, the part after `+` is ignored, and this will end up in the mailbox for `gitlab-replies@gmail.com`.
As mentioned, the part after `+` is ignored, and this will end up in the mailbox for `gitlab-incoming@gmail.com`.
2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`:
2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`:
...
@@ -162,7 +162,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
...
@@ -162,7 +162,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
# Whether the IMAP server uses SSL
# Whether the IMAP server uses SSL
:ssl: true
:ssl: true
# Email account username. Usually the full email address.
# Email account username. Usually the full email address.
:email: "gitlab-replies@gmail.com"
:email: "gitlab-incoming@gmail.com"
# Email account password
# Email account password
:password: "[REDACTED]"
:password: "[REDACTED]"
# The name of the mailbox where incoming mail will end up. Usually "inbox".
# The name of the mailbox where incoming mail will end up. Usually "inbox".
...
@@ -197,7 +197,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
...
@@ -197,7 +197,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`.
7. Verify that everything is configured correctly:
7. Verify that everything is configured correctly:
This document will take you through the steps of setting up a basic Postfix mail server with IMAP authentication on Ubuntu, to be used with Reply by email.
This document will take you through the steps of setting up a basic Postfix mail server with IMAP authentication on Ubuntu, to be used with Reply by email.
The instructions make the assumption that you will be using the email address `replies@gitlab.example.com`, that is, username `replies` on host `gitlab.example.com`. Don't forget to change it to your actual host when executing the example code snippets.
The instructions make the assumption that you will be using the email address `incoming@gitlab.example.com`, that is, username `incoming` on host `gitlab.example.com`. Don't forget to change it to your actual host when executing the example code snippets.
## Configure your server firewall
## Configure your server firewall
...
@@ -27,16 +27,16 @@ The instructions make the assumption that you will be using the email address `r
...
@@ -27,16 +27,16 @@ The instructions make the assumption that you will be using the email address `r
## Create user
## Create user
1. Create a user for replies.
1. Create a user for incoming email.
```sh
```sh
sudo useradd -m -s /bin/bash replies
sudo useradd -m -s /bin/bash incoming
```
```
1. Set a password for this user.
1. Set a password for this user.
```sh
```sh
sudo passwd replies
sudo passwd incoming
```
```
Be sure not to forget this, you'll need it later.
Be sure not to forget this, you'll need it later.
...
@@ -70,12 +70,12 @@ The instructions make the assumption that you will be using the email address `r
...
@@ -70,12 +70,12 @@ The instructions make the assumption that you will be using the email address `r
sudo postfix start
sudo postfix start
```
```
1. Send the new `replies` user a dummy email to test SMTP, by entering the following into the SMTP prompt:
1. Send the new `incoming` user a dummy email to test SMTP, by entering the following into the SMTP prompt:
```
```
ehlo localhost
ehlo localhost
mail from: root@localhost
mail from: root@localhost
rcpt to: replies@localhost
rcpt to: incoming@localhost
data
data
Subject: Re: Some issue
Subject: Re: Some issue
...
@@ -86,17 +86,17 @@ The instructions make the assumption that you will be using the email address `r
...
@@ -86,17 +86,17 @@ The instructions make the assumption that you will be using the email address `r
(Note: The `.` is a literal period on its own line)
(Note: The `.` is a literal period on its own line)
1. Check if the `replies` user received the email:
1. Check if the `incoming` user received the email:
```sh
```sh
su - replies
su - incoming
mail
mail
```
```
You should see output like this:
You should see output like this:
```
```
"/var/mail/replies": 1 message 1 unread
"/var/mail/incoming": 1 message 1 unread
>U 1 root@localhost 59/2842 Re: Some issue
>U 1 root@localhost 59/2842 Re: Some issue
```
```
...
@@ -106,7 +106,7 @@ The instructions make the assumption that you will be using the email address `r
...
@@ -106,7 +106,7 @@ The instructions make the assumption that you will be using the email address `r
q
q
```
```
1. Log out of the `replies` account and go back to being `root`:
1. Log out of the `incoming` account and go back to being `root`:
```sh
```sh
logout
logout
...
@@ -131,18 +131,18 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
...
@@ -131,18 +131,18 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
1. Test the new setup:
1. Test the new setup:
1. Follow steps 1 and 2 of _[Test the out-of-the-box setup](#test-the-out-of-the-box-setup)_.
1. Follow steps 1 and 2 of _[Test the out-of-the-box setup](#test-the-out-of-the-box-setup)_.
2. Check if the `replies` user received the email:
2. Check if the `incoming` user received the email:
```sh
```sh
su - replies
su - incoming
MAIL=/home/replies/Maildir
MAIL=/home/incoming/Maildir
mail
mail
```
```
You should see output like this:
You should see output like this:
```
```
"/home/replies/Maildir": 1 message 1 unread
"/home/incoming/Maildir": 1 message 1 unread
>U 1 root@localhost 59/2842 Re: Some issue
>U 1 root@localhost 59/2842 Re: Some issue
```
```
...
@@ -152,7 +152,7 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
...
@@ -152,7 +152,7 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
q
q
```
```
1. Log out of the `replies` account and go back to being `root`:
1. Log out of the `incoming` account and go back to being `root`:
```sh
```sh
logout
logout
...
@@ -221,12 +221,12 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
...
@@ -221,12 +221,12 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
If you get a `Connection refused` error instead, make sure your firewall is setup to allow inbound traffic on port 25.
If you get a `Connection refused` error instead, make sure your firewall is setup to allow inbound traffic on port 25.
1. Send the `replies` user a dummy email to test SMTP, by entering the following into the SMTP prompt:
1. Send the `incoming` user a dummy email to test SMTP, by entering the following into the SMTP prompt:
```
```
ehlo gitlab.example.com
ehlo gitlab.example.com
mail from: root@gitlab.example.com
mail from: root@gitlab.example.com
rcpt to: replies@gitlab.example.com
rcpt to: incoming@gitlab.example.com
data
data
Subject: Re: Some issue
Subject: Re: Some issue
...
@@ -237,18 +237,18 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
...
@@ -237,18 +237,18 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
(Note: The `.` is a literal period on its own line)
(Note: The `.` is a literal period on its own line)
1. Check if the `replies` user received the email:
1. Check if the `incoming` user received the email:
```sh
```sh
su - replies
su - incoming
MAIL=/home/replies/Maildir
MAIL=/home/incoming/Maildir
mail
mail
```
```
You should see output like this:
You should see output like this:
```
```
"/home/replies/Maildir": 1 message 1 unread
"/home/incoming/Maildir": 1 message 1 unread
>U 1 root@gitlab.example.com 59/2842 Re: Some issue
>U 1 root@gitlab.example.com 59/2842 Re: Some issue
```
```
...
@@ -258,7 +258,7 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
...
@@ -258,7 +258,7 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
q
q
```
```
1. Log out of the `replies` account and go back to being `root`:
1. Log out of the `incoming` account and go back to being `root`:
```sh
```sh
logout
logout
...
@@ -281,13 +281,13 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
...
@@ -281,13 +281,13 @@ Courier, which we will install later to add IMAP authentication, requires mailbo
- OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc. See COPYING for distribution information.
- OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc. See COPYING for distribution information.
```
```
1. Sign in as the `replies` user to test IMAP, by entering the following into the IMAP prompt:
1. Sign in as the `incoming` user to test IMAP, by entering the following into the IMAP prompt:
```
```
a login replies PASSWORD
a login incoming PASSWORD
```
```
Replace PASSWORD with the password you set on the `replies` user earlier.
Replace PASSWORD with the password you set on the `incoming` user earlier.