August 26

Deny any email from web scripts or users via localhost. Only root can send it

A lot of the issue and issues with the spam can happen if the user can send the emails without authorization. In order to prevent the issue, we can block them:

In the end of acl_check_not_smtp, before accept section need to add the following code:
#############################
accept condition = ${if eq{$originator_uid}{0}}
drop message = Local users can't send mail
#############################

It will prevent all emails except the emails from the root.

The second way, you can limit it, via the following lines:
#############################
deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
ratelimit = 10 / 1h / strict
#############################

It means that only 10 emails can be sent via users or web scripts without authorization in 1 hour.

But only 1 way can be used, it is not possible to mix it.

August 26

Setup SSL for Exim and Dovecot

1. need to locate where the SSL for Exim should to be:
grep "tls_certificate\|tls_privatekey" /etc/exim/exim.conf
tls_certificate = /etc/exim/ssl/exim.crt
tls_privatekey = /etc/exim/ssl/exim.key

2. now we can update the SSL with valid certificate for our hostname:
file /etc/exim/ssl/exim.key should store private key for your domain
file /etc/exim/ssl/exim.crt should store certificate + ca-bundle for your domain

3.Now time to update Dovecot with the following lines or replace them:
ssl_cert =

August 13

Joomla 1 and Joomla 1.5 Cyrillic issue fix:

In the file /libraries/joomla/database/database.php
Need to find the string $this->_table_prefix = $table_prefix; and put the following code after it:

@mysql_query("SET NAMES 'cp1251'", $this->_resource);
@mysql_query( "set session character_set_server=cp1251", $this->_resource );
@mysql_query( "set session character_set_database=cp1251", $this->_resource );
@mysql_query( "set session character_set_connection=cp1251", $this->_resource );
@mysql_query( "set session character_set_results=cp1251", $this->_resource );
@mysql_query( "set session character_set_client=cp1251", $this->_resource );

or, in the case with UTF-8:

@mysql_query("SET NAMES 'utf8'", $this->_resource);
@mysql_query( "set session character_set_server=utf8", $this->_resource );
@mysql_query( "set session character_set_database=utf8", $this->_resource );
@mysql_query( "set session character_set_connection=utf8", $this->_resource );
@mysql_query( "set session character_set_results=utf8", $this->_resource );
@mysql_query( "set session character_set_client=utf8", $this->_resource );