Skip to content

Instantly share code, notes, and snippets.

@pacojp
Last active December 18, 2015 10:29
Show Gist options
  • Save pacojp/5768857 to your computer and use it in GitHub Desktop.
Save pacojp/5768857 to your computer and use it in GitHub Desktop.
#!/bin/bash
# via http://www.pictnotes.jp/wp/?p=202
#
# curl -o /tmp/install_qmail.sh https://gist.github.com/pacojp/5768857/raw
# /bin/bash /tmp/install_qmail.sh <HOSTNAME>
#
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
if [ $# -ne 1 ]; then
echo "ホスト名を引数で指定して下さい ./install_qmail.sh <HOSTNAME>" 1>&2
exit 1
fi
HOSTNAME=$1
yum remove -y postfix
yum install -y git autoconf openssl-devel readline-devel zlib-devel curl-devel procps gcc gcc-devel patch
yum install -y openssl-devel csh
# apacheの用意
yum remove -y httpd httpd-tools
yum install -y httpd24 mod24_ssl
sed -i "s/\/etc\/pki\/tls\/private\/localhost\.key/\/etc\/httpd\/ssl\/server\.key/g" /etc/httpd/conf.d/ssl.conf
sed -i "s/\/etc\/pki\/tls\/certs\/localhost\.crt/\/etc\/httpd\/ssl\/server\.crt/g" /etc/httpd/conf.d/ssl.conf
# qmailのインストール
mkdir -p /usr/local/src/install_qmail
cd /usr/local/src/install_qmail
# アカウント作成
groupadd nofiles
groupadd qmail
#groupadd vchkpw
mkdir /var/qmail
chgrp nofiles /var/qmail
adduser -g nofiles -s /sbin/nologin -d /var/qmail/alias -M alias
adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmaild
adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmaill
adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmailp
adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmailq
adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmailr
adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmails
cd /usr/local/src
# qmail
curl -L -o qmail-1.03.tar.gz http://cr.yp.to/software/qmail-1.03.tar.gz
tar xvfz qmail-1.03.tar.gz
cd qmail-1.03
curl -L -o qmail-1.03.errno.patch http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch
curl -L -o qmail-date-localtime.patch http://www.itheart.com/phpgw/qmail-date-localtime.patch
curl -L -o qmail-1.03.qmail_local.patch http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.qmail_local.patch
curl -L -o qmail-smtpd-relay-reject http://qmail.org/qmail-smtpd-relay-reject
curl -L -o qmail-0.0.0.0.patch http://www.suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch
curl -L -o qmailqueue-patch http://qmail.org/qmailqueue-patch
curl -L -o qmail-smtpd-auth-0.31.tar.gz http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz
curl -L -o qmail-remote-auth.patch http://tomclegg.net/qmail/qmail-remote-auth.patch
tar xvfz qmail-smtpd-auth-0.31.tar.gz
/bin/cp -f qmail-smtpd-auth-0.31/* ./
patch < qmail-1.03.errno.patch
patch < qmail-date-localtime.patch
patch < qmail-1.03.qmail_local.patch
patch < qmail-smtpd-relay-reject
patch < qmail-0.0.0.0.patch
patch < qmailqueue-patch
patch < auth.patch
patch < qmail-remote-auth.patch
make
make setup
make check
./config-fast ${HOSTNAME}
echo "export PATH=\$PATH:/var/qmail/bin" >> ~/.bash_profile
source ~/.bash_profile
which qmail-local
# tcp server
cd /usr/local/src
curl -L -o ucspi-tcp-0.88.tar.gz http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar xvfz ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
curl -L -o ucspi-tcp-0.88.errno.patch http://www.qmail.org/rpms/patches/ucspi-tcp-0.88.errno.patch
curl -L -o ucspi-tcp-ssl-20050405.patch.gz http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz
gunzip ucspi-tcp-ssl-20050405.patch.gz
# this patch proceed ucspi-tcp-0.88.errno.patch too.
patch < ucspi-tcp-ssl-20050405.patch
make
make setup
make check
echo '127.:allow,RELAYCLIENT=""' > /etc/tcp.smtp
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
# fastforward
cd /usr/local/src
curl -L -o fastforward-0.51.tar.gz http://cr.yp.to/software/fastforward-0.51.tar.gz
tar xvfz fastforward-0.51.tar.gz
cd fastforward-0.51
sed -i "s/extern int errno;/#include<errno\.h>/g" error.h
make
make setup
make check
# libev for vpopmail
cd /usr/local/src/
curl -L -o libev-4.15.tar.gz http://dist.schmorp.de/libev/libev-4.15.tar.gz
tar xvzf libev-4.15.tar.gz
cd libev-4.15
./configure && make && make install
# vpopmail
export LDFLAGS='-ldl'
cd /usr/local/src
curl -L -o vpopmail-5.4.28.tar.gz http://sourceforge.net/projects/vpopmail/files/vpopmail-stable/5.4.28/vpopmail-5.4.28.tar.gz/download
tar xvxf vpopmail-5.4.28.tar.gz
cd vpopmail-5.4.28
groupadd vchkpw
useradd -g vchkpw -s /sbin/nologin -d /var/qmail/vpopmail -M vpopmail
mkdir /var/qmail/vpopmail
chown vpopmail:vchkpw /var/qmail/vpopmail/
./configure --disable-clear-passwd --enable-logging=y --enable-qmail-ext=n --enable-roaming-users --enable-relay-clear-minutes=10
make
make install-strip
# error!!!
# cd vusaged && ./configure && make
mv /etc/tcp.smtp* /var/qmail/vpopmail/etc
# autorespond
cd /usr/local/src
curl -L -o autorespond-2.0.5.tar.gz http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
tar zxvf autorespond-2.0.5.tar.gz
cd autorespond-2.0.5
make
make install
# qmailadmin
cd /usr/loca/src
#mkdir qmailadmin.${HOSTNAME}
#mkdir -p /var/www/vhosts/qmailadmin.${HOSTNAME}/html
curl -L -o qmailadmin-1.2.15.tar.gz http://sourceforge.net/projects/qmailadmin/files/qmailadmin-stable/1.2.15/qmailadmin-1.2.15.tar.gz/download
tar zxvf qmailadmin-1.2.15.tar.gz
cd qmailadmin-1.2.15
./configure --enable-htmldir=/var/www/qmailadmin \
--enable-vpopmaildir=/var/qmail/vpopmail \
--enable-vpopuser=vpopmail \
--enable-autoresponder-bin=/usr/bin/autorespond \
--enable-imagedir=/var/www/qmailadmin/images \
--enable-imageurl=/qmailadmin/images \
--disable-ezmlmdir \
--disable-ezmlm-mysql \
--enable-help
make
make install
cat <<EOF > /etc/httpd/conf.d/qmailadmin.conf
Alias /qmailadmin /var/www/qmailadmin
<Directory "/var/www/cgi-bin">
<Files "qmailadmin">
order deny,allow
allow from all
</Files>
</Directory>
EOF
curl -L -o /etc/httpd/conf.d/rewrite.conf https://gist.github.com/pacojp/5775144/raw
# qmailadmin-help
cd /usr/local/src/
curl -L -o qmailadmin-help-1.0.8.tar.gz http://www.inter7.com/devel/qmailadmin-help-1.0.8.tar.gz
tar xvfz qmailadmin-help-1.0.8.tar.gz
cd qmailadmin-help-1.0.8
mkdir -p /var/www/qmailadmin/images/help
cp -rp * /var/www/qmailadmin/images/help
# qmail env setup
/etc/init.d/sendmail stop
chkconfig sendmail off
curl -L -o /etc/init.d/qmail https://gist.github.com/pacojp/5773189/raw
chmod 755 /etc/init.d/qmail
chkconfig --add qmail
cp /var/qmail/boot/home /var/qmail/rc
sed -i "s/\.\/Mailbox/\.\/Maildir/g" /var/qmail/rc
# smtp-auth problem
chown root:root /var/qmail/vpopmail/bin/vchkpw
chmod 4755 /var/qmail/vpopmail/bin/vchkpw
/etc/init.d/httpd start
cat <<EOF
- you shoud do last few steps by hand.
1. create files for ssl(execute each line).
mkdir -p /etc/httpd/ssl
cd /etc/httpd/ssl/
openssl genrsa -aes128 1024 > server.key
openssl req -new -key server.key > server.csr
openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt
mv server.key server.key.back
openssl rsa -in server.key.back > server.key
2. create virtual domain for vpopmail and postmaster user.
/var/qmail/vpopmail/bin/vadddomain ${HOSTNAME}
3.add user for yor domain
/var/qmail/vpopmail/bin/vadduser user1@${HOSTNAME}
4. acccess qmailadmin and check if it works.
http://*********/cgi-bin/qmailadmin
5. open ports 25 110 587
6. start qmail and httpd
/etc/init.d/qmail start
/etc/init.d/httpd start
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment