Solution for adding disclaimers with Zimbra

Workaround is not a solution

I've seen many workarounds to achieve functionality which should be out of the box in all mail servers, which isn't. Real solution should work tightly with MTA (Postfix, Sendmail), easy to install, configure and work almost without maintenance.
Many dirty solutions for disclaimers and signatures, like MIMEdefang, Alermime or Mailscanner, works perfectly fine and do the job. They're often based on scripts, which are fast and simple, but they've disadvantages. When there is a need to make something advanced the power ends.
We may thing that collaborative suites offer functionality in this field. Not quite. Zimbra have disclaimers, but only for single domain. If we want to add footer to multiple domains, we're on our own. HTML? Images? Personalized signatures with images and dynamic variables from LDAP? Forget about it. Built-in functionality is not even close to business needs.

Administrator it's not a programmer, it's not his task and he doesn't have time to implement everything. Writing bulletproof script isn't easy. For this job milter is needed. This piece of software it's a plug-in for Sendmail, Postfix and Zimbra. It can analyze headers and message body, accept or reject message, modify body and manipulate attachments.

MSH Disclaimer & Signatures it's a milter extension for common mail servers, like Postfix, Sendmail and Zimbra (use internally Postfix). It's a sophisticated application which works in background and does heavy email processing.
We'll add disclaimers in many ways: per user, per domain, in time range.
If we want personalized signatures and disclaimers for our users. Show them an example. Maybe they are not aware of this and we're still in dark ages of email disclaimers.
Pic. Built-in compose editor will help us to make simple and beautiful disclaimers.


I'll show how to install and configure application. Our goal is to make configuration which will append different disclaimers per domain. Go to download page and get proper files for our platform. Server module is mandatory to install, desktop module works on two platforms (Windows or Linux), so we can choose between them.

Install server module
Add execute permission and run with --auto parameter, it will use default values and will install in default directory /opt/msh-ds.
# chmod +x msh-ds-milter.bin
# ./msh-ds-milter.bin --auto
If we have customized environment see more about custom parameters. After installation MTA server will be reloaded and milter will automatically run.
Make sure that defaults TCP ports 1107, 1108 are not blocked but our firewall.
Install desktop module

If we choose Windows version then run setup.exe and click couple of times Next button. If we choose Linux version then add executable bit and run install script without parameters.
$ chmod +x msh-ds-admin.bin
$ ./msh-ds-admin.bin
Run and make some rules
Run Administrator Panel. On Windows desktop find a new position in menu start. On Linux desktop an application is installed in our home directory in msh-ds-admin directory. After installation we'll need to connect to server where we installed milter extension.
Create new rule in Disclaimer Rules node. The task is easy, we want to add company disclaimer at the bottom of each message, but different disclaimer per domain. Of course we don't want to duplicate disclaimers if recipients reply several times to the same message.
Pic. Message Sender condition. This condition matches messages that
are sent by senders within the specified scope.
1. Create disclaimer for both e-mail message formats: HTML and Plain Text.
2. Define which messages should have footer. Choose from menu Message Sender condition. Put here * value.
3. Probably some messages need to be skipped (cron jobs, mailing lists, etc.), use Exceptions to define exclusions. To skip adding another disclaimer choose Message Keyword Searching exception and put some text which you have in disclaimer template.
4. Rules execution path. Do we need to process another rules? Yes. Set proper options when disclaimer is added or not.
5. On the last step define rule name.
Now we're almost done. Create second rule and do exactly like previous, but set * in Message Sender condition and make different template.
Test it and have fun
Save the changes and we're ready to test our settings. Jump to our mail client and send test message to someone (it can be to ourself).

Use database-tools for backup data

Every common database has some tools to backup your data.
e.g.: PostgreSQL --> pg_dump, MySQL --> mysqldump

Look at the documentation of the backup tool from your database and use it for the entire schema/database of you application.
This approach is more general and much more reliable than application built-in backup functions/plugins.

If you application depends on files on your filesystem too, than you have to save them too (recommendation: rsync)

Login to Oracle WebLogic and follow the steps

To resolve this problem:

1. Login to Oracle WebLogic Server Console as the Oracle WebLogic Server administrative user.

2. From Domain Structure portlet, navigate to Services > Data Sources and select EPMSystemRegistry Datasource from the available list of data sources.

3. Click on the Connection Pool tab and confirm that the correct information is available for URL property.

4. Click on the Targets tab and confirm that the data source is targeted to all of the required Oracle WebLogic Servers and clusters running in the Financials domain.

5. Click on the Monitoring tab and confirm that the data source for all of the targeted Oracle WebLogic Servers and clusters is in Running state. Optionally, try clicking Test Data Source button to test the data source for a given server.

6. If, in Step 5, the data source was not in the Running state, click the Control tab and attempt to start the data source using the Start button.

If any errors were encountered during Step 5 or 6, consider restarting the Oracle WebLogic Server domain.


Configuration solution for nginx on ubuntu

First, we need to select the Ubuntu as the image on our server.
After installing Ubuntu, we need to configure DNS on out domain. In case our domain is, we need to point it's DNS settings to Digitalocean's server. At our domain registrar, we point our domain to:

    • After configuring the DNS, we need to connect to our server with SSH command in terminal
    • ssh -p definedport
    • After we are asked for the password, we will access our remote server.
      When connected to the remote server, first thing we need to do is aces superuser privilege and instal nginx. We do it with the following command:

    • sudo apt-get install nginx
    • After this step, nginx will be installed but not running. In order to start the nginx service, we type into the terminal

    • sudo service nginx start
    • Our nginx is now up and running. Now we need to create a virtual host and a folder which will contain our file. We do it wit the command

    • sudo mkdir -p /var/www/
    • We need to change the permissions, so that everyone can read our files, but only root use can modify them. We do it with chmod command:

    • sudo chmod 755 /var/www
    • Nginx by default looks for the index.html file which we need to create, and put some content in it:

    • sudo nano /var/www/
    • Now we need to create our virtual host file in nginx's site-available folder

    • sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/
    • sudo nano /etc/nginx/sites-available/
    • Now we have our configuration opened in a tex editor, with some default values. Our new server requires the following configuration:

      server {
      listen 80; ## this is default HTTP port

      root /var/www/;
      index index.html index.htm index.php; ##this is the list of files nginx will search for

      # Make site accessible from http://localhost/

      Now we save it and exit. We need to draw a parallel from available to enabled sites, so we do it with

    • sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/
    • In the final step, we need to restart our nginx server to apply changes. We do it with

    • sudo service nginx restart
    • .
      At this point, our site should be up and running.
      From what is seen here, configuring nginx is even easier in the beginning than configuring Apache.
      For sites with a lot of workload and if we pay attention to our resources, it is a much better choice than Apache.


Configuring nginx server on unix systems hosted on Digitalocean

<strong>Digitalocean</strong> offers several virtual machines we can use. Most popular and user-friendly one is Ubuntu, and is especially preferred by developers who are used to work with it. On another hand, it is important to note that <strong>nginx</strong> can achieve its best performance only on unix-based systems, due to memory optimization and kernel architecture. Our challenge is to solve the configuration of a nginx server on Digitalocean, while noting the diferences between Apache and nginx configuration.

creating key pair with puttygen and creating connection to server using the private key

first you need to download putty.exe and puttygen.exe
you can download both files from here:

-start puttygen.exe and click generate
-move your mouse randomly until your key files are generated
-save your private key somewhere on your harddrive clicking "save private key"
-save your public key somewhere on your harddrive clicking "save public key"
-close puttygen and start putty.exe
-enter the ip address of the server
-choose connection type "ssh"
-go to connection -> ssh -> auth
-select your private key in the appropriate input file
-go back to session
-choose a name for this connection and type it into the input field below "saved sessions"
-click "save" to save the connection and its settings

if you now want to connect to server you have to select your connection and click "load" to load the settings.
then you can start the connection by clicking "open"


connecting to server via putty with privatekey

I want to connect to a server via putty with a privatekey! how can I generate a privatekey? how can I create a connection using the private key?

Limiting SVN access on Ubuntu Server

Normally there are multiple projects on a SVN server, which shall not be accessible by all users who have access to the server. The goal is now to define on a per-project-basis the users who are granted access.

MSSQL Server Aggregate function over column defined as varchar

The goal is to calculate the aggregate functions (sum, avg) over a column which is defined as varchar

Producing a screendump of a website on a Linux server

I'm in a situation where I need to produce a screenshot of a website as part of an automated process on a web server. While this is not a big deal on a desktop, making a screendump on a machine that has, in fact, no screen at all proves a bit more challenging. The solution should obviously be command line based. I also do not want rely on any third party website (of which there are a ton out there) to produce the screenshots. The preferred form of output would be an image of any of the common formats (jpg, png, gif).


Subscribe to server