The Perfect SpamSnake - Ubuntu Jeos 10.10

Author: Rocky
Version: 4

Postfix w/Bayesian Filtering and Anti-Backscatter (Relay Recipients via look-ahead), Nginx/Uwsgi, Mysql, Dnsmasq, MailScanner (Spamassassin, ClamAV, Pyzor, Razor, DCC-Client), Baruwa, SPF Checks, FuzzyOcr, Sanesecurity Signatures, Greyfix, KAM, Scamnailer, FireHOL (Iptables Firewall), Relay Recipients Script, Webmin (Optional), Outgoing Disclaimer with alterMIME (Optional)

This tutorial shows how to set up an Ubuntu Jeos based server as a spamfilter in Gateway mode. In the end, you will have a SpamSnake Gateway which will relay clean emails to your MTA. You will also be able to view your incoming queue, train your SpamSnake and carry out a few more advanced operations via Baruwa.

I cannot offer any guarantees that this will work for you, the same way it’s working for me.

I will use the following software:
• Web Server: Nginx v0.8.53/Uwsgi v0.9.6.5
• Database Server: MySQL v5.1.49
• Mail Server: Postfix v2.7.1
• Caching DNS Server: Dnsmasq 2.55
• Filter: MailScanner v4.81.4
• Frontend: Baruwa v1

Credit goes to the guys at HowToForge and the developers of MailScanner, Baruwa, Clamav, Nginx/Uwsgi, Mysql, Postfix, Spamassassin, Razor/Pyzor/DCC and Firehol.

 

BASE INSTALL

1. Install minimum vm option
    Set hostname to server1
2. Default guided partition method
3. Setup user:
    u: administrator
    p: password
    No encryption
4. No auto-updates
5. Install OpenSSH

 

POST INSTALLATION

1. Get root Privileges

Enable the root login by running the following and giving root a password. You can then directly log in as root:

sudo passwd root

 

2. Configure The Network

Because the Ubuntu installer has configured our system to get its network settings via DHCP, we have to change that now because a server should have a static IP address. Edit /etc/network/interfaces and adjust it to your needs (in this example setup I will use the IP address 192.168.0.100):

vi /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Then restart your network:

/etc/init.d/networking restart

vi /etc/hosts

and make it look like this:

127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Now run:

echo server1.example.com > /etc/hostname
reboot now

Afterwards, run:

hostname
hostname -f

Both should show server1.example.com now.

 

3. Change The Default Shell

/bin/sh is a symlink to /bin/dash, however we need /bin/bash, not /bin/dash. Therefore we do this:

dpkg-reconfigure dash

Install dash as /bin/sh? <-- No

Install a few packages and requirements that are needed later on:

apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.6-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential telnet wget gawk

 

4. Caching Dnsmasq

apt-get install dnsmasq

vi /etc/dnsmasq.conf

and make Dnsmasq listen on localhost:

listen-address=127.0.0.1

vi /etc/resolv.conf

and append the following to the top of the list:

nameserver 127.0.0.1

 

5. Install Mysql

apt-get install mysql-client mysql-server libdbd-mysql-perl

You will be asked to provide a password for the MySQL root user - this password is valid for the user root@localhost as well as root@server1.example.com, so we don't have to specify a MySQL root password manually later on:

New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword

Share this page:

39 Comment(s)

Add comment

Comments

From: at: 2010-12-03 02:06:32

Updated.

From: tokamak at: 2010-12-02 01:46:55

 i get an script error for the postfix.sh

Zeile 41: Syntaxfehler beim unerwarteten Wort `(' 

LINE 41: Syntaxerror  unknow word  `('

 

 

 

From: Matt Juaire at: 2011-01-20 01:14:37

I know the howto has this setup on a virtual server. What did you recommend to give to the system for resources (cpu count, memory, hd size)?

From: at: 2011-01-20 15:29:13

This is my current setup:

CPU: 2.8GHZ divided by 3 vms

Ram: 1GB allocated for vm

HDD: 5GB allocated for vm

As you can see, my setup is a vm and I only filter 2 local domains.  Based on your needs, you may need to increase your HDD space for quarantine.  You can install this as a vm or as a stand alone.

From: at: 2011-03-17 16:23:01

your tutorial is very interesting, but i think that it could be more simple for a lot of people to install a solution like  MailCleaner Open Source Edition

Installation CD ISO image and full web admin interface

The result will be quite the same

 Olivier

From: at: 2010-12-21 17:38:17

Hi!

As always, great guide! 

I am using Ubuntu Server 10.04 and in "Install missing perl packages" step I get the following error:

---

root@spamsnake:~# perl -MCPAN -e shell
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.9402)
Enter 'h' for help.

cpan[1]> install Crypt::OpenSSL::RSA
CPAN: Storable loaded ok (v2.20)
Going to read '/root/.cpan/Metadata'
  Database was generated on Tue, 21 Dec 2010 16:35:00 GMT
Running install for module 'Crypt::OpenSSL::RSA'
CPAN: Data::Dumper loaded ok (v2.124)
'YAML' not installed, falling back to Data::Dumper and Storable to read prefs '/root/.cpan/prefs'
Running make for I/IR/IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz
CPAN: Digest::SHA loaded ok (v5.47)
CPAN: Compress::Zlib loaded ok (v2.02)
Checksum for /root/.cpan/sources/authors/id/I/IR/IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz ok
Scanning cache /root/.cpan/build for sizes
............................................................................DONE
CPAN: Archive::Tar loaded ok (v1.52)
Crypt-OpenSSL-RSA-0.26/
Crypt-OpenSSL-RSA-0.26/RSA.xs
Crypt-OpenSSL-RSA-0.26/RSA.pm
Crypt-OpenSSL-RSA-0.26/typemap
Crypt-OpenSSL-RSA-0.26/MANIFEST
Crypt-OpenSSL-RSA-0.26/Makefile.PL
Crypt-OpenSSL-RSA-0.26/LICENSE
Crypt-OpenSSL-RSA-0.26/Changes
Crypt-OpenSSL-RSA-0.26/t/
Crypt-OpenSSL-RSA-0.26/t/format.t
Crypt-OpenSSL-RSA-0.26/t/bignum.t
Crypt-OpenSSL-RSA-0.26/t/rsa.t
Crypt-OpenSSL-RSA-0.26/README
Crypt-OpenSSL-RSA-0.26/META.yml
CPAN: File::Temp loaded ok (v0.22)

  CPAN.pm: Going to build I/IR/IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz

Checking if your kit is complete...
Looks good
Warning: prerequisite Crypt::OpenSSL::Random 0 not found.
Writing Makefile for Crypt::OpenSSL::RSA
Could not read '/root/.cpan/build/Crypt-OpenSSL-RSA-0.26-PTQVSZ/META.yml'. Falling back to other methods to determine prerequisites
---- Unsatisfied dependencies detected during ----
----  IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz  ----
    Crypt::OpenSSL::Random [requires]
Shall I follow them and prepend them to the queue
of modules we are processing right now? [yes]
Running make test
  Delayed until after prerequisites
Running make install
  Delayed until after prerequisites
Running install for module 'Crypt::OpenSSL::Random'
'YAML' not installed, falling back to Data::Dumper and Storable to read prefs '/root/.cpan/prefs'
Running make for I/IR/IROBERTS/Crypt-OpenSSL-Random-0.04.tar.gz
Checksum for /root/.cpan/sources/authors/id/I/IR/IROBERTS/Crypt-OpenSSL-Random-0.04.tar.gz ok
Crypt-OpenSSL-Random-0.04/
Crypt-OpenSSL-Random-0.04/Random.pm
Crypt-OpenSSL-Random-0.04/Random.xs
Crypt-OpenSSL-Random-0.04/LICENSE
Crypt-OpenSSL-Random-0.04/Changes
Crypt-OpenSSL-Random-0.04/test.pl
Crypt-OpenSSL-Random-0.04/Makefile.PL
Crypt-OpenSSL-Random-0.04/META.yml
Crypt-OpenSSL-Random-0.04/MANIFEST

  CPAN.pm: Going to build I/IR/IROBERTS/Crypt-OpenSSL-Random-0.04.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for Crypt::OpenSSL::Random
