Skip to content

Instantly share code, notes, and snippets.

@hilotech
Created May 13, 2015 19:59
Show Gist options
  • Save hilotech/0fe197c5a3f7b5743a78 to your computer and use it in GitHub Desktop.
Save hilotech/0fe197c5a3f7b5743a78 to your computer and use it in GitHub Desktop.
ConoHa [VPSでコラボ]Mailmanでメーリングリスト構築スクリプト
#!/bin/bash
set -e
set -u
ML_SERVER='ml.example.com'
MAILMAN_ADMIN_PASSWORD='hogehoge1'
ADMINML_ADMIN='someone@example.com'
ADMINML_PASSWORD='hogehoge2'
yum -y install make gcc python python-devel httpd wget
useradd --home-dir=/usr/local/mailman \
--shell=/sbin/nologin \
--create-home \
--system \
mailman
chmod a+rx,g+ws /usr/local/mailman
SRCTEMP=`mktemp -d`
DIST='http://docs.python.jp/contrib/mailman/_static/mailman-2.1.14+j7.tgz'
cd $SRCTEMP
wget $DIST
FN=`basename $DIST`
tar zxvf $FN
cd ${FN%.tgz}
./configure --with-cgi-gid=apache --with-mail-gid=mailman
make && make install
cd /tmp
/bin/rm -r $SRCTEMP
TEMP_PERMS=`mktemp`
until tail -1 $TEMP_PERMS | grep -q 'No problems found'
do
/usr/local/mailman/bin/check_perms -f | tee $TEMP_PERMS
done
/bin/rm $TEMP_PERMS
cp /usr/local/mailman/Mailman/mm_cfg.py{,.org}
cat <<_EOF_ >> /usr/local/mailman/Mailman/mm_cfg.py
GLOBAL_PIPELINE.insert(1, 'iso2022jpfix')
DEFAULT_URL_HOST = '$ML_SERVER'
DEFAULT_EMAIL_HOST = '$ML_SERVER'
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
DEFAULT_URL_PATTERN = 'http://%s/mailman/'
MTA = 'Postfix'
SMTPHOST = 'localhost'
DEFAULT_SERVER_LANGUAGE = 'ja'
USE_MAILMAN_MESSAGE_ID = Yes
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['$ML_SERVER']
_EOF_
cat <<'_EOF_' >> /usr/local/mailman/Mailman/mm_cfg.py
DEFAULT_ARCHIVE = On
DEFAULT_ARCHIVE_PRIVATE = 1
DEFAULT_ARCHIVE_VOLUME_FREQUENCY = 1
DEFAULT_LIST_ADVERTISED = No
DEFAULT_DIGESTABLE = No
DEFAULT_DIGEST_IS_DEFAULT = No
DEFAULT_SEND_GOODBYE_MSG = No
DEFAULT_SEND_WELCOME_MSG = No
DEFAULT_SEND_REMINDERS = No
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%05d] "
OLD_STYLE_PREFIXING = No
DEFAULT_REPLY_GOES_TO_LIST = 1
DEFAULT_FIRST_STRIP_REPLY_TO = No
DEFAULT_GENERIC_NONMEMBER_ACTION = 0
DEFAULT_SUBSCRIBE_POLICY = 2
DEFAULT_UNSUBSCRIBE_POLICY = 1
ALLOW_OPEN_SUBSCRIBE = No
DEFAULT_ADMIN_MEMBER_CHUNKSIZE = 100
DEFAULT_PRIVATE_ROSTER = 1
DEFAULT_OBSCURE_ADDRESSES = Yes
REMOVE_DKIM_HEADERS = Yes
DEFAULT_RESPOND_TO_POST_REQUESTS = No
SCRUBBER_DONT_USE_ATTACHMENT_FILENAME = True
ALLOW_SITE_ADMIN_COOKIES = No
DEFAULT_REQUIRE_EXPLICIT_DESTINATION = No
DEFAULT_MAX_MESSAGE_SIZE = 40000
DEFAULT_MSG_HEADER = ''
DEFAULT_MSG_FOOTER = ''
DEFAULT_INCLUDE_LIST_POST_HEADER = Yes
INCLUDE_RFC2369_HEADERS = Yes
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes
OWNERS_CAN_ENABLE_PERSONALIZATION = No
DEFAULT_NEW_MEMBER_OPTIONS = 0
_EOF_
/usr/local/mailman/bin/genaliases
chown mailman.mailman /usr/local/mailman/data/aliases
touch /usr/local/mailman/data/virtual-mailman
chown mailman.mailman /usr/local/mailman/data/virtual-mailman
postmap /usr/local/mailman/data/virtual-mailman
chmod g+w /usr/local/mailman/data/{aliases*,virtual*}
crontab -u mailman /usr/local/mailman/cron/crontab.in
cp /usr/local/mailman/scripts/mailman /etc/rc.d/init.d
chkconfig mailman on
/usr/local/mailman/bin/mmsitepass $MAILMAN_ADMIN_PASSWORD
yes '' | /usr/local/mailman/bin/newlist mailman $ADMIN_MAIL $ADMINML_PASSWORD
/usr/local/mailman/bin/config_list -i /usr/local/mailman/data/sitelist.cfg mailman
sed -i \
-e "s|^\\(alias_maps = hash:/etc/aliases\\)|\\1,hash:/usr/local/mailman/data/aliases\nvirtual_alias_maps = hash:/usr/local/mailman/data/virtual-mailman\n|" \
/etc/postfix/main.cf
sed -i \
-e "s|^\\(mydestination =.*\\)$|\\1, $ML_SERVER|" \
/etc/postfix/main.cf
sed -i \
-e 's|^\(inet_protocols = \)all|\1ipv4|' \
/etc/postfix/main.cf
echo 'AddHandler cgi-script .cgi' > /etc/httpd/conf.d/cgi.conf
echo 'NameVirtualHost *:80
Include vhosts/*.conf
' > /etc/httpd/conf.d/vhosts.conf
mkdir /etc/httpd/vhosts
cat <<_EOF_ > /etc/httpd/vhosts/$ML_SERVER.conf
<VirtualHost *:80>
ServerName $ML_SERVER
ScriptAlias /mailman/ /usr/local/mailman/cgi-bin/
<Directory /usr/local/mailman/cgi-bin/>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
Alias /pipermail/ /usr/local/mailman/archives/public/
<Directory /usr/local/mailman/archives/public/>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AddDefaultCharset Off
</Directory>
RedirectMatch ^/mailman[/]*$ /mailman/listinfo
Alias /icons/ /usr/local/mailman/icons/
<Directory /usr/local/mailman/icons/>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AddDefaultCharset Off
</Directory>
</VirtualHost>
_EOF_
iptables -I INPUT -p tcp --dport http -j ACCEPT
service iptables save
service iptables restart
chkconfig httpd on
service postfix restart
service mailman start
service httpd start
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment