10-mailman-debian
3.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/bin/sh
set -e
export DEBIAN_FRONTEND=noninteractive
if [ ! -f /etc/apt/sources.list.d/mailman-api.list ]; then
cat > /etc/apt/sources.list.d/mailman-api.list <<EOF
deb http://download.opensuse.org/repositories/isv:/spb:/mailman-api/Debian_7.0/ ./
deb-src http://download.opensuse.org/repositories/isv:/spb:/mailman-api/Debian_7.0/ ./
EOF
apt-key add - <<EOF
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.15 (GNU/Linux)
mQENBFRE9cMBCADl9VaZi3A4u5Fy2X9FP/18xkz2U1hsklLTgvwSuFT4gDCgtvD4
r3xAxnZ/52yLdAnrBratM1uC03WWifrCE+J5rImhiwP3itUzAGi/chmfVAuMBAVN
7rjBpurQoEuMDwec60XmS9XJ+BrcO+MyKaLTxKwy1KN+vaIM8Z7evpFdZghXwbL6
17ENLRbvqVs7gNtiyLQb26mNMRxTzp7vGFn4Vm2b73GrKvPC4nnUBA5FYZkSclk2
gpYt/QSZ7qj/YQZmzx31YSSRB8BOPGlsXV2ShWTzvVXfQoZ//ViDgYUlwh5hmaJo
f1gG6MumwJOdcfGlS2BOkddcYpNTveQ4HNQdABEBAAG0MGlzdjpzcGIgT0JTIFBy
b2plY3QgPGlzdjpzcGJAYnVpbGQub3BlbnN1c2Uub3JnPokBPgQTAQIAKAUCVET1
wwIbAwUJBB6wAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQE7yUxPVcdQmz
yAf/VIWhDdhOnF6XsR/USY57T1gYxFP3H+KchlCfvyFRc3lczZaDVQ57WkYlw7/2
TN2TpN6JMHPbmltD0QuQg9GSulgp1A5A6R9yWolcZ0QLkSndHcjQciZ4hHcrqO+C
Yb8fCMFJfejJ5FcTEVCBQgnazgI9qRyPAhEFZF3OCgQ1XOoaufojPGoKYoNXBOGI
g2phdVE1glq6ZesKMagoFURGf4pm/Muq5pjK0DbF/iVOM9uVGDWLLpfVMicYiHSF
YbqundUK6MzFlwuLSM0lXYuaaOF6rN3Gq03FVjNE5jbCUxJZAHSYF8KLZ57Opr8R
KVogKh7j5fixFpDoydcPkS0Md4hGBBMRAgAGBQJURPXDAAoJEDswEbdrnWUjeLkA
oKdP1tDhp1FzMFX+MTvEM/HyupveAKCHai4jMDBsjsoVJDobCws7IBLa3g==
=v9lx
-----END PGP PUBLIC KEY BLOCK-----
EOF
apt-get update
fi
# pre-configure packages
'debconf-set-selections' <<EOF
postfix postfix/main_mailer_type select Internet Site
mailman mailman/site_languages multiselect pt_BR (Brasilian Portuguese)
mailman mailman/default_server_language select pt_BR (Brasilian Portuguese)
EOF
apt-get install -qy postfix mailman mailman-api
LISTS_DOMAIN=lists.local
TEST_LISTS='list01 list02 list03'
#################################################################
# mailman configuration
#################################################################
mailman_config() {
local key="$1"
local value="$2"
local conffile=/etc/mailman/mm_cfg.py
if grep -q "^$key\s*=" $conffile; then
sed -i -e "s/^$key\s*=.*/$key = $value/" $conffile
else
echo "$key = $value" >> $conffile
fi
}
mailman_config DEFAULT_EMAIL_HOST "'$LISTS_DOMAIN'"
mailman_config MTA None
mailman_config POSTFIX_STYLE_VIRTUAL_DOMAINS "['$LISTS_DOMAIN']"
mailman_config DEB_LISTMASTER "'vagrant@localhost.localdomain'"
# create mailman's meta-list
sudo -u list newlist --quiet mailman vagrant@localhost.localdomain "pass-mailman"
service mailman restart
# create some sample lists
for list in $TEST_LISTS; do
if list_lists --bare | grep "$list"; then
echo "$list already exists ..."
else
sudo -u list newlist --quiet "$list" vagrant@localhost.localdomain "pass-$list"
echo 'vagrant@localhost.localdomain' | add_members -r - "$list"
fi
done
#################################################################
# mailman-api configuration
#################################################################
# FIXME binding to 0.0.0.0 is too liberal
cat > /etc/default/mailman-api <<EOF
OPTIONS='--bind=0.0.0.0:8010'
EOF
service mailman-api restart
if ! grep -q MAILMAN_API_URL /etc/colab/settings.yaml; then
echo "MAILMAN_API_URL: 'http://localhost:8010'" >> /etc/colab/settings.yaml
fi
#################################################################
# postfix configuration
#################################################################
postconf relay_domains="$LISTS_DOMAIN"
postconf transport_maps=hash:/etc/postfix/transport
echo "$LISTS_DOMAIN mailman:" > /etc/postfix/transport
postmap /etc/postfix/transport
service postfix restart
#################################################################
# post a few message to each list
#################################################################
for list in $TEST_LISTS; do
for i in $(seq 1 10); do
(echo "this is a test ($i)") | mail -r vagrant@localhost.localdomain -s "test $i" "$list@lists.local"
done
done