Commit 2ace09602e3061f0968bc951b583ffdbc4642740
1 parent
8a429d26
Exists in
master
and in
67 other branches
Automate a development mailman setup
Showing
4 changed files
with
114 additions
and
8 deletions
Show diff stats
vagrant.d/00-colab
| ... | ... | @@ -0,0 +1,98 @@ |
| 1 | +#!/bin/sh | |
| 2 | + | |
| 3 | +set -e | |
| 4 | + | |
| 5 | +export DEBIAN_FRONTEND=noninteractive | |
| 6 | + | |
| 7 | +if [ ! -f /etc/apt/sources.list.d/mailman-api.list ]; then | |
| 8 | + cat > /etc/apt/sources.list.d/mailman-api.list <<EOF | |
| 9 | +deb http://download.opensuse.org/repositories/isv:/spb:/mailman-api/Debian_7.0/ ./ | |
| 10 | +deb-src http://download.opensuse.org/repositories/isv:/spb:/mailman-api/Debian_7.0/ ./ | |
| 11 | +EOF | |
| 12 | + | |
| 13 | + apt-key add - <<EOF | |
| 14 | +-----BEGIN PGP PUBLIC KEY BLOCK----- | |
| 15 | +Version: GnuPG v2.0.15 (GNU/Linux) | |
| 16 | + | |
| 17 | +mQENBFRE9cMBCADl9VaZi3A4u5Fy2X9FP/18xkz2U1hsklLTgvwSuFT4gDCgtvD4 | |
| 18 | +r3xAxnZ/52yLdAnrBratM1uC03WWifrCE+J5rImhiwP3itUzAGi/chmfVAuMBAVN | |
| 19 | +7rjBpurQoEuMDwec60XmS9XJ+BrcO+MyKaLTxKwy1KN+vaIM8Z7evpFdZghXwbL6 | |
| 20 | +17ENLRbvqVs7gNtiyLQb26mNMRxTzp7vGFn4Vm2b73GrKvPC4nnUBA5FYZkSclk2 | |
| 21 | +gpYt/QSZ7qj/YQZmzx31YSSRB8BOPGlsXV2ShWTzvVXfQoZ//ViDgYUlwh5hmaJo | |
| 22 | +f1gG6MumwJOdcfGlS2BOkddcYpNTveQ4HNQdABEBAAG0MGlzdjpzcGIgT0JTIFBy | |
| 23 | +b2plY3QgPGlzdjpzcGJAYnVpbGQub3BlbnN1c2Uub3JnPokBPgQTAQIAKAUCVET1 | |
| 24 | +wwIbAwUJBB6wAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQE7yUxPVcdQmz | |
| 25 | +yAf/VIWhDdhOnF6XsR/USY57T1gYxFP3H+KchlCfvyFRc3lczZaDVQ57WkYlw7/2 | |
| 26 | +TN2TpN6JMHPbmltD0QuQg9GSulgp1A5A6R9yWolcZ0QLkSndHcjQciZ4hHcrqO+C | |
| 27 | +Yb8fCMFJfejJ5FcTEVCBQgnazgI9qRyPAhEFZF3OCgQ1XOoaufojPGoKYoNXBOGI | |
| 28 | +g2phdVE1glq6ZesKMagoFURGf4pm/Muq5pjK0DbF/iVOM9uVGDWLLpfVMicYiHSF | |
| 29 | +YbqundUK6MzFlwuLSM0lXYuaaOF6rN3Gq03FVjNE5jbCUxJZAHSYF8KLZ57Opr8R | |
| 30 | +KVogKh7j5fixFpDoydcPkS0Md4hGBBMRAgAGBQJURPXDAAoJEDswEbdrnWUjeLkA | |
| 31 | +oKdP1tDhp1FzMFX+MTvEM/HyupveAKCHai4jMDBsjsoVJDobCws7IBLa3g== | |
| 32 | +=v9lx | |
| 33 | +-----END PGP PUBLIC KEY BLOCK----- | |
| 34 | +EOF | |
| 35 | + apt-get update | |
| 36 | +fi | |
| 37 | + | |
| 38 | +# pre-configure postfix | |
| 39 | +'debconf-set-selections' <<EOF | |
| 40 | +postfix postfix/main_mailer_type select Internet Site | |
| 41 | +EOF | |
| 42 | + | |
| 43 | +apt-get install -qy postfix mailman mailman-api | |
| 44 | + | |
| 45 | +LISTS_DOMAIN=lists.local | |
| 46 | + | |
| 47 | +################################################################# | |
| 48 | +# mailman-api configuration | |
| 49 | +################################################################# | |
| 50 | + | |
| 51 | +# FIXME binding to 0.0.0.0 is too liberal | |
| 52 | +cat > /etc/default/mailman-api <<EOF | |
| 53 | +OPTIONS='--bind=0.0.0.0:8010' | |
| 54 | +EOF | |
| 55 | +service mailman-api restart | |
| 56 | + | |
| 57 | +if ! grep -q MAILMAN_API_URL /etc/colab/settings.yaml; then | |
| 58 | + echo "MAILMAN_API_URL: 'http://localhost:8010'" >> /etc/colab/settings.yaml | |
| 59 | +fi | |
| 60 | + | |
| 61 | +################################################################# | |
| 62 | +# mailman configuration | |
| 63 | +################################################################# | |
| 64 | + | |
| 65 | +mailman_config() { | |
| 66 | + local key="$1" | |
| 67 | + local value="$2" | |
| 68 | + local conffile=/etc/mailman/mm_cfg.py | |
| 69 | + if grep -q "^$key\s*=" $conffile; then | |
| 70 | + sed -i -e "s/^$key\s*=.*/$key = $value/" $conffile | |
| 71 | + else | |
| 72 | + echo "$key = $value" >> $conffile | |
| 73 | + fi | |
| 74 | +} | |
| 75 | + | |
| 76 | +mailman_config DEFAULT_EMAIL_HOST "'$LISTS_DOMAIN'" | |
| 77 | +mailman_config MTA None | |
| 78 | +mailman_config POSTFIX_STYLE_VIRTUAL_DOMAINS "['$LISTS_DOMAIN']" | |
| 79 | +mailman_config DEB_LISTMASTER "'vagrant@localhost.localdomain'" | |
| 80 | + | |
| 81 | +# create some sample lists | |
| 82 | +for list in list01 list02 list03; do | |
| 83 | + if list_lists --bare | grep "$list"; then | |
| 84 | + echo "$list already exists ..." | |
| 85 | + else | |
| 86 | + newlist "$list" vagrant@localhost.localdomain "pass-$list" | |
| 87 | + echo 'vagrant@localhost.localdomain' | add_members -r - "$list" | |
| 88 | + fi | |
| 89 | +done | |
| 90 | + | |
| 91 | +################################################################# | |
| 92 | +# postfix configuration | |
| 93 | +################################################################# | |
| 94 | +postconf relay_domains="$LISTS_DOMAIN" | |
| 95 | +postconf transport_maps=hash:/etc/postfix/transport | |
| 96 | +echo "$LISTS_DOMAIN mailman:" > /etc/postfix/transport | |
| 97 | +postmap /etc/postfix/transport | |
| 98 | +service postfix restart | ... | ... |
vagrant.sh
| ... | ... | @@ -2,4 +2,12 @@ |
| 2 | 2 | |
| 3 | 3 | set -e |
| 4 | 4 | |
| 5 | -run-parts --exit-on-error /vagrant/vagrant.d | |
| 5 | +if [ -x /usr/bin/apt-get ]; then | |
| 6 | + regex='debian|generic' | |
| 7 | +fi | |
| 8 | + | |
| 9 | +if [ -x /usr/bin/yum ]; then | |
| 10 | + regex='centos|generic' | |
| 11 | +fi | |
| 12 | + | |
| 13 | +run-parts --exit-on-error --regex="$regex" /vagrant/vagrant.d | ... | ... |