Could not read '/root/.cpan/build/Crypt-OpenSSL-Random-0.04-T4RbJx/META.yml'. Falling back to other methods to determine prerequisites
cp Random.pm blib/lib/Crypt/OpenSSL/Random.pm
AutoSplitting blib/lib/Crypt/OpenSSL/Random.pm (blib/lib/auto/Crypt/OpenSSL/Random)
/usr/bin/perl /usr/share/perl/5.10/ExtUtils/xsubpp  -typemap /usr/share/perl/5.10/ExtUtils/typemap  Random.xs > Random.xsc && mv Random.xsc Random.c
Please specify prototyping behavior for Random.xs (see perlxs manual)
cc -c   -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\" -fPIC "-I/usr/lib/perl/5.10/CORE"   Random.c
Random.xs:5:26: error: openssl/rand.h: No such file or directory
make: *** [Random.o] Error 1
  IROBERTS/Crypt-OpenSSL-Random-0.04.tar.gz
  /usr/bin/make -- NOT OK
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running make for I/IR/IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz
  Has already been unwrapped into directory /root/.cpan/build/Crypt-OpenSSL-RSA-0.26-PTQVSZ

  CPAN.pm: Going to build I/IR/IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz

Warning: Prerequisite 'Crypt::OpenSSL::Random => 0' for 'IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz' failed when processing 'IROBERTS/Crypt-OpenSSL-Random-0.04.tar.gz' with 'make => NO'. Continuing, but chances to succeed are limited.
CPAN: Time::HiRes loaded ok (v1.9719)
cp RSA.pm blib/lib/Crypt/OpenSSL/RSA.pm
AutoSplitting blib/lib/Crypt/OpenSSL/RSA.pm (blib/lib/auto/Crypt/OpenSSL/RSA)
/usr/bin/perl /usr/share/perl/5.10/ExtUtils/xsubpp  -typemap /usr/share/perl/5.10/ExtUtils/typemap -typemap typemap  RSA.xs > RSA.xsc && mv RSA.xsc RSA.c
cc -c   -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.26\" -DXS_VERSION=\"0.26\" -fPIC "-I/usr/lib/perl/5.10/CORE"  -DPERL5 -DOPENSSL_NO_KRB5 RSA.c
RSA.xs:5:25: error: openssl/bio.h: No such file or directory
[several errors like above...]
make: *** [RSA.o] Error 1
  IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz
  /usr/bin/make -- NOT OK
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Failed during this command:
 IROBERTS/Crypt-OpenSSL-Random-0.04.tar.gz    : make NO
 IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz       : make NO

cpan[2]>

---

Any ideas of how to fix it?

From: at: 2010-12-23 06:51:38

You do not have the openssl header files. Random.xs:5:26: error: openssl/rand.h: No such file or directory

 Install the openssl-dev package

From: at: 2012-03-12 00:21:52

on ubuntu its

apt-get install libssl-dev

regards

From: Naz at: 2010-12-08 03:48:32

Hi, thank you for the great how-to. pyzor_add_header 1 is no longer a valid config option with the newer versions of spamassassin and will generate warning. You can see it at the --lint output.

From: at: 2010-12-08 15:22:56

Updated thanks.

From: Anonymous at: 2010-12-07 15:07:58

 spamassing test error
 
Dec  7 15:20:15.262 [15606] warn: config: failed to parse line, skipping, in "/etc/spamassassin/mailscanner.cf": pyzor_add_header 1
Dec  7 15:20:15.264 [15606] warn: config: failed to parse line, skipping, in "/opt/MailScanner/etc/spam.assassin.prefs.conf": pyzor_add_header 1                                          
best regards
 
 
 

From: at: 2010-12-04 17:11:04

Guide updated, mailscanner should be installed first.

From: Anonymous at: 2010-12-04 09:51:46

there is no directory: cp /opt/MailScanner/etc/spam.assassin.prefs.conf

 

From: Eddo at: 2010-11-30 14:49:36

Great I was waiting for this one!

At step 7 I think you mean the libclamav-client-perl?

Regards,

From: Eddo at: 2010-11-30 14:58:36

Great I was waiting for this one!

At step 7 I think you mean the libclamav-client-perl? and should we install spamassassin here or download it and install from source?

Regards,

From: at: 2010-12-01 19:16:11

It should be libclamav6. Also, I moved the dependencies up a bit, we want it before the spamassassin section.


From: w0rldart at: 2011-01-17 13:03:42

Hi, i am suposed to look for 

debug: bayes: Database connection established
debug: bayes: found bayes db version 3
debug: bayes: Using userid: 2

as response to  spamassassin -x -D -p /opt/MailScanner/etc/spam.assassin.prefs.conf --lint , but in stead i get

 Jan 17 13:56:55.129 [10360] dbg: timing: total 1152 ms - init: 770 (66.8%), parse: 0.81 (0.1%), extract_message_metadata: 1.36 (0.1%), get_uri_detail_list: 0.98 (0.1%), tests_pri_-1000: 7 (0.6%), compile_gen: 149 (12.9%), compile_eval: 16 (1.4%), tests_pri_-950: 5 (0.4%), tests_pri_-900: 5 (0.5%), tests_pri_-400: 5 (0.4%), tests_pri_0: 309 (26.8%), tests_pri_500: 45 (3.9%)

Jan 17 13:56:55.129 [10360] warn: lint: 2 issues detected, please rerun with debug enabled for more information

 

 Can any1 help me out?

From: at: 2011-01-18 13:40:28

Hi,

Please post your issue in the support forum and we'll gladly help you out.

Thanks,

Rocky

From: Anvar at: 2011-02-10 07:58:09

Maybe handy to add the location of the master.cf file; /etc/postfix

From: Anvar at: 2011-02-10 08:30:57

Best to install the clamav data;

 apt-get install clamav-data and afterwards /etc/init.d/clamav-daemon start

From: Alexander Meesters at: 2011-04-06 12:33:52

i think its better to use:

 sudo update-rc.d mailscanner defaults

 then creating it by hand...

From: lugi at: 2011-04-15 16:05:24

When i trying to lauch => install Crypt::OpenSSL::RSA i have this problem . Can you help me please.

I trying => Crypt::OpenSSL::Random  but it doesn't work also 

 

Checking if your kit is complete...
Looks good
Writing Makefile for Crypt::OpenSSL::Random
cp Random.pm blib/lib/Crypt/OpenSSL/Random.pm
AutoSplitting blib/lib/Crypt/OpenSSL/Random.pm (blib/lib/auto/Crypt/OpenSSL/Random)
/usr/bin/perl /usr/share/perl/5.10/ExtUtils/xsubpp  -typemap /usr/share/perl/5.10/ExtUtils/typemap  Random.xs > Random.xsc && mv Random.xsc Random.c
Please specify prototyping behavior for Random.xs (see perlxs manual)
cc -c   -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.04\" -DXS_VERSION=\"0.04\" -fPIC "-I/usr/lib/perl/5.10/CORE"   Random.c
Random.xs:5: fatal error: openssl/rand.h: No such file or directory
compilation terminated.
make: *** [Random.o] Error 1
  IROBERTS/Crypt-OpenSSL-Random-0.04.tar.gz
  /usr/bin/make -- NOT OK
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Running make for I/IR/IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz
  Has already been unwrapped into directory /root/.cpan/build/Crypt-OpenSSL-RSA-0.26-OaSkf7

  CPAN.pm: Going to build I/IR/IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz

