Mailpiler project is available on the project’s page: http://mailpiler.org.
This is a quick instruction set to install mailpiler on CentOS 5.x 64 bit machine. After installing the default system you should always update your packages with yum update
. I will use two extended repository, the EPEL and the IUS. I think everybody knows the EPEL, but I found IUS really convenient to install php5.x, particularly for suhosin-patch and mysql5.x.
So, let’s start with installing these packages:
cd /tmp wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm rpm -ivh epel-release-5-4.noarch.rpm wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-10.ius.el5.noarch.rpm rpm -ivh ius-release-1.0-10.ius.el5.noarch.rpm rpm --import /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
When it is done, we can start to build our http and SQL server, set the daemons startup and secure the mysql installation:
yum install httpd mysql51-server mysql51 chkconfig --levels 235 mysqld on chkconfig --levels 235 https on service httpd start service mysqld start mysql_secure_installation
The LAMP stack will be complete with php. I used the packages from IUS repository, because they take care about the name collision, since they introduced their naming convention in terms of package names.
yum install php53u-common php53u-mysql php53u-ldap php53u-gd php53u-devel php53u-pdo php53u php53u-odbc php53u-xml php53u-xmlrpc php53u-bcmath php53u-snmp php53u-soap php53u-pear php53u-cli php53u-imap php53u-dba php53u-mbstring php53u-suhosin
We need these compiling and development libraries also:
yum install gcc openssl-devel memcached libjpeg-devel libpng-devel gcc-c++ pkgconfig fontconfig-devel latex2rtf php53u-pecl-memcache mysql51-devel zlib-devel latex2html
Our basic system is ready, let’s start to install the components for mailpiler:
Sphinx is the search engine for the mails, and we are lucky, it is available from an rpm package:
cd /tmp wget http://sphinxsearch.com/files/sphinx-2.0.5-1.rhel5.x86_64.rpm rpm -i ./sphinx-2.0.5-1.rhel5.x86_64.rpm
Let’s get our hands dirty, download and compile the other components…
Libzip for zip file handling:
cd /tmp wget http://nih.at/libzip/libzip-0.10.1.tar.gz tar -xvzf ./libzip-0.10.1.tar.gz cd libzip-0.10.1 ./configure make make install
If you have the following error:
configure: error: ZLIB version too old, please install at least v1.1.2
zlib-devel is missing, just do yum install zlib-devel
.
Since these components will use their own library, you should add the /usr/local/lib
to your ld.so.conf:
echo /usr/local/lib > /etc/ld.so.conf.d/piler.conf ldconfig; ldconfig -p | grep libzip
You should see two lines, with libzip libraries at the end of the command.
Install catdoc:
cd /tmp wget http://ftp.wagner.pp.ru/pub/catdoc/catdoc-0.94.2.tar.gz tar -xvzf ./catdoc-0.94.2.tar.gz cd catdoc-0.94.2 ./configure make make install
Install poppler (formerly known as pdf2text):
cd /tmp wget http://poppler.freedesktop.org/poppler-0.20.5.tar.gz tar xvzf poppler-0.20.5.tar.gz cd poppler-0.20.5 ./configure
The output should be like that:
Building poppler with support for: font configuration: fontconfig splash output: yes cairo output: no (requires cairo >= 1.10.0) qt4 wrapper: no glib wrapper: no (requires cairo output) introspection: no cpp wrapper: yes use gtk-doc: no use libjpeg: yes use libpng: yes use libtiff: no use zlib: no use libcurl: no use libopenjpeg: no use cms: no command line utils: yes
Then compile it:
make make install make check ldconfig
Install unrtf:
cd /tmp wget http://ftp.gnu.org/gnu/unrtf/unrtf-0.21.2.tar.gz tar xvzf unrtf-0.21.2.tar.gz cd unrtf-0.21.2 ./configure make make install make check
You will need tre, but not from the repositories:
cd /tmp wget http://laurikari.net/tre/tre-0.8.0.tar.gz tar -xvzf tre-0.8.0.tar.gz cd tre-0.8.0 ./configure make make install make check ldconfig
Last step before the showtime: copy zipconf.h to the directory where piler will look for it:
cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/
Start Piler install
groupadd piler useradd -g piler -s /bin/sh -d /var/piler piler usermod -L piler cd /tmp wget https://bitbucket.org/jsuto/piler/downloads/piler-0.1.21.tar.gz tar -xvzf piler-0.1.21.tar.gz cd piler-0.1.21 ./configure --enable-memcached --localstatedir=[where you want to store your emails] make
If you have the following error:
/libpiler.so: undefined reference to `tre_regexec' ./libpiler.so: undefined reference to `tre_regcomp' ./libpiler.so: undefined reference to `tre_regfree' collect2: ld returned 1 exit status
Remove the tre-devel package (yum remove tre-devel
), and run configure again.
Let’s put piler together:
su -c 'make install'
After successful compile run ldconfig to import piler libraries and set up the config files for piler:
ldconfig
nano /usr/local/etc/piler.conf
### Change the following lines according to your configuration: mydomains=yourdomain mysqlsocket=/var/lib/mysql/mysql.sock
Remove sendmail to not block your port 25:
yum remove sendmail
Create a key for the email store encryption, from piler directory (/tmp/piler-0.1.21):
make key
cp piler.key /usr/local/etc
chgrp piler /usr/local/etc/piler.key
chmod 640 /usr/local/etc/piler.key
IMPORTANT! Make sure you never lose/overwrite the key otherwise you won’t access your archive ever again. So whenever you upgrade be sure to keep your existing key file.
Create a database for piler, it is highly recommended that not use verystrongpassword!
#mysql -u root -p mysql>create database piler character set 'utf8'; mysql>grant all privileges on piler.* to piler@localhost identified by 'verystrongpassword'; mysql>flush privileges; mysql>quit;
Import piler initial database:
mysql -u piler -p < util/db-mysql.sql
Sphinx setup:
mv /etc/sphinx/sphinx.conf /etc/sphinx/sphinx.conf.orig
cp etc/sphinx.conf /etc/sphinx
nano /etc/sphinx/sphinx.conf
## Change sql_pass parameters (it is piler in default) according to you system.
Start firs indexing:
#su - piler
$indexer --all
Start piler:
sh init.d/rc.piler start
If you have an error: piler: error while loading shared libraries: libpiler.so: cannot open shared object file: No such file or directory, then check your /etc/ld.so.conf.d/piler.conf
file, and run ldconfig
again.
Start sphinx:
nano init.d/rc.searchd ## Change the line (line 10): su piler -c '/usr/local/bin/searchd' ##to this su piler -c '/usr/bin/searchd' ##then: sh init.d/rc.searchd start
Copy files to the web server’s DocumentRoot:
mv webui /var/www/html/piler
Set up cron jobs
For piler user:
# if you use different version of sysstat (mpstat) then perhaps the 10th variable contains the %idle number
*/5 * * * * LC_ALL=C mpstat | tail -1 | awk '{print $11}' > /var/piler/stat/cpu.stat
*/15 * * * * /usr/local/bin/indexer --quiet delta1 --rotate && sleep 2 && /usr/local/bin/indexer --quiet --merge main1 delta1 --merge-dst-range deleted 0 0 --rotate
*/15 * * * * /usr/local/bin/indexer --quiet tag1 --rotate
*/15 * * * * /usr/local/bin/indexer --quiet note1 --rotate
30 7 * * * /usr/local/libexec/piler/daily-report.php /var/www/html/piler
Set up Apache:
Add the following lines to the /etc/httpd/conf/httpd.conf:
<VirtualHost *>
ServerName mailarchive.[yourdomain]
DocumentRoot /var/www/html/piler
<Directory /var/www/html/piler>
AllowOverride All
</Directory>
ServerAdmin sysadm@[yourdomain]
ErrorLog /var/log/httpd/mailarchive.[yourdomain]-error_log
CustomLog /var/log/httpd/mailarchive.[yourdomain]-access_log common
</VirtualHost>
Edit the /var/www/html/piler/config.php.
The most important values that you have to change:
SITE_URL PILER_HOST SMTP_DOMAIN SMTP_FROMADDR ADMIN_EMAIL DB_PASSWORD SPHINX_DATABASE DIR_BASE ## Don'r t forget the ending slash / ##
Restart apache:
service httpd restart
We are done! You can login on your http://mailarchive.site with admin@local/pilerrocks…
Nice and easy, right? 😉
The last thing to drop a copy from every mail from your primary mail server to this system, so it is better to create a subdomain for this in the DNS and then bcc or log everything to this particular server.
You can import mails from existing mailboxes/IMAP servers with pilerimport.
hi
nice post for setup mailpiler.
how to get email from pop3 into the piler ?
anyidea ?
thanks
Hi loog,
The easiest way through the pilerimport command, you should use pilerimport -K -u -p .
Don’t forget to change the actual logged in user to your mailpiler user before before start this command.
For the further options to import mail you can check the author’s documentation page:
http://www.mailpiler.org/en/import.html
I hope I could help you.
can u plz tell me how to install this mail piler in redhat linux 6 with complete commands to install and configure ,and what all need to be installed to install mail piler? where can i download this mail piler for free
Hi nisha, You can find the mail piler and its official documentation on http://www.mailpiler.org. I think the steps are the same for RHEL6 as I described above. I hope this helps. If you get stuck, let me know and I will try install on RHEL6 as well.