Commit 1451add680ec47993b8066f3c8afe7370c45b717
1 parent
d6f15b8b
Exists in
master
and in
79 other branches
Deliver non-list mail locally on integration
This breaks a mail loop that would happen when you wrote to anything@softwarepublico.*
Showing
3 changed files
with
25 additions
and
3 deletions
Show diff stats
@@ -0,0 +1,5 @@ | @@ -0,0 +1,5 @@ | ||
1 | +execute 'postfix::set_as_final_destination' do | ||
2 | + command "postconf mydestination='$myhostname, localhost.$mydomain, localhost, #{node['config']['external_hostname']}'" | ||
3 | + not_if "grep mydestination.*#{node['config']['external_hostname']} /etc/postfix/main.cf" | ||
4 | + notifies :reload, 'service[postfix]' | ||
5 | +end |
roles/integration_server.rb
@@ -5,6 +5,7 @@ description "Server that runs COLAB (user authentication, visual integration and | @@ -5,6 +5,7 @@ description "Server that runs COLAB (user authentication, visual integration and | ||
5 | # point in the future | 5 | # point in the future |
6 | run_list *[ | 6 | run_list *[ |
7 | 'recipe[basics::nginx]', | 7 | 'recipe[basics::nginx]', |
8 | + 'recipe[email::destination]', | ||
8 | 'recipe[mailman-api]', | 9 | 'recipe[mailman-api]', |
9 | 'recipe[mailman]', | 10 | 'recipe[mailman]', |
10 | 'recipe[mailman::webui]', | 11 | 'recipe[mailman::webui]', |
test/mail_relay_test.sh
1 | . $(dirname $0)/test_helper.sh | 1 | . $(dirname $0)/test_helper.sh |
2 | 2 | ||
3 | -test_inbound_mail() { | 3 | +test_inbound_list_mail() { |
4 | run_on integration create-list mylist foo@example.com | 4 | run_on integration create-list mylist foo@example.com |
5 | 5 | ||
6 | # sending FROM EMAIL RELAY HOST | 6 | # sending FROM EMAIL RELAY HOST |
@@ -10,7 +10,23 @@ test_inbound_mail() { | @@ -10,7 +10,23 @@ test_inbound_mail() { | ||
10 | 10 | ||
11 | run_on integration remove-list mylist | 11 | run_on integration remove-list mylist |
12 | 12 | ||
13 | - assertEquals 'Message arrives at the mailing list' '1' "$messages" | 13 | + assertEquals 'Message did not arrive at the mailing list' '1' "$messages" |
14 | +} | ||
15 | + | ||
16 | +test_inbound_regular_mail() { | ||
17 | + messages_before=$(run_on integration sudo grep -c '^From.*foo@example.com' /var/mail/root) | ||
18 | + run_on email send-email foo@example.com root@softwarepublico.dev | ||
19 | + n=0 | ||
20 | + while [ $n -lt 10 ]; do | ||
21 | + sleep 1 | ||
22 | + messages=$(run_on integration sudo grep -c '^From.*foo@example.com' /var/mail/root) | ||
23 | + if [ "$messages" -gt "$messages_before" ]; then | ||
24 | + return | ||
25 | + else | ||
26 | + n=$(($n + 1)) | ||
27 | + fi | ||
28 | + done | ||
29 | + fail "didn't receive incoming email" | ||
14 | } | 30 | } |
15 | 31 | ||
16 | _test_outbound_email() { | 32 | _test_outbound_email() { |
@@ -24,7 +40,7 @@ _test_outbound_email() { | @@ -24,7 +40,7 @@ _test_outbound_email() { | ||
24 | 40 | ||
25 | run_on email clear-email-queue | 41 | run_on email clear-email-queue |
26 | 42 | ||
27 | - assertEquals 'Message delivered through relay' 1 "$messages" | 43 | + assertEquals 'Message was not delivered through relay' 1 "$messages" |
28 | } | 44 | } |
29 | 45 | ||
30 | test_outbound_email_integration() { | 46 | test_outbound_email_integration() { |