From a2f170b35a67bda4841db0fb5326ce675f4cd5d5 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Mon, 24 Aug 2015 11:23:24 -0700 Subject: Tweak Reply by email docs. --- doc/reply_by_email/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/reply_by_email/README.md b/doc/reply_by_email/README.md index 91eea956e52..67dc2b04000 100644 --- a/doc/reply_by_email/README.md +++ b/doc/reply_by_email/README.md @@ -4,9 +4,13 @@ GitLab can be set up to allow users to comment on issues and merge requests by r In order to do this, you need access to an IMAP-enabled email account, with a provider or server that supports [email sub-addressing](https://en.wikipedia.org/wiki/Email_address#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](http://www.postfix.org/) mail server which you can run on-premises. +If you want to use a Gmail with Reply by email, make sure you have [IMAP access enabled](https://support.google.com/mail/troubleshooter/1668960?hl=en#ts=1665018) and [allow less secure apps to access the account](https://support.google.com/accounts/answer/6010255). + +To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these instructions](https://help.ubuntu.com/community/PostfixBasicSetupHowto). + ## 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](https://support.google.com/mail/troubleshooter/1668960?hl=en#ts=1665018) and [allow less secure apps to access the account](https://support.google.com/accounts/answer/6010255). +In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. ### Installations from source -- cgit v1.2.1 From 7d5c6a1ada3da0d3d2c641736cd3c140c598d7eb Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Mon, 24 Aug 2015 14:46:45 -0700 Subject: Expand documentation --- doc/reply_by_email/README.md | 8 +- doc/reply_by_email/postfix.md | 316 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 321 insertions(+), 3 deletions(-) create mode 100644 doc/reply_by_email/postfix.md diff --git a/doc/reply_by_email/README.md b/doc/reply_by_email/README.md index 67dc2b04000..accd83b66df 100644 --- a/doc/reply_by_email/README.md +++ b/doc/reply_by_email/README.md @@ -2,11 +2,13 @@ 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](https://en.wikipedia.org/wiki/Email_address#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](http://www.postfix.org/) mail server which you can run on-premises. +## Get a mailbox -If you want to use a Gmail with Reply by email, make sure you have [IMAP access enabled](https://support.google.com/mail/troubleshooter/1668960?hl=en#ts=1665018) and [allow less secure apps to access the account](https://support.google.com/accounts/answer/6010255). +Reply by email requires an IMAP-enabled email account, with a provider or server that supports [email sub-addressing](https://en.wikipedia.org/wiki/Email_address#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. -To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these instructions](https://help.ubuntu.com/community/PostfixBasicSetupHowto). +If you want to use Gmail with Reply by email, make sure you have [IMAP access enabled](https://support.google.com/mail/troubleshooter/1668960?hl=en#ts=1665018) and [allow less secure apps to access the account](https://support.google.com/accounts/answer/6010255). + +To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these instructions](./postfix.md). ## Set it up diff --git a/doc/reply_by_email/postfix.md b/doc/reply_by_email/postfix.md new file mode 100644 index 00000000000..bab107b958d --- /dev/null +++ b/doc/reply_by_email/postfix.md @@ -0,0 +1,316 @@ +# Set up Postfix for 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. + +## Configure your server DNS + +1. Add an MX record pointing from `gitlab.example.com` to your server IP. +1. Add an A record pointing from `mail.gitlab.example.com` to your server IP. +1. Verify that the changes have propagated: + + ```sh + dig mx gitlab.example.com + ``` + + ```sh + dig a mail.gitlab.example.com + ``` + + You should see an `ANSWER SECTION` with the expected result in the output for both. + +## Install packages + +1. Install the `postfix` package if it is not installed already: + + ```sh + sudo apt-get install postfix + ``` + + When asked about the environment, select 'Internet Site'. When asked to confirm the hostname, make sure it matches `gitlab.example.com`. + +1. Install the `mailutils` package. + + ```sh + sudo apt-get install mailutils + ``` + +## Create user + +1. Create a user for replies. + + ```sh + sudo useradd -m -s /bin/bash replies + ``` + +1. Set a password for this user. + + ```sh + sudo passwd replies + ``` + + Be sure not to forget this, you'll need it later. + +## Test the out-of-the-box setup + +1. Connect to the local SMTP server: + + ```sh + telnet localhost 25 + ``` + + You should see a prompt like this: + + ```sh + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + 220 gitlab.example.com ESMTP Postfix (Ubuntu) + ``` + + If you get a `Connection refused` error instead, check if `postfix` is running: + + ```sh + sudo postfix status + ``` + + If it is not, start it: + + ```sh + sudo postfix start + ``` + +1. Send the new `replies` user a dummy email to test SMTP, by entering the following into the SMTP prompt: + + ``` + ehlo localhost + mail from: root@localhost + rcpt to: replies@localhost + data + Subject: Re: Some issue + + Sounds good! + . + quit + ``` + + (Note: The `.` is a literal period on its own line) + +1. Check if the `replies` user received the email: + + ```sh + sh - replies + mail + ``` + + You should see output like this: + + ``` + "/var/mail/replies": 1 message 1 unread + >U 1 root@localhost 59/2842 Re: Some issue + ``` + + Quit the mail app: + + ```sh + q + ``` + +1. Log out of the `replies` account and go back to being `root`: + + ```sh + logout + ``` + +## Configure Postfix to use Maildir-style mailboxes + +Courier, which we will install later to add IMAP authentication, requiers mailboxes to have the Maildir format, rather than mbox. + +1. Configure Postfix to use Maildir-style mailboxes: + + ```sh + sudo postconf -e "home_mailbox = Maildir/" + sudo postconf -e "mailbox_command = " + ``` + +1. Restart Postfix: + + ```sh + sudo postfix restart + ``` + +1. Test the new setup: + + 1. Follow steps 1 and 2 of "Test the out-of-the-box setup". + 2. Check if the `replies` user received the email: + + ```sh + sh - replies + MAIL=/home/replies/Maildir + mail + ``` + + You should see output like this: + + ``` + "/home/replies/Maildir": 1 message 1 unread + >U 1 root@localhost 59/2842 Re: Some issue + ``` + + Quit the mail app: + + ```sh + q + ``` + +1. Log out of the `replies` account and go back to being `root`: + + ```sh + logout + ``` + +## Install the Courier IMAP server + +1. Install the `courier-imap` package: + + ```sh + sudo apt-get install courier-imap + ``` + +## Configure Postfix to receive email from the internet + +1. Let Postfix know about the domains that it should consider local: + + ```sh + sudo postconf -e "mydestination = mail.gitlab.example.com, localhost.localdomain, localhost, gitlab.example.com" + ``` + +1. Let Postfix know about the IPs that it should consider part of the LAN: + + We'll assume `192.168.1.0/24` is your local LAN. You can safely skip this step if you don't have other machines in the same local network. + + ```sh + sudo postconf -e "mynetworks = 127.0.0.0/8, 192.168.1.0/24" + ``` + +1. Configure Postfix to receive mail on all interfaces, which includes the internet: + + ```sh + sudo postconf -e "init_interfaces = all" + ``` + +1. Configure Postfix to receive mail on both IPv4 and IPv6 protocols: + + ```sh + sudo postconf -e "inet_protocols = all" + ``` + +## Test the final setup + +1. Test SMTP under the new setup: + + 1. Connect to the SMTP server: + + ```sh + telnet mail.gitlab.example.com 25 + ``` + + You should see a prompt like this: + + ```sh + Trying 123.123.123.123... + Connected to mail.gitlab.example.com. + Escape character is '^]'. + 220 gitlab.example.com ESMTP Postfix (Ubuntu) + ``` + + 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: + + ``` + ehlo gitlab.example.com + mail from: root@gitlab.example.com + rcpt to: replies@gitlab.example.com + data + Subject: Re: Some issue + + Sounds good! + . + quit + ``` + + (Note: The `.` is a literal period on its own line) + + 1. Check if the `replies` user received the email: + + ```sh + sh - replies + MAIL=/home/replies/Maildir + mail + ``` + + You should see output like this: + + ``` + "/home/replies/Maildir": 1 message 1 unread + >U 1 root@gitlab.example.com 59/2842 Re: Some issue + ``` + + Quit the mail app: + + ```sh + q + ``` + + 1. Log out of the `replies` account and go back to being `root`: + + ```sh + logout + ``` + +1. Test IMAP under the new setup: + + 1. Connect to the IMAP server: + + ```sh + telnet mail.gitlab.example.com 143 + ``` + + You should see a prompt like this: + + ```sh + Trying 123.123.123.123... + Connected to mail.example.gitlab.com. + Escape character is '^]'. + - 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: + + ``` + a login replies PASSWORD + ``` + + Replace PASSWORD by the password you set on the `replies` user earlier. + + You should see output like this: + + ``` + a OK LOGIN Ok. + ``` + + 1. Disconnect from the IMAP server: + + ```sh + a logout + ``` + +## Done! + +If all the tests went all right, Postfix is all set up and ready to receive email! Continue with the [Reply by email](./README.md) doc to configure GitLab. + +--------- + +_This document was adapted from https://help.ubuntu.com/community/PostfixBasicSetupHowto, by contributors to the Ubuntu documentation wiki._ -- cgit v1.2.1 From f00fdc71e9ea4e227b405dbfa671bf9c6f94736d Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Tue, 25 Aug 2015 10:23:55 -0700 Subject: Don't overwrite /etc/default/gitlab. --- doc/reply_by_email/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/reply_by_email/README.md b/doc/reply_by_email/README.md index accd83b66df..705cb08dd1a 100644 --- a/doc/reply_by_email/README.md +++ b/doc/reply_by_email/README.md @@ -36,7 +36,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. As mentioned, the part after `+` is ignored, and this will end up in the mailbox for `gitlab-replies@gmail.com`. -2. Find `config/mail_room.yml.example` and copy it to `config/mail_room.yml`: +2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`: ```sh sudo cp config/mail_room.yml.example config/mail_room.yml @@ -77,10 +77,10 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. ``` -4. Find `lib/support/init.d/gitlab.default.example` and copy it to `/etc/default/gitlab`: +4. Copy `lib/support/init.d/gitlab.default.example` to `/etc/default/gitlab`, if that does not already exist: ```sh - sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab + [ -f /etc/default/gitlab ] || sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab ``` 5. Edit `/etc/default/gitlab` to enable `mail_room`: @@ -89,6 +89,8 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. sudo editor /etc/default/gitlab ``` + Either change `mail_room_enabled=false` to the below, or add it at the bottom of the file: + ```sh mail_room_enabled=true ``` @@ -125,7 +127,7 @@ TODO As mentioned, the part after `+` is ignored, and this will end up in the mailbox for `gitlab-replies@gmail.com`. -2. Find `config/mail_room.yml.example` and copy it to `config/mail_room.yml`: +2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`: ```sh sudo cp config/mail_room.yml.example config/mail_room.yml -- cgit v1.2.1 From 5747fa00162a6bc5762bf0a1641ef743a772bdb8 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Tue, 25 Aug 2015 12:03:31 -0700 Subject: Fix docs --- doc/reply_by_email/postfix.md | 22 +++++++++++++++++----- lib/tasks/gitlab/check.rake | 4 ++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/doc/reply_by_email/postfix.md b/doc/reply_by_email/postfix.md index bab107b958d..1d80037c1da 100644 --- a/doc/reply_by_email/postfix.md +++ b/doc/reply_by_email/postfix.md @@ -100,7 +100,7 @@ The instructions make the assumption that you will be using the email address `r 1. Check if the `replies` user received the email: ```sh - sh - replies + su - replies mail ``` @@ -137,7 +137,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 1. Restart Postfix: ```sh - sudo postfix restart + sudo /etc/init.d/postfix restart ``` 1. Test the new setup: @@ -146,7 +146,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 2. Check if the `replies` user received the email: ```sh - sh - replies + su - replies MAIL=/home/replies/Maildir mail ``` @@ -197,7 +197,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 1. Configure Postfix to receive mail on all interfaces, which includes the internet: ```sh - sudo postconf -e "init_interfaces = all" + sudo postconf -e "inet_interfaces = all" ``` 1. Configure Postfix to receive mail on both IPv4 and IPv6 protocols: @@ -206,6 +206,18 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo sudo postconf -e "inet_protocols = all" ``` +1. Configure Postfix to use the `+` delimiter for sub-addressing: + + ```sh + sudo postconf -e "recipient_delimiter = +" + ``` + +1. Restart Postfix: + + ```sh + sudo /etc/init.d/postfix restart + ``` + ## Test the final setup 1. Test SMTP under the new setup: @@ -246,7 +258,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 1. Check if the `replies` user received the email: ```sh - sh - replies + su - replies MAIL=/home/replies/Maildir mail ``` diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake index 2b9688c1b40..13f1cf58fca 100644 --- a/lib/tasks/gitlab/check.rake +++ b/lib/tasks/gitlab/check.rake @@ -595,7 +595,7 @@ namespace :gitlab do else puts "no".red try_fixing_it( - sudo_gitlab("RAILS_ENV=production bin/background_jobs start") + sudo_gitlab("RAILS_ENV=production sudo -u git -H bin/background_jobs start") ) for_more_information( see_installation_guide_section("Install Init Script"), @@ -726,7 +726,7 @@ namespace :gitlab do else puts "no".red try_fixing_it( - sudo_gitlab("RAILS_ENV=production bin/mail_room start") + sudo_gitlab("RAILS_ENV=production sudo -u git -H bin/mail_room start") ) for_more_information( see_installation_guide_section("Install Init Script"), -- cgit v1.2.1 From 5c226d335fa18a9af48fef051c2d309467324f46 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Tue, 25 Aug 2015 12:21:54 -0700 Subject: No DNS setup necessary, but firewall setup may be. --- doc/reply_by_email/postfix.md | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/doc/reply_by_email/postfix.md b/doc/reply_by_email/postfix.md index 1d80037c1da..e2a974fbe17 100644 --- a/doc/reply_by_email/postfix.md +++ b/doc/reply_by_email/postfix.md @@ -4,21 +4,10 @@ This document will take you through the steps of setting up a basic Postfix mail 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. -## Configure your server DNS +## Configure your server firewall -1. Add an MX record pointing from `gitlab.example.com` to your server IP. -1. Add an A record pointing from `mail.gitlab.example.com` to your server IP. -1. Verify that the changes have propagated: - - ```sh - dig mx gitlab.example.com - ``` - - ```sh - dig a mail.gitlab.example.com - ``` - - You should see an `ANSWER SECTION` with the expected result in the output for both. +1. Open up port 25 on your server so that people can send email into the server over SMTP. +2. If the mail server is different from the server running GitLab, open up port 143 on your server so that GitLab can read email from the server over IMAP. ## Install packages @@ -183,7 +172,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 1. Let Postfix know about the domains that it should consider local: ```sh - sudo postconf -e "mydestination = mail.gitlab.example.com, localhost.localdomain, localhost, gitlab.example.com" + sudo postconf -e "mydestination = gitlab.example.com, localhost.localdomain, localhost" ``` 1. Let Postfix know about the IPs that it should consider part of the LAN: @@ -200,12 +189,6 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo sudo postconf -e "inet_interfaces = all" ``` -1. Configure Postfix to receive mail on both IPv4 and IPv6 protocols: - - ```sh - sudo postconf -e "inet_protocols = all" - ``` - 1. Configure Postfix to use the `+` delimiter for sub-addressing: ```sh @@ -215,7 +198,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 1. Restart Postfix: ```sh - sudo /etc/init.d/postfix restart + sudo service postfix restart ``` ## Test the final setup @@ -225,14 +208,14 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 1. Connect to the SMTP server: ```sh - telnet mail.gitlab.example.com 25 + telnet gitlab.example.com 25 ``` You should see a prompt like this: ```sh Trying 123.123.123.123... - Connected to mail.gitlab.example.com. + Connected to gitlab.example.com. Escape character is '^]'. 220 gitlab.example.com ESMTP Postfix (Ubuntu) ``` @@ -287,7 +270,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 1. Connect to the IMAP server: ```sh - telnet mail.gitlab.example.com 143 + telnet gitlab.example.com 143 ``` You should see a prompt like this: -- cgit v1.2.1 From 9ae12c398143cb15799eeca301fc761f7e096b2c Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Tue, 25 Aug 2015 12:29:11 -0700 Subject: No mailbox_command needed --- doc/reply_by_email/postfix.md | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/reply_by_email/postfix.md b/doc/reply_by_email/postfix.md index e2a974fbe17..0b16e5e8e80 100644 --- a/doc/reply_by_email/postfix.md +++ b/doc/reply_by_email/postfix.md @@ -120,7 +120,6 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo ```sh sudo postconf -e "home_mailbox = Maildir/" - sudo postconf -e "mailbox_command = " ``` 1. Restart Postfix: -- cgit v1.2.1 From d0420c68fbb2fe84dee8538df246cdc7e7b85d28 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 26 Aug 2015 09:23:25 -0700 Subject: Simplify doc --- doc/reply_by_email/README.md | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/doc/reply_by_email/README.md b/doc/reply_by_email/README.md index 705cb08dd1a..6c3d191cc71 100644 --- a/doc/reply_by_email/README.md +++ b/doc/reply_by_email/README.md @@ -76,23 +76,11 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. :worker: EmailReceiverWorker ``` - -4. Copy `lib/support/init.d/gitlab.default.example` to `/etc/default/gitlab`, if that does not already exist: - - ```sh - [ -f /etc/default/gitlab ] || sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab - ``` - -5. Edit `/etc/default/gitlab` to enable `mail_room`: - - ```sh - sudo editor /etc/default/gitlab - ``` - - Either change `mail_room_enabled=false` to the below, or add it at the bottom of the file: +5. Edit the init script configuration at `/etc/default/gitlab` to enable `mail_room`: ```sh - mail_room_enabled=true + sudo mkdir -p /etc/default + echo 'mail_room_enabled=true' | sudo tee -a /etc/default/gitlab ``` 6. Restart GitLab: -- cgit v1.2.1 From f197785495e83c996150b05d9bc3ce1effcc5a68 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 26 Aug 2015 10:13:11 -0700 Subject: Use sudu -u git where appropriate --- doc/reply_by_email/README.md | 2 +- lib/tasks/gitlab/check.rake | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/reply_by_email/README.md b/doc/reply_by_email/README.md index 6c3d191cc71..b33303c7be8 100644 --- a/doc/reply_by_email/README.md +++ b/doc/reply_by_email/README.md @@ -92,7 +92,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. 7. Check if everything is configured correctly: ```sh - sudo bundle exec rake gitlab:reply_by_email:check RAILS_ENV=production + sudo -u git -H bundle exec rake gitlab:reply_by_email:check RAILS_ENV=production ``` 8. Reply by email should now be working. diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake index 13f1cf58fca..f5a900d87c9 100644 --- a/lib/tasks/gitlab/check.rake +++ b/lib/tasks/gitlab/check.rake @@ -595,7 +595,7 @@ namespace :gitlab do else puts "no".red try_fixing_it( - sudo_gitlab("RAILS_ENV=production sudo -u git -H bin/background_jobs start") + sudo_gitlab("bin/background_jobs start", "RAILS_ENV=production") ) for_more_information( see_installation_guide_section("Install Init Script"), @@ -726,7 +726,7 @@ namespace :gitlab do else puts "no".red try_fixing_it( - sudo_gitlab("RAILS_ENV=production sudo -u git -H bin/mail_room start") + sudo_gitlab("bin/mail_room start", "RAILS_ENV=production") ) for_more_information( see_installation_guide_section("Install Init Script"), @@ -879,8 +879,10 @@ namespace :gitlab do "doc/install/installation.md in section \"#{section}\"" end - def sudo_gitlab(command) - "sudo -u #{gitlab_user} -H #{command}" + def sudo_gitlab(command, env = nil) + cmd = "sudo -u #{gitlab_user} -H #{command}" + cmd.prepend "#{env} " if env + cmd end def gitlab_user -- cgit v1.2.1 From 232422f828116d8b2551d63fbd511abc5148ec2e Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Thu, 27 Aug 2015 10:45:03 +0200 Subject: Add omnibus-gitlab configuration example. --- doc/reply_by_email/README.md | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/doc/reply_by_email/README.md b/doc/reply_by_email/README.md index b33303c7be8..f1dcef5de2d 100644 --- a/doc/reply_by_email/README.md +++ b/doc/reply_by_email/README.md @@ -12,7 +12,7 @@ To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these ## 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-replies@gmail.com`. ### Installations from source @@ -27,7 +27,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. ```sh sudo editor config/gitlab.yml ``` - + ```yaml reply_by_email: enabled: true @@ -37,7 +37,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. As mentioned, the part after `+` is ignored, and this will end up in the mailbox for `gitlab-replies@gmail.com`. 2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`: - + ```sh sudo cp config/mail_room.yml.example config/mail_room.yml ``` @@ -84,7 +84,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. ``` 6. Restart GitLab: - + ```sh sudo service gitlab restart ``` @@ -99,14 +99,37 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. ### Omnibus package installations -TODO +In `/etc/gitlab/gitlab.rb`: + +```ruby + +gitlab_rails['reply_by_email_enabled'] = true +gitlab_rails['reply_by_email_address'] = "gitlab-replies+%{reply_key}@gmail.com" +gitlab_rails['reply_by_email_host'] = "imap.gmail.com" # IMAP server host +gitlab_rails['reply_by_email_port'] = 993 # IMAP server port +gitlab_rails['reply_by_email_ssl'] = true # Whether the IMAP server uses SSL +gitlab_rails['reply_by_email_email'] = "gitlab-replies@gmail.com" # Email account username. Usually the full email address. +gitlab_rails['reply_by_email_password'] = "password" # Email account password +gitlab_rails['reply_by_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. +``` + +and run `sudo gitlab-ctl reconfigure` for changes to take effect. + +After reconfigure run has been successfully completed you will have the following commands available: + +```bash +sudo gitlab-ctl status mailroom +sudo gitlab-ctl stop mailroom +sudo gitlab-ctl start mailroom +sudo gitlab-ctl restart mailroom +``` ### Development 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`: - + ```yaml reply_by_email: enabled: true @@ -116,7 +139,7 @@ TODO As mentioned, the part after `+` is ignored, and this will end up in the mailbox for `gitlab-replies@gmail.com`. 2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`: - + ```sh sudo cp config/mail_room.yml.example config/mail_room.yml ``` @@ -158,7 +181,7 @@ TODO ``` 6. Restart GitLab: - + ```sh bundle exec foreman start ``` -- cgit v1.2.1 From 58c487e28b3f10c8a871dc82f7d79a45c7876f15 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 27 Aug 2015 11:23:23 -0700 Subject: Tweak check rake task. --- lib/tasks/gitlab/check.rake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake index f5a900d87c9..9815582d02d 100644 --- a/lib/tasks/gitlab/check.rake +++ b/lib/tasks/gitlab/check.rake @@ -595,7 +595,7 @@ namespace :gitlab do else puts "no".red try_fixing_it( - sudo_gitlab("bin/background_jobs start", "RAILS_ENV=production") + sudo_gitlab("RAILS_ENV=production bin/background_jobs start") ) for_more_information( see_installation_guide_section("Install Init Script"), @@ -726,7 +726,7 @@ namespace :gitlab do else puts "no".red try_fixing_it( - sudo_gitlab("bin/mail_room start", "RAILS_ENV=production") + sudo_gitlab("RAILS_ENV=production bin/mail_room start") ) for_more_information( see_installation_guide_section("Install Init Script"), -- cgit v1.2.1 From d8795297fa7847d2dc672c30e1aabffd3687bdcc Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 9 Sep 2015 12:10:47 +0100 Subject: Restructure omnibus instructions to match those for source installations. --- doc/reply_by_email/README.md | 48 ++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/doc/reply_by_email/README.md b/doc/reply_by_email/README.md index 1f704e65bcf..1886650164a 100644 --- a/doc/reply_by_email/README.md +++ b/doc/reply_by_email/README.md @@ -34,7 +34,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. address: "gitlab-replies+%{reply_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 `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-replies@gmail.com`. 2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`: @@ -91,7 +91,7 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. sudo service gitlab restart ``` -7. Check if everything is configured correctly: +7. Verify that everything is configured correctly: ```sh sudo -u git -H bundle exec rake gitlab:reply_by_email:check RAILS_ENV=production @@ -101,30 +101,34 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. ### Omnibus package installations -In `/etc/gitlab/gitlab.rb`: +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: + + ```ruby + gitlab_rails['reply_by_email_enabled'] = true + gitlab_rails['reply_by_email_address'] = "gitlab-replies+%{reply_key}@gmail.com" + gitlab_rails['reply_by_email_host'] = "imap.gmail.com" # IMAP server host + gitlab_rails['reply_by_email_port'] = 993 # IMAP server port + gitlab_rails['reply_by_email_ssl'] = true # Whether the IMAP server uses SSL + gitlab_rails['reply_by_email_email'] = "gitlab-replies@gmail.com" # Email account username. Usually the full email address. + gitlab_rails['reply_by_email_password'] = "password" # Email account password + gitlab_rails['reply_by_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. Usually "inbox". + ``` -```ruby + 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`. -gitlab_rails['reply_by_email_enabled'] = true -gitlab_rails['reply_by_email_address'] = "gitlab-replies+%{reply_key}@gmail.com" -gitlab_rails['reply_by_email_host'] = "imap.gmail.com" # IMAP server host -gitlab_rails['reply_by_email_port'] = 993 # IMAP server port -gitlab_rails['reply_by_email_ssl'] = true # Whether the IMAP server uses SSL -gitlab_rails['reply_by_email_email'] = "gitlab-replies@gmail.com" # Email account username. Usually the full email address. -gitlab_rails['reply_by_email_password'] = "password" # Email account password -gitlab_rails['reply_by_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. -``` +1. Reconfigure GitLab for the changes to take effect: -and run `sudo gitlab-ctl reconfigure` for changes to take effect. + ```sh + sudo gitlab-ctl reconfigure + ``` -After reconfigure run has been successfully completed you will have the following commands available: +1. Verify that everything is configured correctly: + + ```sh + sudo gitlab-rake gitlab:reply_by_email:check + ``` -```bash -sudo gitlab-ctl status mailroom -sudo gitlab-ctl stop mailroom -sudo gitlab-ctl start mailroom -sudo gitlab-ctl restart mailroom -``` +1. Reply by email should now be working. ### Development @@ -190,7 +194,7 @@ sudo gitlab-ctl restart mailroom bundle exec foreman start ``` -7. Check if everything is configured correctly: +7. Verify that everything is configured correctly: ```sh bundle exec rake gitlab:reply_by_email:check RAILS_ENV=development -- cgit v1.2.1 From 3b89a6830261a7252899674ddaef49b6d19a66d9 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 9 Sep 2015 12:11:08 +0100 Subject: Move source section below omnibus section. --- doc/reply_by_email/README.md | 62 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/doc/reply_by_email/README.md b/doc/reply_by_email/README.md index 1886650164a..e9187298d79 100644 --- a/doc/reply_by_email/README.md +++ b/doc/reply_by_email/README.md @@ -14,6 +14,37 @@ To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. +### 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: + + ```ruby + gitlab_rails['reply_by_email_enabled'] = true + gitlab_rails['reply_by_email_address'] = "gitlab-replies+%{reply_key}@gmail.com" + gitlab_rails['reply_by_email_host'] = "imap.gmail.com" # IMAP server host + gitlab_rails['reply_by_email_port'] = 993 # IMAP server port + gitlab_rails['reply_by_email_ssl'] = true # Whether the IMAP server uses SSL + gitlab_rails['reply_by_email_email'] = "gitlab-replies@gmail.com" # Email account username. Usually the full email address. + gitlab_rails['reply_by_email_password'] = "password" # Email account password + gitlab_rails['reply_by_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`. + +1. Reconfigure GitLab for the changes to take effect: + + ```sh + sudo gitlab-ctl reconfigure + ``` + +1. Verify that everything is configured correctly: + + ```sh + sudo gitlab-rake gitlab:reply_by_email:check + ``` + +1. Reply by email should now be working. + ### Installations from source 1. Go to the GitLab installation directory: @@ -99,37 +130,6 @@ In this example, we'll use the Gmail address `gitlab-replies@gmail.com`. 8. Reply by email should now be working. -### 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: - - ```ruby - gitlab_rails['reply_by_email_enabled'] = true - gitlab_rails['reply_by_email_address'] = "gitlab-replies+%{reply_key}@gmail.com" - gitlab_rails['reply_by_email_host'] = "imap.gmail.com" # IMAP server host - gitlab_rails['reply_by_email_port'] = 993 # IMAP server port - gitlab_rails['reply_by_email_ssl'] = true # Whether the IMAP server uses SSL - gitlab_rails['reply_by_email_email'] = "gitlab-replies@gmail.com" # Email account username. Usually the full email address. - gitlab_rails['reply_by_email_password'] = "password" # Email account password - gitlab_rails['reply_by_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`. - -1. Reconfigure GitLab for the changes to take effect: - - ```sh - sudo gitlab-ctl reconfigure - ``` - -1. Verify that everything is configured correctly: - - ```sh - sudo gitlab-rake gitlab:reply_by_email:check - ``` - -1. Reply by email should now be working. - ### Development 1. Go to the GitLab installation directory. -- cgit v1.2.1 From d7501c7bb914151ac77a9c07342a7d129724cb6c Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 10 Sep 2015 09:25:41 +0100 Subject: Fix sudo_gitlab helper --- lib/tasks/gitlab/check.rake | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake index bcd25ccbaf3..b8eb13a4fea 100644 --- a/lib/tasks/gitlab/check.rake +++ b/lib/tasks/gitlab/check.rake @@ -882,10 +882,8 @@ namespace :gitlab do "doc/install/installation.md in section \"#{section}\"" end - def sudo_gitlab(command, env = nil) - cmd = "sudo -u #{gitlab_user} -H #{command}" - cmd.prepend "#{env} " if env - cmd + def sudo_gitlab(command) + "sudo -u #{gitlab_user} -H #{command}" end def gitlab_user -- cgit v1.2.1 From c95b8476c7d7464071afed0e3f4279ab116d8a2f Mon Sep 17 00:00:00 2001 From: Jared Szechy Date: Tue, 15 Sep 2015 16:09:32 -0400 Subject: bump fogbugz gem --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 5510d7ee639..6d371f27a34 100644 --- a/Gemfile +++ b/Gemfile @@ -158,7 +158,7 @@ gem "slack-notifier", "~> 1.0.0" gem 'asana', '~> 0.0.6' # FogBugz integration -gem 'ruby-fogbugz', '~> 0.2.0' +gem 'ruby-fogbugz', '~> 0.2.1' # d3 gem 'd3_rails', '~> 3.5.5' diff --git a/Gemfile.lock b/Gemfile.lock index 4f16e14c897..ab743c7d590 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -575,7 +575,7 @@ GEM powerpack (~> 0.0.6) rainbow (>= 1.99.1, < 3.0) ruby-progressbar (~> 1.4) - ruby-fogbugz (0.2.0) + ruby-fogbugz (0.2.1) crack (~> 0.4) ruby-progressbar (1.7.1) ruby-saml (1.0.0) @@ -849,7 +849,7 @@ DEPENDENCIES rqrcode-rails3 rspec-rails (~> 3.3.0) rubocop (= 0.28.0) - ruby-fogbugz (~> 0.2.0) + ruby-fogbugz (~> 0.2.1) sanitize (~> 2.0) sass-rails (~> 4.0.5) sdoc -- cgit v1.2.1 From c9389d0e7450850423c8c87062f6c26422b78422 Mon Sep 17 00:00:00 2001 From: Allister Antosik Date: Tue, 15 Sep 2015 22:48:24 +0100 Subject: Sorted autocomplete users list by name --- CHANGELOG | 1 + app/controllers/autocomplete_controller.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 007e47f7446..eb4c59d6205 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -48,6 +48,7 @@ v 8.0.0 (unreleased) - Fix highlighting of deleted lines in diffs. - Added service API endpoint to retrieve service parameters (Petheő Bence) - Add FogBugz project import (Jared Szechy) + - Sort users autocomplete lists by user (Allister Antosik) v 7.14.3 - No changes diff --git a/app/controllers/autocomplete_controller.rb b/app/controllers/autocomplete_controller.rb index 904d26a39f4..202e9da9eee 100644 --- a/app/controllers/autocomplete_controller.rb +++ b/app/controllers/autocomplete_controller.rb @@ -32,6 +32,7 @@ class AutocompleteController < ApplicationController @users ||= User.none @users = @users.search(params[:search]) if params[:search].present? @users = @users.active + @users = @users.reorder(:name) @users = @users.page(params[:page]).per(PER_PAGE) unless params[:search].present? -- cgit v1.2.1 From 1c289ac0c3b7993cfca961a9b446267b700a97c7 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 15 Sep 2015 22:38:48 -0700 Subject: Fix broken sort in merge request API Closes #2266 --- CHANGELOG | 1 + lib/api/merge_requests.rb | 2 +- spec/requests/api/merge_requests_spec.rb | 25 +++++++++++++------------ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index eb4c59d6205..71238630d31 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.0.0 (unreleased) + - Fix broken sort in merge request API (Stan Hu) - Bump rouge to 1.10.1 to remove warning noise and fix other syntax highlighting bugs (Stan Hu) - Gracefully handle errors in syntax highlighting by leaving the block unformatted (Stan Hu) - Add "replace" and "upload" functionalities to allow user replace existing file and upload new file into current repository diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 7412274b045..63ea2f05438 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -55,7 +55,7 @@ module API else merge_requests end - merge_requests.reorder(issuable_order_by => issuable_sort) + merge_requests = merge_requests.reorder(issuable_order_by => issuable_sort) present paginate(merge_requests), with: Entities::MergeRequest end diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb index 942768fa254..35b3d3e296a 100644 --- a/spec/requests/api/merge_requests_spec.rb +++ b/spec/requests/api/merge_requests_spec.rb @@ -2,11 +2,12 @@ require "spec_helper" describe API::API, api: true do include ApiHelpers + let(:base_time) { Time.now } let(:user) { create(:user) } let!(:project) {create(:project, creator_id: user.id, namespace: user.namespace) } - let!(:merge_request) { create(:merge_request, :simple, author: user, assignee: user, source_project: project, target_project: project, title: "Test") } - let!(:merge_request_closed) { create(:merge_request, state: "closed", author: user, assignee: user, source_project: project, target_project: project, title: "Closed test") } - let!(:merge_request_merged) { create(:merge_request, state: "merged", author: user, assignee: user, source_project: project, target_project: project, title: "Merged test") } + let!(:merge_request) { create(:merge_request, :simple, author: user, assignee: user, source_project: project, target_project: project, title: "Test", created_at: base_time) } + let!(:merge_request_closed) { create(:merge_request, state: "closed", author: user, assignee: user, source_project: project, target_project: project, title: "Closed test", created_at: base_time + 1.seconds) } + let!(:merge_request_merged) { create(:merge_request, state: "merged", author: user, assignee: user, source_project: project, target_project: project, title: "Merged test", created_at: base_time + 2.seconds) } let!(:note) { create(:note_on_merge_request, author: user, project: project, noteable: merge_request, note: "a comment on a MR") } let!(:note2) { create(:note_on_merge_request, author: user, project: project, noteable: merge_request, note: "another comment on a MR") } @@ -74,8 +75,8 @@ describe API::API, api: true do expect(response.status).to eq(200) expect(json_response).to be_an Array expect(json_response.length).to eq(3) - expect(json_response.last['id']).to eq(@mr_earlier.id) - expect(json_response.first['id']).to eq(@mr_later.id) + response_dates = json_response.map{ |merge_request| merge_request['created_at'] } + expect(response_dates).to eq(response_dates.sort) end it "should return an array of merge_requests in descending order" do @@ -83,8 +84,8 @@ describe API::API, api: true do expect(response.status).to eq(200) expect(json_response).to be_an Array expect(json_response.length).to eq(3) - expect(json_response.first['id']).to eq(@mr_later.id) - expect(json_response.last['id']).to eq(@mr_earlier.id) + response_dates = json_response.map{ |merge_request| merge_request['created_at'] } + expect(response_dates).to eq(response_dates.sort.reverse) end it "should return an array of merge_requests ordered by updated_at" do @@ -92,17 +93,17 @@ describe API::API, api: true do expect(response.status).to eq(200) expect(json_response).to be_an Array expect(json_response.length).to eq(3) - expect(json_response.last['id']).to eq(@mr_earlier.id) - expect(json_response.first['id']).to eq(@mr_later.id) + response_dates = json_response.map{ |merge_request| merge_request['updated_at'] } + expect(response_dates).to eq(response_dates.sort.reverse) end it "should return an array of merge_requests ordered by created_at" do - get api("/projects/#{project.id}/merge_requests?sort=created_at", user) + get api("/projects/#{project.id}/merge_requests?order_by=created_at&sort=asc", user) expect(response.status).to eq(200) expect(json_response).to be_an Array expect(json_response.length).to eq(3) - expect(json_response.last['id']).to eq(@mr_earlier.id) - expect(json_response.first['id']).to eq(@mr_later.id) + response_dates = json_response.map{ |merge_request| merge_request['created_at'] } + expect(response_dates).to eq(response_dates.sort) end end end -- cgit v1.2.1 From b92c03730bfd95e8ad6d984e240aaf15b22e4b5a Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 16 Sep 2015 09:09:09 +0200 Subject: Tweak text --- doc/reply_by_email/postfix.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/reply_by_email/postfix.md b/doc/reply_by_email/postfix.md index 0b16e5e8e80..b8ab07d9fe1 100644 --- a/doc/reply_by_email/postfix.md +++ b/doc/reply_by_email/postfix.md @@ -58,7 +58,7 @@ The instructions make the assumption that you will be using the email address `r 220 gitlab.example.com ESMTP Postfix (Ubuntu) ``` - If you get a `Connection refused` error instead, check if `postfix` is running: + If you get a `Connection refused` error instead, verify that `postfix` is running: ```sh sudo postfix status @@ -114,7 +114,7 @@ The instructions make the assumption that you will be using the email address `r ## Configure Postfix to use Maildir-style mailboxes -Courier, which we will install later to add IMAP authentication, requiers mailboxes to have the Maildir format, rather than mbox. +Courier, which we will install later to add IMAP authentication, requires mailboxes to have the Maildir format, rather than mbox. 1. Configure Postfix to use Maildir-style mailboxes: @@ -130,7 +130,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo 1. Test the new setup: - 1. Follow steps 1 and 2 of "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: ```sh @@ -287,7 +287,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo a login replies PASSWORD ``` - Replace PASSWORD by the password you set on the `replies` user earlier. + Replace PASSWORD with the password you set on the `replies` user earlier. You should see output like this: @@ -303,7 +303,7 @@ Courier, which we will install later to add IMAP authentication, requiers mailbo ## Done! -If all the tests went all right, Postfix is all set up and ready to receive email! Continue with the [Reply by email](./README.md) doc to configure GitLab. +If all the tests were successfull, Postfix is all set up and ready to receive email! Continue with the [Reply by email](./README.md) guide to configure GitLab. --------- -- cgit v1.2.1