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() { |