Domain Disclaimer Extension Admin UI: Difference between revisions

(→‎Zimbra Postfix Configuration: User is zimbra now, used to be user filter in original instructions)
No edit summary
 
(24 intermediate revisions by 9 users not shown)
Line 1: Line 1:
We are doing this project for integrate a system/wide domain signature (disclaimer) in Zimbra.
{{Archive}}{{Unsupported}}
 
'''The community-provided "Domain Disclaimer Extension" is not compatible with ZCS 6.0. Do not upgrade to 6.0 if you run the domain disclaimer extension. See http://bugzilla.zimbra.com/show_bug.cgi?id=37698.''' 
 
 
This project integrate a system/wide domain signature (disclaimer) in Zimbra.<br>
It covers the entire process, from install altermime, modify your postfix configuration, extending your Zimbra LDAP schemas, create disclaimers scripts related and, finally, an Admin Extension for Admin UI to enable and set domain disclaimers.
It covers the entire process, from install altermime, modify your postfix configuration, extending your Zimbra LDAP schemas, create disclaimers scripts related and, finally, an Admin Extension for Admin UI to enable and set domain disclaimers.
<br>
I wrote a small tutorial for add a domain disclaimer using altermime. First of all, i recommend to read my Zimbra wiki about domain disclaimers and altermime:


I did write a small tutorial for add a domain disclaimer using altermime. First of all, i recommend to read my Zimbra wiki about domain disclaimers and altermime:
[[Adding_a_disclaimer_%28altermime%29_or_footer]]
 
http://wiki.zimbra.com/index.php?title=Adding_a_disclaimer_%28altermime%29_or_footer


Now, we are going to integrate this domain signature to the Zimbra Admin interface.
Now, we are going to integrate this domain signature to the Zimbra Admin interface.


''' ''Note: this project have been tested on Zimbra NE 5.0 R2 on Red Hat/CentOS 5.x.'' '''<br>
''' ''Note: this project have been tested for Zimbra OS and NE 5.0.2 on Red Hat/CentOS 5.x. 32 bits'' '''<br>
''' Note 2: In every Zimbra version you must check zimbra.schema file, becouse they change it in other versions.'''<br>
<br>
''We are working on this project, this howto is under construction...(check the "last modified date" at the end of this page, always...)''
''We are working on this project, this howto is under construction...(check the "last modified date" at the end of this page, always...)''
= Automatic Script Installation =
Download from Zimbra Gallery http://gallery.zimbra.com/files/uploads/aff2791/zimbra_altermime_0.0.4.zip the automatic install script  (actual version: 0.0.4)<br>
''(Thanks Pato for the altermime RPM!!!)''
<br>
'''Note: this automatic instalation script is only for Red Hat or CentOS 4.x or 5.x 32 bits and Zimbra 5.0.2 only'''
<br><br>
Unzip
  unzip zimbra_altermime_install_0.0.4.zip
  cd zimbra_altermime_install_0.0.4
Execute
  ./install.sh
<br><br>
Output example:
  [root@mail zimbra_altermime_0.0.4]# ./install.sh
  OK
  #####################
  # ALTERMIME INSTALL #
  #####################
  1) Installing Altermime RPM
 
  What is your Red Hat/CentOS version? 4 or 5? [5]
  Preparing...                ########################################### [100%]
          package alterMIME-0.3.8-1_rh5 is already installed
  2) Creating a filter directory...
  3) Creating disclaimers directory...
  #########################
  # POSTFIX CONFIGURATION #
  #########################
  4) Backup master.cf file...
  5) Modifying master.cf configuration
 
  What is your email INCOMMING IP? [192.168.0.62]
 
  What is your email OUTGOING IP? [192.168.0.62]
  6) Restarting Zimbra Postfix
  postfix/postfix-script: stopping the Postfix mail system
  Thu Feb 21 15:25:51 2008  Service archiving is not enabled.  Skipping archiving
  Thu Feb 21 15:25:51 2008  Service imapproxy is not enabled.  Skipping imapproxy
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/conf/salocal.cf
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/conf/clamd.conf
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/cyrus-sasl-2.1.22.3z/etc/saslauthd.conf
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/conf/postfix_header_checks
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/conf/freshclam.conf
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e sender_canonical_maps='ldap:/opt/zimbra/conf/ldap-scm.cf'
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_alias_domains='ldap:/opt/zimbra/conf/ldap-vad.cf'
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e recipient_delimiter=''
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_cert_file='/opt/zimbra/conf/smtpd.crt'
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_auth_only='yes'
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e myhostname='mail.test.cl'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_mailbox_domains='ldap:/opt/zimbra/conf/ldap-vmd.cf'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e mydestination='localhost'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e mailbox_size_limit='0'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_client_restrictions='reject_unauth_pipelining'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_alias_maps='ldap:/opt/zimbra/conf/ldap-vam.cf'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e transport_maps='ldap:/opt/zimbra/conf/ldap-transport.cf'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e sendmail_path='/opt/zimbra/postfix-2.4.3.4z/sbin/sendmail'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e message_size_limit='10240000'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e broken_sasl_auth_clients='yes'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e alias_maps='hash:/etc/aliases'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e manpage_directory='/opt/zimbra/postfix-2.4.3.4z/man'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_helo_required='yes'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e daemon_directory='/opt/zimbra/postfix-2.4.3.4z/libexec'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_transport='error'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e mynetworks='127.0.0.0/8 192.168.0.0/24 '
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_recipient_restrictions='reject_non_fqdn_recipient, permit_sasl_authenticated,      permit_mynetworks, reject_unauth_destination, reject_unlisted_recipient, reject_invalid_hostname, reject_non_fqdn_sender, permit'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_loglevel='1'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e relayhost=''
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e disable_dns_lookups='no'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_mailbox_maps='ldap:/opt/zimbra/conf/ldap-vmm.cf'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e version='2.4.3.4z'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e mailq_path='/opt/zimbra/postfix-2.4.3.4z/sbin/mailq'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e header_checks='pcre:/opt/zimbra/conf/postfix_header_checks'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_use_tls='yes'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e queue_directory='/opt/zimbra/postfix-2.4.3.4z/spool'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e newaliases_path='/opt/zimbra/postfix-2.4.3.4z/sbin/newaliases'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_data_restrictions='reject_unauth_pipelining'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_reject_unlisted_recipient='no'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_key_file='/opt/zimbra/conf/smtpd.key'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e command_directory='/opt/zimbra/postfix-2.4.3.4z/sbin'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_sasl_auth_enable='yes'
  postfix/postfix-script: warning: not owned by root: /opt/zimbra/postfix-2.4.3.4z/conf/disclaimers
  postfix/postfix-script: warning: not owned by root: /opt/zimbra/postfix-2.4.3.4z/conf/main.cf
  postfix/postfix-script: starting the Postfix mail system
  #########################
  # EXTENDING LDAP SCHEMA #
  #########################
  7) Changing zimbra.schema
  8) Restarting LDAP service
  Killing slapd with pid 7336 done.
  Started slapd: pid 18151
  #####################
  # DISCLAIMER SCRIPT #
  #####################
  9) Creating disclaimer script
  ###############################
  # SCRIPT FOR CHECK SIGNATURES #
  ###############################
  10) Installing perl RPMS
  warning: rpms5/perl-Convert-ASN1-0.21-2.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-HTML-Tagset-3.10-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-HTML-Parser-3.56-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-XML-NamespaceSupport-1.09-1.2.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-XML-SAX-0.16-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-Net-SSLeay-1.32-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-IO-Socket-SSL-1.12-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-LDAP-0.34-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
 
  11) Creating /opt/zimbra/postfix/conf/check_disclaimers.sh
 
  Insert your ldap host [mail.test.cl]
 
  Insert your ldap root password [xG3GnYzD3F]
  12) Creating read_from_ldap.pl script
  13) Setting permissions
  14) Creating /etc/cron.hourly/check_disclaimer script
  ##################################
  # DEPLOYING DISCLAIMER EXTENSION #
  ##################################
  15) Deploying Domain Disclaimer Extension for Admin UI
  [] INFO: Deploying on mail.test.cl
  [] INFO: Deploy initiated.  (check the servers mailbox.log for the status)
  ###########
  # DONE!!! #
  ###########
 
  16) Set an signature for your domains (as zimbra user). For example:
          zmprov md mydomain.com zimbraDomainPrefMailSignatureEnabled TRUE
          zmprov md mydomain.com zimbraDomainPrefMailSignature "This is a domain disclaimer for mydomain.com"
          zmprov md mydomain.com zimbraDomainPrefMailSignatureHTML "This is a domain disclaimer for <b>mydomain.com</b>"
 
  17) Check your domain signature:
          zmprov gd mydomain.com | grep Signature
 
  18) Create domain signatures files:
          /opt/zimbra/postfix/conf/check_disclaimers.sh
 
  19) Logon in Admin interface and check for your Domain Extension...
 
  [root@mail zimbra_altermime_0.0.4]# su - zimbra
  [zimbra@mail ~]$ zmprov md test.cl zimbraDomainPrefMailSignatureEnabled TRUE
 
  [zimbra@mail ~]$ zmprov md test.cl zimbraDomainPrefMailSignature "This is a domain disclaimer for test.cl"
 
  [zimbra@mail ~]$ zmprov md test.cl zimbraDomainPrefMailSignatureHTML "This is a domain disclaimer for <b>test.cl</b>"
 
  [zimbra@mail ~]$ zmprov gd test.cl | grep Signature
  zimbraDomainPrefMailSignature: This is a domain disclaimer for test.cl
  zimbraDomainPrefMailSignatureEnabled: TRUE
  zimbraDomainPrefMailSignatureHTML: This is a domain disclaimer for <b>test.cl</b>
 
  [zimbra@mail ~]$ /opt/zimbra/postfix/conf/check_disclaimers.sh
  Domain: test.cl        TRUE
 
  [zimbra@mail ~]$ ls /opt/zimbra/postfix/conf/disclaimers/
  test.cl  test.cl.html
 
<br><br>
----


= Manual Install =
= Manual Install =
Line 137: Line 312:
* 13) Create /opt/zimbra/postfix/conf/disclaimer file.
* 13) Create /opt/zimbra/postfix/conf/disclaimer file.


This is the last version (0.0.2) of /opt/zimbra/postfix/conf/disclaimer script:  
This is the last version of /opt/zimbra/postfix/conf/disclaimer script:  


   #!/bin/sh
   #!/bin/sh
Line 164: Line 339:
   enable=`/opt/zimbra/bin/zmprov gd $domain | grep zimbraDomainPrefMailSignatureEnabled | awk '{print $2}'`
   enable=`/opt/zimbra/bin/zmprov gd $domain | grep zimbraDomainPrefMailSignatureEnabled | awk '{print $2}'`
    
    
if [ -f "$DISCLAIMER_HOME/$domain" ]; then
   if [ ! -z $enable ]; then                    # if not empty
   if [ ! -z $enable ]; then                    # if not empty
         if [ $enable == "TRUE" ]; then          # if value = TRUE
         if [ "$enable" = "TRUE" ]; then          # if value = TRUE
           echo "TRUE"
           echo "TRUE"
           # Add a disclaimer to the mail
           # Add a disclaimer to the mail
Line 177: Line 353:
         echo "NONE"                            # domain doesn't have LDAP attributes
         echo "NONE"                            # domain doesn't have LDAP attributes
   fi
   fi
else
  echo "NONE"
fi
     
        
        
   $SENDMAIL -i "$@" < in.$$
   $SENDMAIL -i "$@" < in.$$
Line 235: Line 415:
    
    
       if [ ! -z $enable ]; then                    # if not empty
       if [ ! -z $enable ]; then                    # if not empty
           if [ $enable == "TRUE" ]; then          # if value = TRUE
           if [ "$enable" = "TRUE" ]; then          # if value = TRUE
                   echo "TRUE"
                   echo "TRUE"
                   # save the domain signature value into a text file
                   # save the domain signature value into a text file
Line 275: Line 455:
   # Variables
   # Variables
   my @domain = split(/\./,$ARGV[0]);
   my @domain = split(/\./,$ARGV[0]);
  my $base = "dc=" . join(',dc=', @domain);
   my ($sub,$top) = @domain;
   my ($sub,$top) = @domain;
   my $tmpfile = $ARGV[1];
   my $tmpfile = $ARGV[1];
 
 
   if (!$ARGV[1] || !$ARGV[0]){
   if (!$ARGV[1] || !$ARGV[0]){
       print "\n\tUse: read_from_ldap.pl domain file\n\n";
       print "\n\tUse: read_from_ldap.pl domain file\n\n";
       exit();
       exit();
   }
   }
 
 
   my $ldap = Net::LDAP->new("$server");
   my $ldap = Net::LDAP->new("$server");
   my $mesg = $ldap->bind("$user", password => "$pass");
   my $mesg = $ldap->bind("$user", password => "$pass");
 
    
    
   $mesg = $ldap->search (
   $mesg = $ldap->search (
           base => "dc=$sub,dc=$top",
           base => $base,
           filter => "(&(objectClass=zimbraDomain) (dc=$sub))",
           filter => "(&(objectClass=zimbraDomain) (dc=$sub))",
           attrs => ['zimbraDomainPrefMailSignature']
           attrs => ['zimbraDomainPrefMailSignature']
Line 298: Line 480:
               print TMPFILE "---------------------------------------------------\n";
               print TMPFILE "---------------------------------------------------\n";
               print TMPFILE "$result[0][0]{'vals'}[0]\n";
               print TMPFILE "$result[0][0]{'vals'}[0]\n";
          }
          }
           else {
           else {
               print "No signature\n"
               print "No signature\n"
           }
           }
   };
   };
 
 
   $mesg = $ldap->search (
   $mesg = $ldap->search (
           base => "dc=$sub,dc=$top",
           base => "$base",
           filter => "(&(objectClass=zimbraDomain) (dc=$sub))",
           filter => "(&(objectClass=zimbraDomain) (dc=$sub))",
          attrs => ['zimbraDomainPrefMailSignatureHTML']
          attrs => ['zimbraDomainPrefMailSignatureHTML']
      );
      );
    
    
 
   foreach ($mesg->entries) {
   foreach ($mesg->entries) {
           my @result= $_->{'asn'}->{'attributes'};
           my @result= $_->{'asn'}->{'attributes'};
           if($result[0][0]{'vals'}[0]){
           if($result[0][0]{'vals'}[0]){
               open (TMPFILE2,">$tmpfile.html");
               open (TMPFILE2,">$tmpfile.html");
               print TMPFILE2 "---------------------------------------------------<br>\n";
               print TMPFILE2 "---------------------------------------------------\n";
               print TMPFILE2 "$result[0][0]{'vals'}[0]\n";
               print TMPFILE2 "$result[0][0]{'vals'}[0]\n";
           }
           }
           else {
           else {
               print "No HTML signature\n":
               print "No HTML signature\n";
               system ("cp -f $tmpfile $tmpfile.html");
               system ("cp -f $tmpfile $tmpfile.html");
           }
           }
Line 324: Line 507:
    
    
   $mesg = $ldap->unbind;
   $mesg = $ldap->unbind;




Line 338: Line 522:
Add excecution permissions:
Add excecution permissions:
   chmod 755 /etc/cron.hourly/check_disclaimer
   chmod 755 /etc/cron.hourly/check_disclaimer
* 20) Replace (patch) your js files for Admin UI
This is a Greg patch for handling new attributes into Admin UI. ''See: http://bugzilla.zimbra.com/show_bug.cgi?id=22108''
<br><br>
Download js.tgz from http://wiki.zimbra.com/images/4/46/Jetty_Js.zip, and rename it to js.tgz.
  tar zcvf /opt/zimbra/jetty/webapps/zimbraAdmin/js.tgz /opt/zimbra/jetty/webapps/zimbraAdmin/js
  rm -rf /opt/zimbra/jetty/webapps/zimbraAdmin/js
  tar zxvf js.tgz -C /opt/zimbra/jetty/webapps/zimbraAdmin/
  chown -R zimbra.zimbra /opt/zimbra/jetty/webapps/zimbraAdmin/js
Restart jetty (as zimbra user):
  jetty stop
  jetty start


==  Admin Extension for Zimbra UI ==
==  Admin Extension for Zimbra UI ==
Line 359: Line 528:
With this extension you can enable and set the Domain Disclaimers. (Thanks Greg!!!)
With this extension you can enable and set the Domain Disclaimers. (Thanks Greg!!!)


Download http://wiki.zimbra.com/images/8/81/Disclaimer.zip disclaimer.zip file, and Deploy it into Zimbra Admin Extension.
Download Zimbra Gallery http://gallery.zimbra.com/files/uploads/aff2791/disclaimer.zip file (this file seems to have moved there: http://gallery.zimbra.com/type/zimlet/domain-signature-disclaimer), and Deploy it into Zimbra Admin Extensions.
<br>
''Note: Rename Disclaimer.zip to disclaimer.zip''
 
Also if you have additional extensions installed that are already creating tabs, you may need to modify the extension. Unzip it, open the .js file and change the tab # from 6 to 7 or whatever is required.
<br><br>
<br><br>
This a view of Domain Disclaimer Admin Extension:
This a view of Domain Disclaimer Admin Extension:
Line 366: Line 539:


<br><br><br>
<br><br><br>
----
<br><br><br><br>
= Automatic Script Installation =
Download from http://wiki.zimbra.com/images/2/26/Zimbra_altermime_0.0.2.zip the automatic install script  (actual version: 0.0.2)<br>
''(Thanks Pato for the altermime RPM!!!)''
<br>
'''Note: this automatic instalation script is only for Red Hat or CentOS 4.x or 5.x and Zimbra 5.x'''
<br><br>
Unzip
  unzip zimbra_altermime_install_0.0.2.zip
  cd zimbra_altermime_install_0.0.2
Execute
  ./install.sh


<br><br>
Output example:
  [root@mail zimbra_altermime_0.0.3]# ./install.sh
  OK
  #####################
  # ALTERMIME INSTALL #
  #####################
  1,2,3) Installing Altermime RPM
 
  What is your Red Hat/CentOS version? 4 or 5? [5]
  Preparing...                ########################################### [100%]
      1:alterMIME              ########################################### [100%]
  4) Creating a filter directory...
  5) Creating disclaimers directory...
  #########################
  # POSTFIX CONFIGURATION #
  #########################
  6) Backup master.cf file...
  7) Modifying master.cf configuration
 
  What is your email INCOMMING IP? [192.168.0.63]
 
  What is your email OUTGOING IP? [192.168.0.63]
  8) Restarting Zimbra Postfix
  postfix/postfix-script: stopping the Postfix mail system
  Mon Dec  3 07:05:35 2007  Service archiving is not enabled.  Skipping archiving
  Mon Dec  3 07:05:35 2007  Service imapproxy is not enabled.  Skipping imapproxy
  Mon Dec  3 07:05:35 2007  Rewrote: /opt/zimbra/cyrus-sasl-2.1.22.3/etc/saslauthd.conf
  Mon Dec  3 07:05:35 2007  Rewrote: /opt/zimbra/conf/salocal.cf
  Mon Dec  3 07:05:35 2007  Rewrote: /opt/zimbra/conf/clamd.conf
  Mon Dec  3 07:05:35 2007  Rewrote: /opt/zimbra/conf/postfix_header_checks
  Mon Dec  3 07:05:35 2007  Rewrote: /opt/zimbra/conf/freshclam.conf
  Mon Dec  3 07:05:35 2007  Executing /opt/zimbra/postfix/sbin/postconf -e sender_canonical_maps='ldap:/opt/zimbra/conf/ldap-scm.cf'
  Mon Dec  3 07:05:35 2007  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_alias_domains='ldap:/opt/zimbra/conf/ldap-vad.cf'
  Mon Dec  3 07:05:35 2007  Executing /opt/zimbra/postfix/sbin/postconf -e recipient_delimiter=''
  Mon Dec  3 07:05:35 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_cert_file='/opt/zimbra/conf/smtpd.crt'
  Mon Dec  3 07:05:35 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_auth_only='yes'
  Mon Dec  3 07:05:35 2007  Executing /opt/zimbra/postfix/sbin/postconf -e myhostname='mail.itlinux.cl'
  Mon Dec  3 07:05:35 2007  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_mailbox_domains='ldap:/opt/zimbra/conf/ldap-vmd.cf'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e mydestination='localhost'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e mailbox_size_limit='0'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_client_restrictions='reject_unauth_pipelining'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_alias_maps='ldap:/opt/zimbra/conf/ldap-vam.cf'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e transport_maps='ldap:/opt/zimbra/conf/ldap-transport.cf'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e sendmail_path='/opt/zimbra/postfix-2.4.3.3/sbin/sendmail'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e message_size_limit='10240000'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e broken_sasl_auth_clients='yes'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e alias_maps='hash:/etc/aliases'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e manpage_directory='/opt/zimbra/postfix-2.4.3.3/man'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_helo_required='yes'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e daemon_directory='/opt/zimbra/postfix-2.4.3.3/libexec'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_transport='error'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e mynetworks='127.0.0.0/8 192.168.0.0/24 '
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_recipient_restrictions='reject_non_fqdn_recipient, permit_sasl_authenticated,          permit_mynetworks, reject_unauth_destination, reject_unlisted_recipient, reject_invalid_hostname, reject_non_fqdn_sender, permit'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_loglevel='1'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e relayhost=''
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e disable_dns_lookups='no'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_mailbox_maps='ldap:/opt/zimbra/conf/ldap-vmm.cf'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e version='2.4.3.3'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e mailq_path='/opt/zimbra/postfix-2.4.3.3/sbin/mailq'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e header_checks='pcre:/opt/zimbra/conf/postfix_header_checks'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_use_tls='yes'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e queue_directory='/opt/zimbra/postfix-2.4.3.3/spool'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e newaliases_path='/opt/zimbra/postfix-2.4.3.3/sbin/newaliases'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_data_restrictions='reject_unauth_pipelining'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_reject_unlisted_recipient='no'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_key_file='/opt/zimbra/conf/smtpd.key'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e command_directory='/opt/zimbra/postfix-2.4.3.3/sbin'
  Mon Dec  3 07:05:36 2007  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_sasl_auth_enable='yes'
  postfix/postfix-script: warning: not owned by root: /opt/zimbra/postfix-2.4.3.3/conf/disclaimers
  postfix/postfix-script: warning: not owned by root: /opt/zimbra/postfix-2.4.3.3/conf/main.cf
  postfix/postfix-script: starting the Postfix mail system
  #########################
  # EXTENDING LDAP SCHEMA #
  #########################
  9) Changing zimbra.schema
 
  What is your Zimbra Version? [5]
  10) Restarting LDAP service
  Killing slapd with pid 2149 done.
  Started slapd: pid 15490
  #####################
  # DISCLAIMER SCRIPT #
  #####################
  13) Creating disclaimer script
  14) Setting permissions
  ###############################
  # SCRIPT FOR CHECK SIGNATURES #
  ###############################
  15) Installing perl RPMS
  warning: rpms5/perl-Convert-ASN1-0.21-2.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  Preparing packages for installation...
  perl-Convert-ASN1-0.21-2.el5.rf
  warning: rpms5/perl-HTML-Tagset-3.10-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  Preparing packages for installation...
  perl-HTML-Tagset-3.10-1.el5.rf
  warning: rpms5/perl-HTML-Parser-3.56-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  Preparing packages for installation...
  perl-HTML-Parser-3.56-1.el5.rf
  warning: rpms5/perl-XML-NamespaceSupport-1.09-1.2.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  Preparing packages for installation...
  perl-XML-NamespaceSupport-1.09-1.2.el5.rf
  warning: rpms5/perl-XML-SAX-0.16-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  Preparing packages for installation...
  perl-XML-SAX-0.16-1.el5.rf
  warning: rpms5/perl-Net-SSLeay-1.32-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  Preparing packages for installation...
  perl-Net-SSLeay-1.32-1.el5.rf
  warning: rpms5/perl-IO-Socket-SSL-1.12-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  Preparing packages for installation...
  perl-IO-Socket-SSL-1.12-1.el5.rf
  Preparing packages for installation...
  perl-Compress-Zlib-1.42-1.fc6
  Preparing packages for installation...
  perl-URI-1.35-3
  Preparing packages for installation...
  perl-libwww-perl-5.805-1.1.1
  warning: rpms5/perl-LDAP-0.34-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  Preparing packages for installation...
  perl-LDAP-0.34-1.el5.rf
  16) Creating /opt/zimbra/postfix/conf/check_disclaimers.sh
 
  Insert your ldap host [mail.itlinux.cl]
 
  Insert your ldap root password [xxxxxx]
  17) Creating read_from_ldap.pl script
  18) Setting permissions
  19) Creating /etc/cron.hourly/check_disclaimer script
  #####################
  # Patching js files #
  #####################
  20) Patching js files into Admin UI
  tar: Removing leading `/' from member names
  ##################################
  # DEPLOYING DISCLAIMER EXTENSION #
  ##################################
  21) Deploying Domain Disclaimer Extension for Admin UI
  [] INFO: Deploying on mail.itlinux.cl
  [] INFO: Deploy successful
  ###########
  # DONE!!! #
  ###########
 
  11) Set an signature for your domains (as zimbra user). For example:
          zmprov md mydomain.com zimbraDomainPrefMailSignatureEnabled TRUE
          zmprov md mydomain.com zimbraDomainPrefMailSignature "This is a domain disclaimer for mydomain.com"
          zmprov md mydomain.com zimbraDomainPrefMailSignatureHTML "This is a domain disclaimer for <b>mydomain.com</b>"
 
  12) Check your domain signature:
          zmprov gd mydomain.com | grep Signature
 
  21) Logon in Admin interface and check for four Domain Extension...
 
<br><br>
----
----
<br><br><br><br>
<br><br><br><br>
Line 563: Line 566:


* Check if /opt/zimbra/postfix/conf/disclaimers/domain.com exists
* Check if /opt/zimbra/postfix/conf/disclaimers/domain.com exists
== LDAP Broken ==
* Check your /opt/zimbra/openldap/etc/openldap/schema/zimbra.schema
There is a backup...


= To Do =
= To Do =
Line 572: Line 581:
Daniel Eugenin M.<br>
Daniel Eugenin M.<br>
IT Linux
IT Linux
= References =
[http://bugzilla.zimbra.com/show_bug.cgi?id=37698 Bug 37698] - Domain Disclaimer Extension non-portable
{{Article_Footer|Zimbra NE 5.0.2 on Red Hat/CentOS 5.x|11/29/2007}}
[[Category:CentOS]]
[[Category:Customizing ZCS]]

Latest revision as of 18:02, 24 March 2015


The community-provided "Domain Disclaimer Extension" is not compatible with ZCS 6.0. Do not upgrade to 6.0 if you run the domain disclaimer extension. See http://bugzilla.zimbra.com/show_bug.cgi?id=37698.


This project integrate a system/wide domain signature (disclaimer) in Zimbra.
It covers the entire process, from install altermime, modify your postfix configuration, extending your Zimbra LDAP schemas, create disclaimers scripts related and, finally, an Admin Extension for Admin UI to enable and set domain disclaimers.
I wrote a small tutorial for add a domain disclaimer using altermime. First of all, i recommend to read my Zimbra wiki about domain disclaimers and altermime:

Adding_a_disclaimer_(altermime)_or_footer

Now, we are going to integrate this domain signature to the Zimbra Admin interface.

Note: this project have been tested for Zimbra OS and NE 5.0.2 on Red Hat/CentOS 5.x. 32 bits
Note 2: In every Zimbra version you must check zimbra.schema file, becouse they change it in other versions.

We are working on this project, this howto is under construction...(check the "last modified date" at the end of this page, always...)


Automatic Script Installation

Download from Zimbra Gallery http://gallery.zimbra.com/files/uploads/aff2791/zimbra_altermime_0.0.4.zip the automatic install script (actual version: 0.0.4)
(Thanks Pato for the altermime RPM!!!)
Note: this automatic instalation script is only for Red Hat or CentOS 4.x or 5.x 32 bits and Zimbra 5.0.2 only

Unzip

  unzip zimbra_altermime_install_0.0.4.zip
  cd zimbra_altermime_install_0.0.4

Execute

  ./install.sh



Output example:

  [root@mail zimbra_altermime_0.0.4]# ./install.sh 
  OK
  #####################
  # ALTERMIME INSTALL #
  #####################
  1) Installing Altermime RPM
  
  What is your Red Hat/CentOS version? 4 or 5? [5] 
  Preparing...                ########################################### [100%]
          package alterMIME-0.3.8-1_rh5 is already installed
  2) Creating a filter directory...
  3) Creating disclaimers directory...
  #########################
  # POSTFIX CONFIGURATION #
  #########################
  4) Backup master.cf file...
  5) Modifying master.cf configuration
  
  What is your email INCOMMING IP? [192.168.0.62] 
  
  What is your email OUTGOING IP? [192.168.0.62] 
  6) Restarting Zimbra Postfix
  postfix/postfix-script: stopping the Postfix mail system
  Thu Feb 21 15:25:51 2008  Service archiving is not enabled.  Skipping archiving
  Thu Feb 21 15:25:51 2008  Service imapproxy is not enabled.  Skipping imapproxy
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/conf/salocal.cf
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/conf/clamd.conf
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/cyrus-sasl-2.1.22.3z/etc/saslauthd.conf
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/conf/postfix_header_checks
  Thu Feb 21 15:25:51 2008  Rewrote: /opt/zimbra/conf/freshclam.conf
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e sender_canonical_maps='ldap:/opt/zimbra/conf/ldap-scm.cf'
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_alias_domains='ldap:/opt/zimbra/conf/ldap-vad.cf'
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e recipient_delimiter=
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_cert_file='/opt/zimbra/conf/smtpd.crt'
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_auth_only='yes'
  Thu Feb 21 15:25:51 2008  Executing /opt/zimbra/postfix/sbin/postconf -e myhostname='mail.test.cl'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_mailbox_domains='ldap:/opt/zimbra/conf/ldap-vmd.cf'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e mydestination='localhost'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e mailbox_size_limit='0'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_client_restrictions='reject_unauth_pipelining'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_alias_maps='ldap:/opt/zimbra/conf/ldap-vam.cf'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e transport_maps='ldap:/opt/zimbra/conf/ldap-transport.cf'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e sendmail_path='/opt/zimbra/postfix-2.4.3.4z/sbin/sendmail'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e message_size_limit='10240000'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e broken_sasl_auth_clients='yes'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e alias_maps='hash:/etc/aliases'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e manpage_directory='/opt/zimbra/postfix-2.4.3.4z/man'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_helo_required='yes'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e daemon_directory='/opt/zimbra/postfix-2.4.3.4z/libexec'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_transport='error'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e mynetworks='127.0.0.0/8 192.168.0.0/24 '
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_recipient_restrictions='reject_non_fqdn_recipient, permit_sasl_authenticated,       permit_mynetworks, reject_unauth_destination, reject_unlisted_recipient, reject_invalid_hostname, reject_non_fqdn_sender, permit'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_loglevel='1'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e relayhost=
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e disable_dns_lookups='no'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e virtual_mailbox_maps='ldap:/opt/zimbra/conf/ldap-vmm.cf'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e version='2.4.3.4z'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e mailq_path='/opt/zimbra/postfix-2.4.3.4z/sbin/mailq'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e header_checks='pcre:/opt/zimbra/conf/postfix_header_checks'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_use_tls='yes'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e queue_directory='/opt/zimbra/postfix-2.4.3.4z/spool'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e newaliases_path='/opt/zimbra/postfix-2.4.3.4z/sbin/newaliases'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_data_restrictions='reject_unauth_pipelining'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_reject_unlisted_recipient='no'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_tls_key_file='/opt/zimbra/conf/smtpd.key'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e command_directory='/opt/zimbra/postfix-2.4.3.4z/sbin'
  Thu Feb 21 15:25:52 2008  Executing /opt/zimbra/postfix/sbin/postconf -e smtpd_sasl_auth_enable='yes'
  postfix/postfix-script: warning: not owned by root: /opt/zimbra/postfix-2.4.3.4z/conf/disclaimers
  postfix/postfix-script: warning: not owned by root: /opt/zimbra/postfix-2.4.3.4z/conf/main.cf
  postfix/postfix-script: starting the Postfix mail system
  #########################
  # EXTENDING LDAP SCHEMA #
  #########################
  7) Changing zimbra.schema
  8) Restarting LDAP service
  Killing slapd with pid 7336 done.
  Started slapd: pid 18151
  #####################
  # DISCLAIMER SCRIPT #
  #####################
  9) Creating disclaimer script
  ###############################
  # SCRIPT FOR CHECK SIGNATURES #
  ###############################
  10) Installing perl RPMS
  warning: rpms5/perl-Convert-ASN1-0.21-2.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-HTML-Tagset-3.10-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-HTML-Parser-3.56-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-XML-NamespaceSupport-1.09-1.2.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-XML-SAX-0.16-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-Net-SSLeay-1.32-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-IO-Socket-SSL-1.12-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  warning: rpms5/perl-LDAP-0.34-1.el5.rf.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
  
  11) Creating /opt/zimbra/postfix/conf/check_disclaimers.sh
  
  Insert your ldap host [mail.test.cl] 
  
  Insert your ldap root password [xG3GnYzD3F] 
  12) Creating read_from_ldap.pl script
  13) Setting permissions
  14) Creating /etc/cron.hourly/check_disclaimer script
  ##################################
  # DEPLOYING DISCLAIMER EXTENSION #
  ##################################
  15) Deploying Domain Disclaimer Extension for Admin UI
  [] INFO: Deploying on mail.test.cl
  [] INFO: Deploy initiated.  (check the servers mailbox.log for the status)
  ###########
  # DONE!!! #
  ###########
  
  16) Set an signature for your domains (as zimbra user). For example:
          zmprov md mydomain.com zimbraDomainPrefMailSignatureEnabled TRUE
          zmprov md mydomain.com zimbraDomainPrefMailSignature "This is a domain disclaimer for mydomain.com"
          zmprov md mydomain.com zimbraDomainPrefMailSignatureHTML "This is a domain disclaimer for mydomain.com"
  
  17) Check your domain signature:
          zmprov gd mydomain.com | grep Signature
  
  18) Create domain signatures files:
          /opt/zimbra/postfix/conf/check_disclaimers.sh
  
  19) Logon in Admin interface and check for your Domain Extension...
  
  [root@mail zimbra_altermime_0.0.4]# su - zimbra
  [zimbra@mail ~]$ zmprov md test.cl zimbraDomainPrefMailSignatureEnabled TRUE
  
  [zimbra@mail ~]$ zmprov md test.cl zimbraDomainPrefMailSignature "This is a domain disclaimer for test.cl"
  
  [zimbra@mail ~]$ zmprov md test.cl zimbraDomainPrefMailSignatureHTML "This is a domain disclaimer for test.cl"
  
  [zimbra@mail ~]$ zmprov gd test.cl | grep Signature
  zimbraDomainPrefMailSignature: This is a domain disclaimer for test.cl
  zimbraDomainPrefMailSignatureEnabled: TRUE
  zimbraDomainPrefMailSignatureHTML: This is a domain disclaimer for test.cl
  
  [zimbra@mail ~]$ /opt/zimbra/postfix/conf/check_disclaimers.sh 
  Domain: test.cl         TRUE
  
  [zimbra@mail ~]$ ls /opt/zimbra/postfix/conf/disclaimers/
  test.cl  test.cl.html
  






Manual Install

Altermime Install


  • 2) Compile
  make


  • 3) Install altermime
  cp altermime /usr/local/bin/
  chown root.root /usr/local/bin/altermime
  chmod 755 /usr/local/bin/altermime


  • 4) Create a filter directory
  mkdir -p /opt/zimbra/var/spool/filter
  chown zimbra.zimbra /opt/zimbra/var/spool/filter/
  chmod 750 /opt/zimbra/var/spool/filter/


5) Create disclaimers directory

  mkdir -p /opt/zimbra/postfix/conf/disclaimers
  chown -R zimbra.zimbra /opt/zimbra/postfix/conf/disclaimers

Extending LDAP Schema

  • 6) You need to extend your LDAP schema: Edit /opt/zimbra/openldap/etc/openldap/schema/zimbra.schema

And add (line 40 aprox):

  objectIdentifier zimbraDomainPrefMailSignatureHTML ZimbraAttrType:656
  objectIdentifier zimbraDomainPrefMailSignature ZimbraAttrType:657
  objectIdentifier zimbraDomainPrefMailSignatureEnabled ZimbraAttrType:658

Line 3417 aprox.

  # Domain Disclaimer
  attributetype ( zimbraDomainPrefMailSignatureHTML
     NAME ( 'zimbraDomainPrefMailSignatureHTML' )
     DESC 'domain signature'
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
     SINGLE-VALUE)
  
  attributetype ( zimbraDomainPrefMailSignature
     NAME ( 'zimbraDomainPrefMailSignature' )
     DESC 'domain signature'
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
     SINGLE-VALUE)
  
  attributetype ( zimbraDomainPrefMailSignatureEnabled
     NAME ( 'zimbraDomainPrefMailSignatureEnabled' )
     DESC 'domain signature enabled'
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
     EQUALITY booleanMatch
     SINGLE-VALUE)

In: objectclass ( zimbraDomain (Line 5274 aprox)

  ...
  zimbraDomainPrefMailSignatureEnabled $
  zimbraDomainPrefMailSignature $
  zimbraDomainPrefMailSignatureHTML $
  ...


  • 7) Restart your LDAP service (as zimbra user):
  /opt/zimbra/bin/ldap stop
  /opt/zimbra/bin/ldap start


  • 8) Add a signature for your domain (as zimbra user):
  zmprov md mydomain.com zimbraDomainPrefMailSignatureEnabled TRUE
  zmprov md mydomain.com zimbraDomainPrefMailSignature "This is a domain disclaimer for mydomain.com"
  zmprov md mydomain.com zimbraDomainPrefMailSignatureHTML "This is a HTML domain disclaimer for mydomain.com"


  • 9) Check for your domain disclaimer (as zimbra user):
  zmprov gd mydomain.com

You will see:

  ...
  zimbraDomainPrefMailSignature: This is a domain disclaimer for mydomain.com
  zimbraDomainPrefMailSignatureHTML: This is a HTML domain disclaimer for mydomain.com
  zimbraDomainPrefMailSignatureEnabled: TRUE
  ...

In this moment, you can enable and set a Domain Signature in your Zimbra LDAP!!!.


Zimbra Postfix Configuration

  • 10) Backup you master.cf file
  cp /opt/zimbra/postfix/conf/master.cf /opt/zimbra/postfix/conf/master.cf.orig


  • 11) Modify /opt/zimbra/postfix/conf/master.cf
  smtp      inet  n       -       n       -       -       smtpd
      -o content_filter=dfilt:
  dfilt   unix    -       n       n       -       -       pipe
      flags=Rq user=zimbra argv=/opt/zimbra/postfix/conf/disclaimer -f ${sender} -- ${recipient}

OPTION. To ensure disclaimer is added only to outbound mail:

   192.168.0.1:smtp    inet  n       -       n       -       -       smtpd
   192.168.0.2:smtp    inet  n       -       n       -       -       smtpd
      -o content_filter=dfilt:
   127.0.0.1:smtp      inet  n       -       n       -       -       smtpd
      -o content_filter=dfilt:
   dfilt   unix    -       n       n       -       -       pipe
   flags=Rq user=zimbra argv=/opt/zimbra/postfix/conf/disclaimer -f ${sender} -- ${recipient}

The first IP (192.168.0.1) should be the Incoming IP of the Zimbra server.
The second IP (192.168.0.2) should be the Outgoing IP of the Zimbra server.


  • 12) Restart Zimbra postfix (as zimbra user)
  chown root.postfix /opt/zimbra/postfix/conf/master.cf
  zmmtactl stop
  zmmtactl start

Disclaimer Script

  • 13) Create /opt/zimbra/postfix/conf/disclaimer file.

This is the last version of /opt/zimbra/postfix/conf/disclaimer script:

  #!/bin/sh
  INSPECT_DIR=/opt/zimbra/var/spool/filter
  SENDMAIL=/opt/zimbra/postfix/sbin/sendmail
  ZIMBRA_HOME="/opt/zimbra"
  POSTFIX_HOME="$ZIMBRA_HOME/postfix/conf"
  DISCLAIMER_HOME="$POSTFIX_HOME/disclaimers"
  
  # Exit codes from <sysexits.h>
  EX_TEMPFAIL=75
  EX_UNAVAILABLE=69
  
  # Clean up when done or when aborting.
  trap "rm -f in.$$" 0 1 2 3 15
  
  # Start processing.
  cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
  
  cat > in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
  
  # obtain domain name From
  domain=`grep "From:" in.$$ | cut -d "@" -f 2 | cut -d ">" -f 1`
  
  # check for attribute "zimbraDomainPrefMailSignatureEnabled"
  enable=`/opt/zimbra/bin/zmprov gd $domain | grep zimbraDomainPrefMailSignatureEnabled | awk '{print $2}'`
  
if [ -f "$DISCLAIMER_HOME/$domain" ]; then
  if [ ! -z $enable ]; then                    # if not empty
       if [ "$enable" = "TRUE" ]; then          # if value = TRUE
          echo "TRUE"
          # Add a disclaimer to the mail
          /usr/local/bin/altermime --input=in.$$ --disclaimer=$DISCLAIMER_HOME/$domain \
             --disclaimer-html=$DISCLAIMER_HOME/$domain.html \
             --xheader="X-Copyrighted-Material: Please visit http://www.$domain/privacy.htm" || { echo Message content rejected; exit $EX_UNAVAILABLE; }
       else
               echo "FALSE"                    # value is FALSE
       fi
  else
       echo "NONE"                             # domain doesn't have LDAP attributes
  fi
else
  echo "NONE"
fi
     
     
  $SENDMAIL -i "$@" < in.$$
  
  exit $?


  • 14) Set permissions
  chgrp zimbra /opt/zimbra/postfix/conf/disclaimer
  chmod 750 /opt/zimbra/postfix/conf/disclaimer

CheckSignatures script

Now, we are going to write a script for check domain signature for each domain, and save the zimbraDomainPrefMailSignature attribute into a text file, because altermime script can’t read from LDAP directly and need a text file to use. This script must be added to crontab.

  • 15) Install perl RPMS
  perl-Convert-ASN1
  perl-HTML-Parser
  perl-HTML-Tagset
  perl-IO-Socket-SSL
  perl-LDAP-0.34-1
  perl-libwww-perl
  perl-Net-SSLeay
  perl-URI
  perl-XML-NamespaceSupport
  perl-XML-SAX

Note: this RPMs can be downloaded from:

  http://apt.sw.be/redhat/el4/en/i386/RPMS.dag/
  http://mirror.centos.org/centos/4/os/i386/CentOS/RPMS/

If you have CentOS 4.x or 5.x, only execute:

  yum install perl-LDAP -y


  • 16) Create /opt/zimbra/postfix/conf/check_disclaimers.sh script:
  #!/bin/bash
  
  # Results:
  #    TRUE: domain have a signature enabled
  #    FALSE: domain don't have a signature enabled
  #    NONE: domain don't have LDAP attributes for domain signature
     
  ZIMBRA_HOME="/opt/zimbra"
  POSTFIX_HOME="$ZIMBRA_HOME/postfix/conf"
  DISCLAIMER_HOME="$POSTFIX_HOME/disclaimers"
  
  # check for every domain
  for domain in `/opt/zimbra/bin/zmprov gad`; do
     echo -ne "Domain: $domain \t"
     dom=`echo $domain | cut -d "." -f 1`         # get only subdomain
  
     # check for attribute "zimbraDomainPrefMailSignatureEnabled"
     enable=`/opt/zimbra/bin/zmprov gd $domain | grep zimbraDomainPrefMailSignatureEnabled | awk '{print $2}'`
  
     if [ ! -z $enable ]; then                    # if not empty
          if [ "$enable" = "TRUE" ]; then          # if value = TRUE
                  echo "TRUE"
                  # save the domain signature value into a text file
                  $POSTFIX_HOME/read_from_ldap.pl $domain $DISCLAIMER_HOME/$domain
          else
                  echo "FALSE"                    # value is FALSE
                  # delete text file if exists
                  if [ -f $DISCLAIMER_HOME/$domain ]; then
                          rm -f $DISCLAIMER_HOME/$domain
                          rm -f $DISCLAIMER_HOME/$domain.html
                  fi
          fi
     else
          echo "NONE"                             # domain doesn't have LDAP attributes
          # delete text file if exists
          if [ -f $DISCLAIMER_HOME/$domain ]; then
                  rm -f $DISCLAIMER_HOME/$domain
                  rm -f $DISCLAIMER_HOME/$domain.html
          fi
     fi
  
  done


  • 17) Create /opt/zimbra/postfix/conf/read_from_ldap.pl script (Thanks Pato!!!)

Don’t forget to set $server (your_ldap_server) and $pass (your_ldap_password) variables.

  #!/usr/bin/perl -w
  # don't forget to check $server and $pass variables!!!
  
  use strict;
  use Net::LDAP;
  
  # Fixed Variables
  my $server="X.X.X.X";
  my $user="uid=zimbra,cn=admins,cn=zimbra";
  my $pass="xxxxxx";
  
  # Variables
  my @domain = split(/\./,$ARGV[0]);
  my $base = "dc=" . join(',dc=', @domain);
  my ($sub,$top) = @domain;
  my $tmpfile = $ARGV[1];
 
  if (!$ARGV[1] || !$ARGV[0]){
      print "\n\tUse: read_from_ldap.pl domain file\n\n";
      exit();
  }
 
  my $ldap = Net::LDAP->new("$server");
  my $mesg = $ldap->bind("$user", password => "$pass");
 
  
  $mesg = $ldap->search (
          base => $base,
          filter => "(&(objectClass=zimbraDomain) (dc=$sub))",
          attrs => ['zimbraDomainPrefMailSignature']
      );
  
  foreach ($mesg->entries) {
          my @result= $_->{'asn'}->{'attributes'};
          if($result[0][0]{'vals'}[0]){
              open (TMPFILE,">$tmpfile");
              print TMPFILE "---------------------------------------------------\n";
              print TMPFILE "$result[0][0]{'vals'}[0]\n";
         }
          else {
              print "No signature\n"
          }
  };
 
  $mesg = $ldap->search (
          base => "$base",
          filter => "(&(objectClass=zimbraDomain) (dc=$sub))",
         attrs => ['zimbraDomainPrefMailSignatureHTML']
     );
  
 
  foreach ($mesg->entries) {
          my @result= $_->{'asn'}->{'attributes'};
          if($result[0][0]{'vals'}[0]){
              open (TMPFILE2,">$tmpfile.html");
              print TMPFILE2 "---------------------------------------------------\n";
              print TMPFILE2 "$result[0][0]{'vals'}[0]\n";
          }
          else {
              print "No HTML signature\n";
              system ("cp -f $tmpfile $tmpfile.html");
          }
  };
  
  $mesg = $ldap->unbind;


  • 18) Add execution permissions:
  chmod 755 /opt/zimbra/postfix/conf/check_disclaimers.sh
  chmod 755 /opt/zimbra/postfix/conf/read_from_ldap.pl


  • 19) Add this script in a crontab (as root user):

Create /etc/cron.hourly/check_disclaimer

  #!/bin/bash
  /opt/zimbra/postfix/conf/check_disclaimers.sh

Add excecution permissions:

  chmod 755 /etc/cron.hourly/check_disclaimer

Admin Extension for Zimbra UI

This is my disclaimer Admin Extension. This extension add a Disclaimer Tab into domain configuration.

With this extension you can enable and set the Domain Disclaimers. (Thanks Greg!!!)

Download Zimbra Gallery http://gallery.zimbra.com/files/uploads/aff2791/disclaimer.zip file (this file seems to have moved there: http://gallery.zimbra.com/type/zimlet/domain-signature-disclaimer), and Deploy it into Zimbra Admin Extensions.
Note: Rename Disclaimer.zip to disclaimer.zip

Also if you have additional extensions installed that are already creating tabs, you may need to modify the extension. Unzip it, open the .js file and change the tab # from 6 to 7 or whatever is required.

This a view of Domain Disclaimer Admin Extension:

Disclaimer extension.jpg









Troubleshooting

Email doesn't work

  • Check you zimbra logs:

/var/log/zimbra.log

  • Check your master.cf file:

/opt/zimbra/postfix/conf/master.cf

Don't add a disclaimer into emails

  • Check you zimbra logs:
  tail -f /var/log/zimbra.log
  • Check /opt/zimbra/postfix/conf/disclaimer permissions. For Example:
  -rwxr-xr-x 1 root   root     1528 Dec  3 07:25 check_disclaimers.sh
  -rwxr-x--- 1 root   zimbra   1457 Dec  3 07:30 disclaimer
  drwxr-xr-x 2 zimbra zimbra   4096 Dec  3 07:27 disclaimers
  -rw-r--r-- 1 zimbra zimbra   1727 Dec  3 07:17 main.cf
  -rw-r--r-- 1 root   postfix  5291 Dec  3 07:05 master.cf
  • Check if /opt/zimbra/postfix/conf/disclaimers/domain.com exists

LDAP Broken

  • Check your /opt/zimbra/openldap/etc/openldap/schema/zimbra.schema

There is a backup...


To Do

  • Enable TEXTAREA only when zimbraDomainPrefMailSignatureEnabled is TRUE
  • Enable Domain Disclaimer Admin UI to domain admins (without full admin access)


--
Daniel Eugenin M.
IT Linux

References

Bug 37698 - Domain Disclaimer Extension non-portable

Verified Against: Zimbra NE 5.0.2 on Red Hat/CentOS 5.x Date Created: 11/29/2007
Article ID: https://wiki.zimbra.com/index.php?title=Domain_Disclaimer_Extension_Admin_UI Date Modified: 2015-03-24



Try Zimbra

Try Zimbra Collaboration with a 60-day free trial.
Get it now »

Want to get involved?

You can contribute in the Community, Wiki, Code, or development of Zimlets.
Find out more. »

Looking for a Video?

Visit our YouTube channel to get the latest webinars, technology news, product overviews, and so much more.
Go to the YouTube channel »

Jump to: navigation, search