Warning: Prerequisite 'Crypt::OpenSSL::Random => 0' for 'IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz' failed when processing 'IROBERTS/Crypt-OpenSSL-Random-0.04.tar.gz' with 'make => NO'. Continuing, but chances to succeed are limited.
CPAN: Time::HiRes loaded ok (v1.9719)
cp RSA.pm blib/lib/Crypt/OpenSSL/RSA.pm
AutoSplitting blib/lib/Crypt/OpenSSL/RSA.pm (blib/lib/auto/Crypt/OpenSSL/RSA)
/usr/bin/perl /usr/share/perl/5.10/ExtUtils/xsubpp  -typemap /usr/share/perl/5.10/ExtUtils/typemap -typemap typemap  RSA.xs > RSA.xsc && mv RSA.xsc RSA.c
cc -c   -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.26\" -DXS_VERSION=\"0.26\" -fPIC "-I/usr/lib/perl/5.10/CORE"  -DPERL5 -DOPENSSL_NO_KRB5 RSA.c
RSA.xs:5: fatal error: openssl/bio.h: No such file or directory
compilation terminated.
make: *** [RSA.o] Error 1
  IROBERTS/Crypt-OpenSSL-RSA-0.26.tar.gz
  /usr/bin/make -- NOT OK
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible

From: at: 2011-04-18 17:53:20

Try:

apt-get install libcrypt-openssl-random-perl libcrypt-openssl-rsa-perl

From: Tony Grenda at: 2011-05-12 19:44:07

I had to open Port 873/TCP on my firewall for the rsync protocol to work for the SaneSecurity signatures to download.

From: at: 2011-12-06 19:43:45

How can i customize spamassassin rules? baruwa is reporting valid mail marked as spam:

3.09  DOS_OE_TO_MX                  Delivered direct to MX with OE headers
0.00  DYN_RDNS_SHORT_HELO_HTML      Sent by dynamic rDNS, short HELO, and HTML
0.00  FSL_HELO_NON_FQDN_1
0.00  HELO_NO_DOMAIN                Relay reports its domain incorrectly
0.00  HTML_MESSAGE                  HTML included in message
3.56  RCVD_IN_PBL                   Received via a relay in Spamhaus PBL
1.28  RCVD_IN_RP_RNBL               Relay in RNBL, https://senderscore.org/blacklistlookup/
0.36  RDNS_DYNAMIC                  Delivered to internal network by host with dynamic-looking rDNS
Thanks

From: Eddo Jansen at: 2010-12-09 12:53:50

Even after your latest changes I get the Insecure dependency error.

save_execute: Insecure dependency in open while running with -T switch at /usr/share/perl5/FuzzyOcr/Misc.pm line 92.
save_execute: Insecure dependency in open while running with -T switch at /usr/share/perl5/FuzzyOcr/Misc.pm line 92.
Dec  9 13:49:16.320 [26635] dbg: FuzzyOcr: Elapsed [26653]: 0.041086 sec. (/usr/bin/giftext: exit 8)
Dec  9 13:49:16.320 [26635] warn: readline() on closed filehandle INFILE at /usr/share/perl5/FuzzyOcr/Misc.pm line 205.
Dec  9 13:49:16.321 [26635] info: FuzzyOcr: Image is single non-interlaced...
Dec  9 13:49:16.324 [26635] warn: rules: failed to run FUZZY_OCR test, skipping:
Dec  9 13:49:16.324 [26635] warn:  (Insecure dependency in printf while running with -T switch at /usr/share/perl5/FuzzyOcr.pm line 469.
Dec  9 13:49:16.324 [26635] warn: )
root@srvnld0005:/usr/src# Insecure dependency in printf while running with -T switch at /usr/share/perl5/FuzzyOcr.pm line 469.

apt-get install fuzzyocr 3 does not work for me... only if I do not configure the database...

Any thoughts on this?

From: at: 2010-12-10 22:13:37

