Amavisd-new + altermime + dkim, how to add image attachment in disclaimer in outgoing emails

Discussion in 'Server Operation' started by Eisteed, Mar 27, 2019.

  1. Eisteed

    Eisteed New Member

    Hello everybody, I've been working on debian 9 installation with virtualmin, I configured postfix & amavisd-new to use the disclaimer feature (as signature) as we need to configure this for multiple e-mails on multiple device and I did wanted some server based control over this and also because it's much more easier for any user (as they don't need to do anything :D)
    Everything is working great + DKIM also, but now I'm stuck with another problem.

    I need to use image attachment for my mail signature, as I can see this is the most "working" use of image in emails, I know it's not perfect but every other solution cause much more compatibility and/or blocked image on mail clients or webmail.

    I found a way to use altermime to attach file to a mail with this script :
    Code:
    #!/usr/bin/perl
    $mime = "desconocido";
    $boundary = "desconocido";
    $estado = 0; #0 Procesando cabecera
                 #1 Procesando cuerpo mime alternative
             #2 Procesando cuerpo mime mixed o related
                 #3 Procesando cuerpo mime no alternative mixed o related
    
    #Copy, paste and replace for each attachment file.
    
    sub printLogo {
    print "
    Content-Type: image/jpeg;
            name=\"image001.jpg\"
    Content-Transfer-Encoding: base64
    Content-ID: <image001.jpg\@05C39850.E4534190>
    
    /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAA
    AqACAAQAAAABAAAAMqADAAQAAAABAAAAMgAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAgMCAgICAgMC
    AwIDBAQEBAQEBAQFBQcGBQUGBQQEBggGBgcHBwcHBAUICQgHCQcHBwf/2wBDAQEBAQIBAgMCAgMH
    BQQFBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwf/wAAR
    CAAyADIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED
    AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol
    JicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW
    l5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3
    +Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3
    AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5
    OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan
    qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIR
    AxEAPwD++gjGMjGast8qh/T2psxXC4xmlkP7sA/xUAf5cX/BzJ/wU8/al+NH7cvxx/Za8C+OPH/g
    X9mH9mrVU8MTaXo8s2nW2tawiLLdXF9LEQZm8x9kaO2FSLcFyzV8W/8ABMX/AILBftbf8EzvG/wV
    16+8QfGvWfgl4w1uM+J/D3iK5nvNF17RCyRs2nR3Cn7PcRZdxNbsAzcMDX9H37Qf7G9n+11+1z/w
    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
    Fb/xM9ni7/eV6I0aKKK+7PmD/9k=
    ";
    }
    
    
    
    while (<STDIN>) {
      if ($estado==0){
            if ($_ =~ m/multipart\/related/i ){
              $mime="related";
            }
            if ($_ =~ m/multipart\/mixed/i ){
              $mime="mixed";
              $_ =~ s/multipart\/mixed/multipart\/related/i
            }
            if ($_ =~ m/multipart\/alternative/i ){
              $mime="alternative";
          $_ =~ s/multipart\/alternative/multipart\/related/i 
        }
            if ($_ =~ m/boundary/i ){
            @aboundary = split(/boundary=/, $_);
            $boundary = $aboundary[1];
                    $boundary =~ s/"//;
            $boundary =~ s/"\n//;
                    if ($mime eq "alternative") { 
                $_ =~ s/$boundary/$boundary.1/;
            }
            }
            if ($_ =~ m/--$boundary/){
            $estado=3;
                    if ($mime eq "alternative"){ 
                        print "--$boundary.1\n";
                print "Content-Type: multipart/alternative;\n";
                print "    boundary=\"$boundary\"\n";
                    print " \n\n";
                $estado=1;
            } elsif ($mime eq "mixed" or $mime eq "related"){
                $estado=2;
            }   
        }   
      }
      if ($estado==2){
        if ($_ =~ m/--$boundary--/i ){
    
            #Repeat next 2 for each Attacment
            print "\n--$boundary";
                printLogo;
        }   
      }
      print $_;
    }
    
    
    if ($mime eq "alternative"){
    
        #Repeat next 2 for each attachment
        print "\n--$boundary.1";
            printLogo;
    
    
        print "\n--$boundary.1--\n\n\n\n";   
    }
    
    
    
    I cannot join any link as I'm a new member, but you can find more about googling "addAttachFilter"

    The problem is I cannot use altermime as a standalone without amavisd-new as it breaks the DKIM signature (or can I ? I never manged to make it work without using amavisd-new) so I cannot use this script and my skills in coding are close to zero in this field :S

    So here's my questions
    Is there any way to configure amavisd-new to use this script and/or auto attach file in specific outgoing emails ?
    Or is there anyway to use altermime only but with a working DKIM signature.

    Thanks for the help !
     

Share This Page