A big thanks to Bai Borko for providing the instructions from which I derived the following and for the perl script.
AWStats is a free powerful and featureful tool that generates advanced web, streaming, ftp or mail server statistics, graphically. This log analyzer works as a CGI or from command line and shows you all possible information your log contains, in few graphical web pages. It uses a partial information file to be able to process large log files, often and quickly. It can analyze log files from all major server tools like Apache log files (NCSA combined/XLF/ELF log format or common/CLF log format), WebStar, IIS (W3C log format) and a lot of other web, proxy, wap, streaming servers, mail servers and some ftp servers.
First of all, let's define some variables so that we can satisfy different systems and customizations.
# AWStats version AWSTATS_VERSION=7.9 # where we want to extract the AWStats package AWSTATS_PREFIX=/var/www/htdocs # configuration files dir AWSTATS_CONF_DIR=/etc/awstats # where to save the data DATA_DIR=/var/www/htdocs/stats # the mx domain in the title of the site DOMAIN=mx.domain.tld # Alias domain (for the regular expression, do not delete the slashes) HOST_ALIAS=domain\\.tld # apache user: apache or www-data or whatelse runs your web server APACHE_USR=apache # apache group APACHE_GRP=$APACHE_USR # the file which holds the apache password APACHE_PWD_FILE=/etc/httpd/httpdpwd/awstats.passwd
Download and extract:
cd /usr/local/src
wget https://prdownloads.sourceforge.net/awstats/awstats-${AWSTATS_VERSION}.tar.gz
tar -zxf awstats-${AWSTATS_VERSION}.tar.gz -C $AWSTATS_PREFIX
ln -s ${AWSTATS_PREFIX}/awstats-${AWSTATS_VERSION} ${AWSTATS_PREFIX}/awstats
Create the configuration file (modify at least the domain):
mkdir $AWSTATS_CONF_DIR
cat > ${AWSTATS_CONF_DIR}/awstats.mail.conf << __EOF__
LogFile="sudo ${AWSTATS_CONF_DIR}/qstatsaw.pl|"
LogType=M
LogFormat="%time2 %email %email_r %host %url %protocol %code %bytesd"
SiteDomain="${DOMAIN}"
HostAliases="localhost 127.0.0.1 REGEX[${HOST_ALIAS}]"
DirData="${DATA_DIR}"
DirCgi="/awstats"
DefaultFile="index.html"
LogoLink="/awstats.pl?config=mail"
Logo="awstats_logo6.png"
DirIcons="/awstatsicons"
DNSLookup=0
#AllowAccessFromWebToFollowingIPAddresses="192.168.0.2-192.168.0.240"
AllowToUpdateStatsFromBrowser=1
LevelForBrowsersDetection=0 # 0 disables Browsers detection.
LevelForOSDetection=0 # 0 disables OS detection.
LevelForRefererAnalyze=0 # 0 disables Origin detection.
LevelForRobotsDetection=0 # 0 disables Robots detection.
LevelForSearchEnginesDetection=0 # 0 disables Search engines detection.
LevelForKeywordsDetection=0 # 0 disables Keyphrases/Keywords detection.
LevelForFileTypesDetection=0 # 0 disables File types detection.
ShowMenu=1
ShowSummary=HBM
ShowMonthStats=HBM
ShowDaysOfMonthStats=HBM
ShowDaysOfWeekStats=HBM
ShowHoursStats=HBM
ShowDomainsStats=0
ShowHostsStats=HBL
ShowAuthenticatedUsers=0
ShowRobotsStats=0
ShowWormsStats=0
ShowEMailSenders=HBML
ShowEMailReceivers=HBML
ShowSessionsStats=0
ShowPagesStats=0
ShowFileTypesStats=0
ShowFileSizesStats=0
ShowOSStats=0
ShowBrowsersStats=0
ShowScreenSizeStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=1
ShowClusterStats=0
AddDataArrayMonthStats=1
AddDataArrayShowDaysOfMonthStats=1
AddDataArrayShowDaysOfWeekStats=1
AddDataArrayShowHoursStats=1
IncludeInternalLinksInOriginSection=0
SkipHosts=""
SkipUserAgents=""
SkipFiles=""
SkipReferrersBlackList=""
OnlyHosts=""
OnlyUserAgents=""
OnlyFiles=""
__EOF__
Download the script which is going to process the logs:
wget -O ${AWSTATS_CONF_DIR}/qstatsaw.pl https://notes.sagredo.eu/files/qmail/qstatsaw.pl
Add execute permissions
chmod 755 ${AWSTATS_CONF_DIR}/qstatsaw.pl
Add this line to the sudoers file
> visudo apache ALL=(ALL:ALL) NOPASSWD: /etc/awstats/qstatsaw.pl
Set the cron job for AWStats update
cat > /etc/cron.d/awstats << __EOF__
# Update AWStats
*/10 * * * * ${AWSTATS_PREFIX}/awstats/wwwroot/cgi-bin/awstats.pl -update -config=mail -output> ${DATA_DIR}/index.html > /dev/null 2>&1
__EOF__
Create the data dir and assign proper privileges
mkdir $DATA_DIR
# if set AllowToUpdateStatsFromBrowser=1, stats directory must be writable for apache user
chown -R ${APACHE_USR}:${APACHE_GRP} $DATA_DIR
Create the authorization file and assign read privileges to the web server user (you can use the same file of vQadmin here):
htpasswd -bc ${APACHE_PWD_FILE} admin [password]
chown ${APACHE_USR}:${APACHE_GRP} ${APACHE_PWD_FILE}
chmod o-r ${APACHE_PWD_FILE}
Manually run the AWStats script:
${AWSTATS_PREFIX}/awstats/wwwroot/cgi-bin/awstats.pl -update -config=mail -output> ${DATA_DIR}/index.html
Configure apache. This is my dedicated virtual host.
Define HTDOCS /var/www/htdocs
Define LOGDIR /var/www/error
Define AUTH_DIR /etc/httpd/httpdpwd
Define AWSTATS ${HTDOCS}/awstats
Define DATA_DIR ${HTDOCS}/stats
<VirtualHost *:80>
ServerName qstats.domain.tld
DocumentRoot ${AWSTATS}/wwwroot
ScriptAlias /cgi-bin/ ${AWSTATS}/cgi-bin/
AddHandler cgi-script .pl
Alias /awstatsclasses ${AWSTATS}/wwwroot/classes/
Alias /awstatscss ${AWSTATS}/wwwroot/css/
Alias /awstatsicons ${AWSTATS}/wwwroot/icon/
ScriptAlias / ${AWSTATS}/wwwroot/cgi-bin/
ErrorLog ${LOGDIR}/awstats_error.log
CustomLog ${LOGDIR}/awstats_access.log common
<DirectoryMatch ${AWSTATS}|${DATA_DIR}>
AllowOverride AuthConfig
AuthType Basic
AuthUserFile ${AUTH_DIR}/awstats.passwd
AuthName "Qstats"
Require ip 10.0.0.0/24
Require valid-user
</DirectoryMatch>
</VirtualHost>
Now browse to http://qstats.domain.tld/awstats.pl?config=mail and you're done.