For future problems, please post support questions in the forum.

 Please remove Fuzzy by doing:

apt-get install fuzzyocr netpbm gifsicle libungif-bin gocr ocrad libstring-approx-perl libmldbm-sync-perl libdigest-md5-perl libdbd-mysql-perl imagemagick tesseract-ocr fuzzyocr3

If anything is left, run apt-get autoremove to get rid of them.

Redo the complete FuzzyOcr section and you shouldn't have any problems.

From: at: 2010-12-04 20:34:29

Hmm, that is really strange, I must have uploaded the wrong baruwa to my storage.  I have a modified version for this install. 

 Link is good now.

From: Eddo Jansen at: 2010-12-03 12:34:31

Great guide but I came across some minor issue's...

Beside making the Spamassassin modifications after you install MailScanner, Baruwa installs a package maintained version of MailScanner as a missing dependency and places the essential .pm files in /etc/MailScanner/CustomFunctions...

You will have to move these files to the correct location:

mv /etc/MailScanner/CustomFunctions/Baruwa* /opt/MailScanner/lib/MailScanner/CustomFunctions/

Rename the old version of MailScanner to avoid problems:

mv /etc/MailScanner/ /etc/MailScanner_obsolete

Make sure you have not overwritten the /etc/init.d/mailscanner script by installing the Baruwa dependencies, otherwise make the appropriate changes to that file.

I thought I should share this with you, it might give people a headache (It gave me one  )

Cheers!

From: Sander de Rijk at: 2011-02-11 07:15:19

Great guide, I followed it and it indeed stops all my spam with no false positives :)

A few notes though: 

Baruwa recommends to install it on apache and most people already have apache running. It took me some extra work to get it running on apache but I suggest you include that in your guide or a link telling that you can actually also run it on apache.

The second one is SPF related. My DNS service also has a relayservice for email in case my mailserver is down. The current SPF setup will bounce mail because it doesnt understand that the relayservice should be trusted for the SPF module. I turned it off and still need to dig into it so that host is excluded from SPF checks.

 If you install all the cronjobs that you specified directly you will get ALOT of emails from the mailserver. I suggest to test them and then add &> /dev/null at the end of every line.

From: at: 2011-02-15 02:03:46

Thank you, really appreciate your suggestions.

Baruwa can be installed on any webserver than can run Django and nginx happens to be very fast and light.  Apache is supported out of the box with the distributed release but my custom package is strictly for nginx, which was chosen to make the system as slim as possible.

As for the SPF issue, this build has a global whitelist, which will bypass all checks once you have that ip/host in the whitelist.  Go ahead and whitelist your relayhost and that should bypass SPF checks.

From: John M at: 2011-04-06 18:40:26

The /usr/sbin/fuzzy-cleanmysql didn't work for my until I changed the following line while () { to while(<CONFIG>) { A nasty infinite loop occurs otherwise.

From: at: 2011-04-20 13:49:19

Thanks.

From: Tony Grenda at: 2011-05-12 18:49:28

I had to create a symlink to the /tmp/mysql.sock file since Ubuntu does not use this file (it is /var/run/mysqld/mysqld.sock). Use the next line to creat the symlink. sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock I could not get the FuzzyOcr check using spamassassin to work properly until I made the change.

From: at: 2011-06-10 08:08:56

Upgrade worked like a charm, thanks.

From: at: 2011-07-12 07:13:00

Great guide but shouldnt you have Baruwa installed AFTER Nginx? as you call for it to be restarted in step 8 but it isnt installed until step 9.

From: at: 2012-02-16 13:18:01

The confusion is caused by the upgrade section.  You have to completely finish the build first then go back and do the upgrade.

From: kup at: 2011-10-24 08:25:47

Hello. For the first, I would like to say - this is a great howto. My question ... do you have in your repositories the latest version of Baruwa frontend (1.1.1)? Many thanks.

From: at: 2012-02-16 13:18:38

Done, check the guide.