--- smeserver-sme9admin-1.5/root/usr/bin/sme9admind.email 2016-11-24 00:38:09.000000000 +0100 +++ smeserver-sme9admin-1.5/root/usr/bin/sme9admind 2016-12-15 19:16:31.000000000 +0100 @@ -93,7 +93,8 @@ "spamd/current", #pour les SPAMS "sshd/current", #pour les connexions ssh "messages", - "qpsmtpd/current", #pour les mails IN/OUT (RCPT FROM / MAIL TO) et les SPAM/VIRUS ?? + "qmail/current", #pour les mails IN/OUT + "qpsmtpd/current", #pour les SPAM/VIRUS ?? "sqpsmtpd/current", #idem pour les connexions securisées "proftpd/current", #pour la date de fin de connection FTP "secure", #pour les connexion FTP avec le username authentifie @@ -143,6 +144,39 @@ my ($afp_cpu,$afp_mem,$afp_nbproc); #squid.rrd => ps pidof my ($squid_cpu,$squid_mem,$squid_nbproc); +#mail_in s?qpsmtpd +# This is the list of plugins we can get stats for +# you can set the regex used to identify a line in the logs +my %denied = ( + dnsbl => qr{(dnsbl\s+90|naughty\s+90\d\s+\(dnsbl\))}, + rhsbl => qr{rhsbl\s+90}, + uribl => qr{uribl\s+90}, + clamav => qr{virus::clam(av|dscan)\s+90}, + check_earlytalker => qr{(check_)?earlytalker\s+90}, + check_basicheaders => qr{(check_basic)?headers\s+90}, + check_goodrcptto => qr{(check_)?goodrcptto\s+90}, + check_spamhelo => qr{((check_spam)?helo\s+90|naughty\s+90\d\s+\(helo\))}, + fcrdns => qr{fcrdns\s+90}, + karma => qr{(karma\s+90|naughty\s+90\d\s+\(karma\))}, + spf => qr{(sender_permitted_from|spf_deny)\s+90}, + dmarc => qr{dmarc\s+90}, + tls_failed => qr{tls\s+90}, + resolvable_fromhost => qr{(require_)?resolvable_fromhost} +); +my @others = qw(total_denied spam_denied other_denied spam_queued queued total); +my %cnt; +foreach (keys %denied, @others){ + $cnt{$_} = 0; +} +# pour qmail +my ($localqueue,$remotequeue); +my @resultsqm = qw(failure deferral success total); +my %cntqm; +my %cntqmlocal; +foreach (@resultsqm){ + $cntqm{$_} = 0; + $cntqmlocal{$_} = 0; +} #------------------------ #declaration de fonctions @@ -248,7 +282,7 @@ print $body "Uptime: ",`/usr/bin/uptime`; $body->close; - my $cnt=0; + my $cont=0; while(1) { # etape 1 : parsage des logs @@ -268,10 +302,10 @@ # etape 4 : envoi des eventuels mails d'alertes mail_alerte(); - mail_status() if ($params{'StatusInterval'} && !($cnt % $params{'StatusInterval'})); + mail_status() if ($params{'StatusInterval'} && !($cont % $params{'StatusInterval'})); sleep(300-time%300); - $cnt++; + $cont++; } } #Fin du main @@ -481,8 +515,15 @@ } - + # reset all counter before checking logs ($net_dhcp,$net_mail_in,$net_mail_out,$net_spam,$net_virus)=(0,0,0,0,0); + foreach (keys %denied, @others){ + $cnt{$_} = 0; + } + foreach (@resultsqm){ + $cntqm{$_} = 0; + $cntqmlocal{$_} = 0; + } foreach my $nom (@logs) { # on recupere un file handle positionné comme il faut my $fh = seek_log("$logdir$nom"); @@ -609,45 +650,96 @@ if($l =~ /identified spam/) {$net_spam++;next;} } } - elsif ($nom =~ /^s?qpsmtpd\/current$/) { + elsif ($nom =~ /^qmail\/current$/) { while ( defined(my $l = <$fh>)) { - #@4000000043a825c60ff26f84 6556 dispatching RCPT TO: - #@4000000043a825c60ff26f84 6556 dispatching RCPT TO: - if ($l =~ /@[0-9a-f]{24} \d+ dispatching RCPT TO:<([a-zA-Z0-9\._\-]+)@([a-zA-Z0-9\._\-]+)>/i) { - my ($user,$domain)=($1,$2); - foreach my $cur_filter (@MailDomainsMatch) { - # si le filtre courant est une adresse mail (contient @) - if ($cur_filter=~/@/) { - #on verifie la correspondance complete - if ($cur_filter =~ /^$user@.?$domain$/) {$net_mail_in++; last;} - } - else { - #sinon on ne verifie la correspondance que pour le domaine - if ($domain =~/.?$cur_filter/) {$net_mail_in++; last;} - } - } + # accounting for remote connections + # @400000004994ad092afa867c delivery 96906: success etc... + if ($l =~ m/^\@[0-9a-f]{24} delivery \d+: (success|failure|deferral).*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|CNAME_lookup_failed_temporarily|Sorry,_I_wasn't_able_to_establish_an_SMTP_connection)/i) { + my $result = $1; + $cntqm{$result}++; + next; + } + # accounting for local connections have to be after the remote + if ($l =~ m/^\@[0-9a-f]{24} delivery \d+: (success|failure|deferral).*/i) { + my $result = $1; + $cntqmlocal{$result}++; next; } - #@4000000043a1c3a908438ffc 7905 dispatching MAIL FROM: - #@4000000043a1c3a908438ffc 7905 dispatching MAIL FROM: - if ($l =~ /@[0-9a-f]{24} \d+ dispatching MAIL FROM:<([a-zA-Z0-9\._\-]+)@([a-zA-Z0-9\._\-]+)>/i) { - my ($user,$domain)=($1,$2); - foreach my $cur_filter (@MailDomainsMatch) { - # si le filtre courant est une adresse mail (contient @) - if ($cur_filter=~/@/) { - #on verifie la correspondance complete - if ($cur_filter =~ /^$user@.?$domain$/) {$net_mail_out++; last;} - } - else { - #sinon on ne verifie la correspondance que pour le domaine - if ($domain =~/.?$cur_filter/) {$net_mail_out++; last;} + + } + + # Calcul des totaux: + foreach (@resultsqm){ + $cntqm{total} = $cntqm{total} + $cntqm{$_} if $_ !~ /total/; + $cntqmlocal{total} = $cntqmlocal{total} + $cntqmlocal{$_} if $_ !~ /total/; + } + ## add qmail local queue + $localqueue=`find /var/qmail/queue/local/ -type f | wc -l`; + $localqueue=~ s/\D+//g; + ### add qmail remote queue + $remotequeue=`find /var/qmail/queue/remote/ -type f | wc -l`; + $remotequeue=~ s/\D+//g; + $net_mail_out=$cntqm{total}; + + } + elsif ($nom =~ /^s?qpsmtpd\/current$/) { + while ( defined(my $l = <$fh>)) { + # following code is copy paste from util_parse_mail from Daniel Berteaud for Zabbix monitoring + # just changed $line to $l + # We only want logterse lines like + # @400000004994ad092afa867c 18386 logging::logterse plugin: + # The format can slightly change depending on qpsmtpd version + next unless $l =~ m/^\@[0-9a-f]{24} \d+( \((queue|deny)\))? logging::logterse/; + + # Lets count all the message which have been denied 'msg denied before queued' + if ($l =~ m/msg denied before queued/){ + $cnt{total_denied}++; + # Now try to find the plugin responsible for the deny + foreach (keys %denied){ + if ($l =~ m/$denied{$_}/){ + $cnt{$_}++; + } } + next; } - next; - } + + # Rejected by spamassassin because spam score is too high + elsif ($l =~ m/spam score exceeded threshold/){ + $cnt{spam_denied}++; + next; + } + + # Tagged as spam, but kept accepted + elsif ($l =~ m/queued\s+<.*>\s+Yes,\s+(score|hits)=/){ + $cnt{spam_queued}++; + next; + } + + # Queued, not tagged as spam, those are the clean emails + elsif ($l =~ m/queued\s+<.*>\s+No,\s+(score|hits)=/){ + $cnt{queued}++; + next; + } + + } + # we try here.. maybe not the best place + $cnt{total}=0;# as we parse qpsmtpd and then sqpsmtpd, we need to start from scratch the count while doint the last one + # Now lets count other_denied, which is total_denied minus + # all the known plugins denied + $cnt{other_denied} = $cnt{total_denied}; + foreach (keys %denied){ + $cnt{total} = $cnt{total} + $cnt{$_}; + $cnt{other_denied} = $cnt{other_denied} - $cnt{$_}; + } + # yes we potentially run this twice for nothing at the first run... + foreach (@others){ + $cnt{total} = $cnt{total} + $cnt{$_} if ($_ !~ /total/); } + $net_mail_in=$cnt{spam_queued} + $cnt{queued}; + } + elsif ($nom eq "messages") { while ( defined(my $l = <$fh>)) { #Baux DHCP @@ -1215,7 +1307,7 @@ # print "if_ext_bin=$if_ext_bin,if_ext_bout=$if_ext_bout,if_ext_pin=$if_ext_pin,if_ext_pout=$if_ext_pout\n"; # print "net_samba=$net_samba,net_minlatency=$net_minlatency,net_avglatency=$net_avglatency,"; # print "net_maxlatency=$net_maxlatency,net_loss=$net_loss,net_spam=$net_spam,net_virus=$net_virus,"; -# print "net_dhcp=$net_dhcp,net_mail_in=$net_mail_in,net_mail_out=$net_mail_out\n"; + print "net_dhcp=$net_dhcp,net_mail_in=$net_mail_in,net_mail_out=$net_mail_out\n"; # print "cpu_total=$cpu_total,cpu_idle=$cpu_idle,cpu_system=$cpu_system,cpu_user=$cpu_user\n"; # print "cpu_nice=$cpu_nice,cpu_plist=$cpu_plist,cpu_runq=$cpu_runq"; # print "cpu_load1=$cpu_load1,cpu_load5=$cpu_load5,cpu_load15=$cpu_load15,cpu_uptime=$cpu_uptime\n"; @@ -1229,6 +1321,14 @@ # print "squid cpu=$squid_cpu, mem=$squid_mem, nb=$squid_nbproc\n"; # print "sessions_ftp=$sessions_ftp,sessions_ssh=$sessions_ssh,"; # print "sessions_vpn=$sessions_vpn,sessions_netbios=$sessions_netbios\n"; +#print "check_basicheaders=$mail_in_check_basicheaders,check_earlytalker=$mail_in_check_earlytalker,check_goodrcptto=$mail_in_check_goodrcptto,check_spamhelo=$mail_in_check_spamhelo," +#."clamav=$mail_in_clamav,dmarc=$mail_in_dmarc,dnsbl=$mail_in_dnsbl,fcrdns=$mail_in_fcrdns,karma=$mail_in_karma,other_denied=$mail_in_other_denied,queued=$mail_in_queued,resolvable_fromhost=$mail_in_resolvable_fromhost," +#."rhsbl=$mail_in_rhsbl,spam_denied=$mail_in_spam_denied,spam_queued=$mail_in_spam_queued,spf=$mail_in_spf,tls_failed=$mail_in_tls_failed,total=$mail_in_total,total_denied=$mail_in_total_denied,uribl=$mail_in_uribl\n"; +# foreach (keys %denied,@others){ print "$_: $cnt{$_},";}; print "\n"; +# print join(':', map {$cnt{$_}} keys %denied,@others); print "\n"; + foreach (@resultsqm){ print "local_$_:$cntqmlocal{$_},";}; foreach (@resultsqm){ print "$_:$cntqm{$_},";}; + print "localqueue=$localqueue,remotequeue=$remotequeue\n"; + print join(':', map {$cntqmlocal{$_}} @resultsqm) .":". join(':', map {$cntqm{$_}} @resultsqm); print ":". $localqueue .":". $remotequeue; print "\n"; my %rrds=( "sensors"=>"$sensors_temp1:$sensors_temp2:$sensors_temp_hd1:$sensors_temp_hd2:$sensors_fan_speed:$sensors_fan2_speed:$sensors_temp_hd3:$sensors_temp_hd4:$sensors_temp_hd5:$sensors_temp_hd6", @@ -1242,8 +1342,11 @@ "samba"=>"$samba_cpu:$samba_mem:$samba_nbproc", "afp"=>"$afp_cpu:$afp_mem:$afp_nbproc", "squid"=>"$squid_cpu:$squid_mem:$squid_nbproc", - "sessions"=>"$sessions_ssh:$sessions_ftp:$sessions_vpn:$sessions_netbios:$sessions_afp"); - my $error; + "sessions"=>"$sessions_ssh:$sessions_ftp:$sessions_vpn:$sessions_netbios:$sessions_afp", + "qpsmtpd" => join(':', map {$cnt{$_}} keys %denied,@others), + "qmail" => join(':', map {$cntqmlocal{$_}} @resultsqm) .":". join(':', map {$cntqm{$_}} @resultsqm) . ":". $localqueue .":". $remotequeue); + + my $error; foreach my $rrd (keys %rrds) { RRDs::update ("$rrddir/$rrd.rrd","N:$rrds{$rrd}"); @@ -1295,8 +1398,8 @@ gettext("(Possible reasons : do you receive spam ? a mailbomb ? mailing-lists ?)\n"), gettext("If you have access to the server-manager, use this link to modify the limit :\n"), "https://$SystemName.$DomainName/server-manager/cgi-bin/sme9admin?state=conf_alert&alert=MaxMailIn", - "\n# tail /var/log/qpsmtpd/current\n", - `/usr/bin/tail /var/log/qpsmtpd/current -n500 | /usr/local/bin/tai64nlocal |/bin/grep logterse`; + "\n# tail /var/log/qmail/current\n", + `/usr/bin/tail /var/log/qmail/current -n500 | /usr/local/bin/tai64nlocal |/bin/grep 'starting delivery'`; }], [ "($params{'MaxMailOut'} && $net_mail_out >= $params{'MaxMailOut'})", @@ -1306,7 +1409,9 @@ sprintf(gettext("you had set the alert limit to %s outgoing e-mails.\n"),$params{'MaxMailOut'}), gettext("(Possible reasons : do you send spam ? administrate a mailing-list ?)\n"), gettext("If you have access to the server-manager, use this link to modify the limit :\n"), - "https://$SystemName.$DomainName/server-manager/cgi-bin/sme9admin?state=conf_alert&alert=MaxMailOut"; + "https://$SystemName.$DomainName/server-manager/cgi-bin/sme9admin?state=conf_alert&alert=MaxMailOut", + "\n# tail /var/log/qmail/current\n", + `/usr/bin/tail /var/log/qmail/current -n500 |/usr/local/bin/tai64nlocal |/bin/grep -P "(starting delivery|delivery) \\d+: (msg \\d+|success|failure|deferral).*(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|CNAME_lookup_failed_temporarily|Sorry,_I_wasn't_able_to_establish_an_SMTP_connection|to remote .*)"`; }], [ "($params{'MaxDiskSpace'} && $pourc_hd_used >= $params{'MaxDiskSpace'})", --- smeserver-sme9admin-1.5/root/etc/e-smith/web/functions/sme9admin.email 2014-12-24 07:41:01.000000000 +0100 +++ smeserver-sme9admin-1.5/root/etc/e-smith/web/functions/sme9admin 2016-12-15 18:26:20.000000000 +0100 @@ -64,6 +64,8 @@ sub showVpn; sub showSsh; sub showDhcpd; +sub showQpsmtpd; +sub showQmail; #graph-pages-funcs sub showHardGraph; sub showNetGraph; @@ -397,7 +399,7 @@ else { #si c'est un service pour lequel on a des infos complementaires... - if($svc=~/^(httpd-e-smith|httpd-admin|smb|smbd|nmbd|atalk|squid|pptpd|dhcpd|sshd|proftpd|ftp|pppoe|pppd|wan)$/) {$details=1;} + if($svc=~/^(httpd-e-smith|httpd-admin|smb|smbd|nmbd|atalk|squid|pptpd|dhcpd|sshd|proftpd|ftp|pppoe|pppd|wan|qmail|qpsmtpd|sqpsmtpd)$/) {$details=1;} if ( -d "/service/$svc") {$cmd = "/usr/bin/sv s $svc";} # was -d /var/service or -d /service/ else {$cmd = "/sbin/e-smith/service $svc status|/bin/grep $svc";} my @res=`$cmd`; @@ -1052,6 +1054,8 @@ elsif ($q->param('service') eq 'proftpd') {showFtp();} elsif ($q->param('service') eq 'ftp') {showFtp();} elsif ($q->param('service') eq 'pppoe' || $q->param('service') eq 'wan' || $q->param('service') eq 'pppd' ) {showPppoe();} + elsif ($q->param('service') eq 'qpsmtpd' || $q->param('service') eq 'sqpsmtpd' ) {showQpsmtpd();} + elsif ($q->param('service') eq 'qmail') {showQmail();} } #---------------------------------------------------------------- @@ -1061,6 +1065,32 @@ showSvcGraph("httpd",gettext("System load for the apache web server (httpd-e-smith & httpd-admin processes) on ")); } #---------------------------------------------------------------- +#details du service qmail +sub showQmail +{ + my $start='-1d'; + printPopupMenu(gettext("View graphs on ")); + $start=$q->param('duree') if defined($q->param('duree')); + print $q->p($q->b($labels{"$start"})); + print $q->p($q->a ({href => "$progname"},gettext("Back\n"))); + #qmail local and remote email + createGraphQmail($start); + +} +#---------------------------------------------------------------- +#details du service s?qpsmtpd +sub showQpsmtpd +{ + my $start='-1d'; + printPopupMenu(gettext("View graphs on ")); + $start=$q->param('duree') if defined($q->param('duree')); + print $q->p($q->b($labels{"$start"})); + print $q->p($q->a ({href => "$progname"},gettext("Back\n"))); + #qpsmtpd incoming emails from outside the server( local network and internet) + createGraphQpsmtpd($start); + +} +#---------------------------------------------------------------- #details du service squid sub showSquid { @@ -1612,26 +1642,10 @@ "COMMENT:Min\\: ","GPRINT:mindhcp:MIN:%4.0lf ","GPRINT:minsamba:MIN:%4.0lf","COMMENT:\\n", "COMMENT:Last\\:","GPRINT:dhcp:LAST:%4.0lf ","GPRINT:samba:LAST:%4.0lf","COMMENT:\\n"); - #mail entrant/sortant/virus/spam - createShowGraph(gettext("Number of incoming/outgoing e-mails and amount of spam/viruses filtered."),"mail", - "--title=".gettext("Incoming/outgoing/spam/virus e-mails"), - "--start=$start", - "DEF:mail_in=$rrddir/net.rrd:mail_in:AVERAGE","DEF:maxmail_in=$rrddir/net.rrd:mail_in:MAX","DEF:minmail_in=$rrddir/net.rrd:mail_in:MIN", - "DEF:mail_out=$rrddir/net.rrd:mail_out:AVERAGE","DEF:maxmail_out=$rrddir/net.rrd:mail_out:MAX","DEF:minmail_out=$rrddir/net.rrd:mail_out:MIN", - "DEF:spam=$rrddir/net.rrd:spam:AVERAGE","DEF:maxspam=$rrddir/net.rrd:spam:MAX","DEF:minspam=$rrddir/net.rrd:spam:MIN", - "DEF:virus=$rrddir/net.rrd:virus:AVERAGE","DEF:maxvirus=$rrddir/net.rrd:virus:MAX","DEF:minvirus=$rrddir/net.rrd:virus:MIN", - "CDEF:adj_mail_out=0,mail_out,-", - "COMMENT: ","AREA:mail_in#1ED408:".gettext("Incoming mail"),"AREA:adj_mail_out#001ACD:".gettext("Outgoing mail"), - "LINE2:spam#DAA520:Spam","LINE2:virus#DB0013:Virus","COMMENT:\\n", - "COMMENT:Max\\: ","GPRINT:maxmail_in:MAX:%4.0lf ","GPRINT:maxmail_out:MAX:%4.0lf ", - "GPRINT:maxspam:MAX:%4.0lf ","GPRINT:maxvirus:MAX:%4.0lf","COMMENT:\\n", - "COMMENT:Min\\: ","GPRINT:minmail_in:MIN:%4.0lf ","GPRINT:minmail_out:MIN:%4.0lf ", - "GPRINT:minspam:MIN:%4.0lf ","GPRINT:minvirus:MIN:%4.0lf","COMMENT:\\n", - "COMMENT:Avg\\: ","GPRINT:mail_in:AVERAGE:%4.0lf ","GPRINT:mail_out:AVERAGE:%4.0lf ", - "GPRINT:spam:AVERAGE:%4.0lf ","GPRINT:virus:AVERAGE:%4.0lf","COMMENT:\\n", - "COMMENT:Last\\: ","GPRINT:mail_in:LAST:%4.0lf ","GPRINT:mail_out:LAST:%4.0lf ", - "GPRINT:spam:LAST:%4.0lf ","GPRINT:virus:LAST:%4.0lf","COMMENT:\\n"); - + #qmail local and remote email + createGraphQmail($start); + #qpsmtpd incoming emails from outside the server( local network and internet) + createGraphQpsmtpd($start); #ping latency createShowGraph(gettext("Average and maximal ping with the selected target."),"latency", @@ -1870,4 +1884,92 @@ print $q->p($q->a ({href => "$progname"},gettext("Back\n"))); } +sub createGraphQmail { + my($start)=(@_); + #qmail entrant/sortant + createShowGraph(gettext("Number of local/remote e-mails handled by the internal mail service (including other service generated e-mails)."),"qmail", + "--title=".gettext("Local/Remote e-mails"), + "--start=$start", + "DEF:local_failure=$rrddir/qmail.rrd:local_failure:AVERAGE","DEF:maxlocal_failure=$rrddir/qmail.rrd:local_failure:MAX","DEF:minlocal_failure=$rrddir/qmail.rrd:local_failure:MIN", + "DEF:local_deferral=$rrddir/qmail.rrd:local_deferral:AVERAGE","DEF:maxlocal_deferral=$rrddir/qmail.rrd:local_deferral:MAX","DEF:minlocal_deferral=$rrddir/qmail.rrd:local_deferral:MIN", + "DEF:local_success=$rrddir/qmail.rrd:local_success:AVERAGE","DEF:maxlocal_success=$rrddir/qmail.rrd:local_success:MAX","DEF:minlocal_success=$rrddir/qmail.rrd:local_success:MIN", + "DEF:local_total=$rrddir/qmail.rrd:local_total:AVERAGE","DEF:maxlocal_total=$rrddir/qmail.rrd:local_total:MAX","DEF:minlocal_total=$rrddir/qmail.rrd:local_total:MIN", + "DEF:remote_failure=$rrddir/qmail.rrd:remote_failure:AVERAGE","DEF:maxremote_failure=$rrddir/qmail.rrd:remote_failure:MAX","DEF:minremote_failure=$rrddir/qmail.rrd:remote_failure:MIN", + "DEF:remote_deferral=$rrddir/qmail.rrd:remote_deferral:AVERAGE","DEF:maxremote_deferral=$rrddir/qmail.rrd:remote_deferral:MAX","DEF:minremote_deferral=$rrddir/qmail.rrd:remote_deferral:MIN", + "DEF:remote_success=$rrddir/qmail.rrd:remote_success:AVERAGE","DEF:maxremote_success=$rrddir/qmail.rrd:remote_success:MAX","DEF:minremote_success=$rrddir/qmail.rrd:remote_success:MIN", + "DEF:remote_total=$rrddir/qmail.rrd:remote_total:AVERAGE","DEF:maxremote_total=$rrddir/qmail.rrd:remote_total:MAX","DEF:minremote_total=$rrddir/qmail.rrd:remote_total:MIN", + "DEF:local_queue=$rrddir/qmail.rrd:local_queue:AVERAGE","DEF:maxlocal_queue=$rrddir/qmail.rrd:local_queue:MAX","DEF:minlocal_queue=$rrddir/qmail.rrd:local_queue:MIN", + "DEF:remote_queue=$rrddir/qmail.rrd:remote_queue:AVERAGE","DEF:maxremote_queue=$rrddir/qmail.rrd:remote_queue:MAX","DEF:minremote_queue=$rrddir/qmail.rrd:remote_queue:MIN", + "CDEF:adj_remote_total=0,remote_total,-", "CDEF:adj_remote_queue=0,remote_queue,-", + "CDEF:adj_remote_failure=0,remote_failure,-", "CDEF:adj_remote_deferral=0,remote_deferral,-","CDEF:adj_remote_success=0,remote_success,-", + "COMMENT:Last\\t Min\\t Avg\\t Max\\r", + "COMMENT:\\n","AREA:local_total#1ED408:".gettext("Total local e-mails"),"COMMENT:\\u","GPRINT:local_total:LAST:%4.0lf ","GPRINT:minlocal_total:MIN:%4.0lf ","GPRINT:local_total:AVERAGE:%4.0lf ","GPRINT:maxlocal_total:MAX:%4.0lf \\r", + "COMMENT:\\n","COMMENT: ".gettext("Total remote e-mails"), "COMMENT:\\u","GPRINT:remote_total:LAST:%4.0lf ","GPRINT:minremote_total:MIN:%4.0lf ","GPRINT:remote_total:AVERAGE:%4.0lf ","GPRINT:maxremote_total:MAX:%4.0lf \\r", + + "COMMENT:\\n","COMMENT: ","AREA:adj_remote_success#0000ff:".gettext("Remote e-mail success"), "COMMENT:\\u","GPRINT:remote_success:LAST:%4.0lf ","GPRINT:minremote_success:MIN:%4.0lf ","GPRINT:remote_success:AVERAGE:%4.0lf ","GPRINT:maxremote_success:MAX:%4.0lf \\r", + "COMMENT:\\n","COMMENT: ","AREA:adj_remote_deferral#ffff00:".gettext("Remote e-mail deferral").":STACK", "COMMENT:\\u","GPRINT:remote_deferral:LAST:%4.0lf ","GPRINT:minremote_deferral:MIN:%4.0lf ","GPRINT:remote_deferral:AVERAGE:%4.0lf ","GPRINT:maxremote_deferral:MAX:%4.0lf \\r", + "COMMENT:\\n","COMMENT: ","AREA:adj_remote_failure#ff0000:".gettext("Remote e-mail failure").":STACK", "COMMENT:\\u","GPRINT:remote_failure:LAST:%4.0lf ","GPRINT:minremote_failure:MIN:%4.0lf ","GPRINT:remote_failure:AVERAGE:%4.0lf ","GPRINT:maxremote_failure:MAX:%4.0lf \\r", + + "COMMENT:\\n","LINE2:local_queue#666666:".gettext("Local queue"),"COMMENT:\\u", "GPRINT:local_queue:LAST:%4.0lf ","GPRINT:minlocal_queue:MIN:%4.0lf ","GPRINT:local_queue:AVERAGE:%4.0lf ","GPRINT:maxlocal_queue:MAX:%4.0lf \\r", + "COMMENT:\\n","LINE2:adj_remote_queue#000000:".gettext("Remote queue"),"COMMENT:\\u", "GPRINT:remote_queue:LAST:%4.0lf ","GPRINT:minremote_queue:MIN:%4.0lf ","GPRINT:remote_queue:AVERAGE:%4.0lf ","GPRINT:maxremote_queue:MAX:%4.0lf \\r", + "COMMENT:\\n"); + +} + +sub createGraphQpsmtpd { + my($start)=(@_); + #qpsmtpd + #check_basicheaders:check_goodrcptto:clamav:karma:tls_failed:rhsbl:check_earlytalker:resolvable_fromhost:dnsbl:fcrdns:spf:check_spamhelo:uribl:dmarc:total_denied:spam_denied:other_denied:spam_queued:queued:total + createShowGraph(gettext("Number of incoming e-mail connections to qpsmtpd services (outside of server incoming e-mails) and amount of spam/viruses filtered."),"qpsmtpd", + "--title=".gettext("Incoming qpsmtpd connections spam/virus/e-mails"), + "--start=$start", + "DEF:check_basicheaders=$rrddir/qpsmtpd.rrd:check_basicheaders:AVERAGE","DEF:maxcheck_basicheaders=$rrddir/qpsmtpd.rrd:check_basicheaders:MAX","DEF:mincheck_basicheaders=$rrddir/qpsmtpd.rrd:check_basicheaders:MIN", + "DEF:check_goodrcptto=$rrddir/qpsmtpd.rrd:check_goodrcptto:AVERAGE","DEF:maxcheck_goodrcptto=$rrddir/qpsmtpd.rrd:check_goodrcptto:MAX","DEF:mincheck_goodrcptto=$rrddir/qpsmtpd.rrd:check_goodrcptto:MIN", + "DEF:clamav=$rrddir/qpsmtpd.rrd:clamav:AVERAGE","DEF:maxclamav=$rrddir/qpsmtpd.rrd:clamav:MAX","DEF:minclamav=$rrddir/qpsmtpd.rrd:clamav:MIN", + "DEF:karma=$rrddir/qpsmtpd.rrd:karma:AVERAGE","DEF:maxkarma=$rrddir/qpsmtpd.rrd:karma:MAX","DEF:minkarma=$rrddir/qpsmtpd.rrd:karma:MIN", + "DEF:tls_failed=$rrddir/qpsmtpd.rrd:tls_failed:AVERAGE","DEF:maxtls_failed=$rrddir/qpsmtpd.rrd:tls_failed:MAX","DEF:mintls_failed=$rrddir/qpsmtpd.rrd:tls_failed:MIN", + "DEF:rhsbl=$rrddir/qpsmtpd.rrd:rhsbl:AVERAGE","DEF:maxrhsbl=$rrddir/qpsmtpd.rrd:rhsbl:MAX","DEF:minrhsbl=$rrddir/qpsmtpd.rrd:rhsbl:MIN", + "DEF:check_earlytalker=$rrddir/qpsmtpd.rrd:check_earlytalker:AVERAGE","DEF:maxcheck_earlytalker=$rrddir/qpsmtpd.rrd:check_earlytalker:MAX","DEF:mincheck_earlytalker=$rrddir/qpsmtpd.rrd:check_earlytalker:MIN", + "DEF:resolvable_fromhost=$rrddir/qpsmtpd.rrd:resolvable_fromhost:AVERAGE","DEF:maxresolvable_fromhost=$rrddir/qpsmtpd.rrd:resolvable_fromhost:MAX","DEF:minresolvable_fromhost=$rrddir/qpsmtpd.rrd:resolvable_fromhost:MIN", + "DEF:dnsbl=$rrddir/qpsmtpd.rrd:dnsbl:AVERAGE","DEF:maxdnsbl=$rrddir/qpsmtpd.rrd:dnsbl:MAX","DEF:mindnsbl=$rrddir/qpsmtpd.rrd:dnsbl:MIN", + "DEF:fcrdns=$rrddir/qpsmtpd.rrd:fcrdns:AVERAGE","DEF:maxfcrdns=$rrddir/qpsmtpd.rrd:fcrdns:MAX","DEF:minfcrdns=$rrddir/qpsmtpd.rrd:fcrdns:MIN", + "DEF:spf=$rrddir/qpsmtpd.rrd:spf:AVERAGE","DEF:maxspf=$rrddir/qpsmtpd.rrd:spf:MAX","DEF:minspf=$rrddir/qpsmtpd.rrd:spf:MIN", + "DEF:check_spamhelo=$rrddir/qpsmtpd.rrd:check_spamhelo:AVERAGE","DEF:maxcheck_spamhelo=$rrddir/qpsmtpd.rrd:check_spamhelo:MAX","DEF:mincheck_spamhelo=$rrddir/qpsmtpd.rrd:check_spamhelo:MIN", + "DEF:uribl=$rrddir/qpsmtpd.rrd:uribl:AVERAGE","DEF:maxuribl=$rrddir/qpsmtpd.rrd:uribl:MAX","DEF:minuribl=$rrddir/qpsmtpd.rrd:uribl:MIN", + "DEF:dmarc=$rrddir/qpsmtpd.rrd:dmarc:AVERAGE","DEF:maxdmarc=$rrddir/qpsmtpd.rrd:dmarc:MAX","DEF:mindmarc=$rrddir/qpsmtpd.rrd:dmarc:MIN", + "DEF:total_denied=$rrddir/qpsmtpd.rrd:total_denied:AVERAGE","DEF:maxtotal_denied=$rrddir/qpsmtpd.rrd:total_denied:MAX","DEF:mintotal_denied=$rrddir/qpsmtpd.rrd:total_denied:MIN", + "DEF:spam_denied=$rrddir/qpsmtpd.rrd:spam_denied:AVERAGE","DEF:maxspam_denied=$rrddir/qpsmtpd.rrd:spam_denied:MAX","DEF:minspam_denied=$rrddir/qpsmtpd.rrd:spam_denied:MIN", + "DEF:other_denied=$rrddir/qpsmtpd.rrd:other_denied:AVERAGE","DEF:maxother_denied=$rrddir/qpsmtpd.rrd:other_denied:MAX","DEF:minother_denied=$rrddir/qpsmtpd.rrd:other_denied:MIN", + + "DEF:spam_queued=$rrddir/qpsmtpd.rrd:spam_queued:AVERAGE","DEF:maxspam_queued=$rrddir/qpsmtpd.rrd:spam_queued:MAX","DEF:minspam_queued=$rrddir/qpsmtpd.rrd:spam_queued:MIN", + "DEF:queued=$rrddir/qpsmtpd.rrd:queued:AVERAGE","DEF:maxqueued=$rrddir/qpsmtpd.rrd:queued:MAX","DEF:minqueued=$rrddir/qpsmtpd.rrd:queued:MIN", + "DEF:total=$rrddir/qpsmtpd.rrd:total:AVERAGE","DEF:maxtotal=$rrddir/qpsmtpd.rrd:total:MAX","DEF:mintotal=$rrddir/qpsmtpd.rrd:total:MIN", + "CDEF:total_accepted=queued,spam_queued,+", + "COMMENT:Last\\t Min\\t Avg\\t Max\\r", + + "COMMENT:\\n","COMMENT:".gettext("Total"),"COMMENT:\\u","GPRINT:total:LAST:%4.0lf ","GPRINT:mintotal:MIN:%4.0lf ","GPRINT:total:AVERAGE:%4.0lf ","GPRINT:maxtotal:MAX:%4.0lf \\r", + "COMMENT:".gettext("Total accepted e-mails"),"COMMENT:\\u","GPRINT:total_accepted:LAST:%4.0lf ","GPRINT:total_accepted:MIN:%4.0lf ","GPRINT:total_accepted:AVERAGE:%4.0lf ","GPRINT:total_accepted:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:spam_queued#8fd487:".gettext("Accepted e-mails")."\\: ".gettext("spam queued"),"COMMENT:\\u","GPRINT:spam_queued:LAST:%4.0lf ","GPRINT:minspam_queued:MIN:%4.0lf ","GPRINT:spam_queued:AVERAGE:%4.0lf ","GPRINT:maxspam_queued:MAX:%4.0lf \\r", + "COMMENT:\\n","AREA:queued#1ED408:".gettext("Accepted e-mails")."\\: ".gettext("queued").":STACK","COMMENT:\\u","GPRINT:queued:LAST:%4.0lf ","GPRINT:minqueued:MIN:%4.0lf ","GPRINT:queued:AVERAGE:%4.0lf ","GPRINT:maxqueued:MAX:%4.0lf \\r", + + "COMMENT:\\n", "COMMENT:".gettext("Total denied e-mails"),"COMMENT:\\u","GPRINT:total_denied:LAST:%4.0lf ","GPRINT:mintotal_denied:MIN:%4.0lf ","GPRINT:total_denied:AVERAGE:%4.0lf ","GPRINT:maxtotal_denied:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:check_spamhelo#007a7a:".gettext("Denied e-mails")."\\: ".gettext("check_spamhelo").":STACK","COMMENT:\\u","GPRINT:check_spamhelo:LAST:%4.0lf ","GPRINT:mincheck_spamhelo:MIN:%4.0lf ","GPRINT:check_spamhelo:AVERAGE:%4.0lf ","GPRINT:maxcheck_spamhelo:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:other_denied#666666:".gettext("Denied e-mails")."\\: ".gettext("other reasons").":STACK","COMMENT:\\u","GPRINT:other_denied:LAST:%4.0lf ","GPRINT:minother_denied:MIN:%4.0lf ","GPRINT:other_denied:AVERAGE:%4.0lf ","GPRINT:maxother_denied:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:tls_failed#990099:".gettext("Denied e-mails")."\\: ".gettext("tls failed").":STACK","COMMENT:\\u","GPRINT:tls_failed:LAST:%4.0lf ","GPRINT:mintls_failed:MIN:%4.0lf ","GPRINT:tls_failed:AVERAGE:%4.0lf ","GPRINT:maxtls_failed:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:spf#00004f:".gettext("Denied e-mails")."\\: ".gettext("spf").":STACK","COMMENT:\\u","GPRINT:spf:LAST:%4.0lf ","GPRINT:minspf:MIN:%4.0lf ","GPRINT:spf:AVERAGE:%4.0lf ","GPRINT:maxspf:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:resolvable_fromhost#ff99ff:".gettext("Denied e-mails")."\\: ".gettext("resolvable_fromhost").":STACK","COMMENT:\\u","GPRINT:resolvable_fromhost:LAST:%4.0lf ","GPRINT:minresolvable_fromhost:MIN:%4.0lf ","GPRINT:resolvable_fromhost:AVERAGE:%4.0lf ","GPRINT:maxresolvable_fromhost:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:karma#ffff00:".gettext("Denied e-mails")."\\: ".gettext("karma").":STACK","COMMENT:\\u","GPRINT:karma:LAST:%4.0lf ","GPRINT:minkarma:MIN:%4.0lf ","GPRINT:karma:AVERAGE:%4.0lf ","GPRINT:maxkarma:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:check_basicheaders#ff00ff:".gettext("Denied e-mails")."\\: ".gettext("check_basicheaders").":STACK","COMMENT:\\u","GPRINT:check_basicheaders:LAST:%4.0lf ","GPRINT:mincheck_basicheaders:MIN:%4.0lf ","GPRINT:check_basicheaders:AVERAGE:%4.0lf ","GPRINT:maxcheck_basicheaders:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:check_goodrcptto#00ffff:".gettext("Denied e-mails")."\\: ".gettext("check_goodrcptto").":STACK","COMMENT:\\u","GPRINT:check_goodrcptto:LAST:%4.0lf ","GPRINT:mincheck_goodrcptto:MIN:%4.0lf ","GPRINT:check_goodrcptto:AVERAGE:%4.0lf ","GPRINT:maxcheck_goodrcptto:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:uribl#4c004c:".gettext("Denied e-mails")."\\: ".gettext("uribl").":STACK","COMMENT:\\u","GPRINT:uribl:LAST:%4.0lf ","GPRINT:minuribl:MIN:%4.0lf ","GPRINT:uribl:AVERAGE:%4.0lf ","GPRINT:maxuribl:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:rhsbl#7f7f7f:".gettext("Denied e-mails")."\\: ".gettext("rhsbl").":STACK","COMMENT:\\u","GPRINT:rhsbl:LAST:%4.0lf ","GPRINT:minrhsbl:MIN:%4.0lf ","GPRINT:rhsbl:AVERAGE:%4.0lf ","GPRINT:maxrhsbl:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:dnsbl#0000ff:".gettext("Denied e-mails")."\\: ".gettext("dnsbl").":STACK","COMMENT:\\u","GPRINT:dnsbl:LAST:%4.0lf ","GPRINT:mindnsbl:MIN:%4.0lf ","GPRINT:dnsbl:AVERAGE:%4.0lf ","GPRINT:maxdnsbl:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:check_earlytalker#7c7cff:".gettext("Denied e-mails")."\\: ".gettext("check_earlytalker").":STACK","COMMENT:\\u","GPRINT:check_earlytalker:LAST:%4.0lf ","GPRINT:mincheck_earlytalker:MIN:%4.0lf ","GPRINT:check_earlytalker:AVERAGE:%4.0lf ","GPRINT:maxcheck_earlytalker:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:fcrdns#827f00:".gettext("Denied e-mails")."\\: ".gettext("fcrdns").":STACK","COMMENT:\\u","GPRINT:fcrdns:LAST:%4.0lf ","GPRINT:minfcrdns:MIN:%4.0lf ","GPRINT:fcrdns:AVERAGE:%4.0lf ","GPRINT:maxfcrdns:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:dmarc#7f0000:".gettext("Denied e-mails")."\\: ".gettext("dmarc").":STACK","COMMENT:\\u","GPRINT:dmarc:LAST:%4.0lf ","GPRINT:mindmarc:MIN:%4.0lf ","GPRINT:dmarc:AVERAGE:%4.0lf ","GPRINT:maxdmarc:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:spam_denied#DAA520:".gettext("Denied e-mails")."\\: ".gettext("spam denied").":STACK","COMMENT:\\u","GPRINT:spam_denied:LAST:%4.0lf ","GPRINT:minspam_denied:MIN:%4.0lf ","GPRINT:spam_denied:AVERAGE:%4.0lf ","GPRINT:maxspam_denied:MAX:%4.0lf \\r", + "COMMENT:\\n", "AREA:clamav#ff0000:".gettext("Denied e-mails")."\\: ".gettext("virus").":STACK","COMMENT:\\u","GPRINT:clamav:LAST:%4.0lf ","GPRINT:minclamav:MIN:%4.0lf ","GPRINT:clamav:AVERAGE:%4.0lf ","GPRINT:maxclamav:MAX:%4.0lf \\r", + "COMMENT:\\n"); + +} --- smeserver-sme9admin-1.5/root/usr/share/doc/smeserver-sme9admin/create-rrd.sh.email 2014-12-24 07:41:01.000000000 +0100 +++ smeserver-sme9admin-1.5/root/usr/share/doc/smeserver-sme9admin/create-rrd.sh 2016-12-08 23:18:58.000000000 +0100 @@ -429,4 +429,83 @@ RRA:MIN:0.5:24:372 \ RRA:MIN:0.5:288:365 \ +# qpsmtpd.rrd : stats connexions email entrant + +# nombre et raisons de connexions refusées ou accéptées + +rrdtool create /var/lib/sme9admin/qpsmtpd.rrd -s 300 \ + DS:check_basicheaders:GAUGE:600:0:U \ + DS:check_goodrcptto:GAUGE:600:0:U \ + DS:clamav:GAUGE:600:0:U \ + DS:karma:GAUGE:600:0:U \ + DS:tls_failed:GAUGE:600:0:U \ + DS:rhsbl:GAUGE:600:0:U \ + DS:check_earlytalker:GAUGE:600:0:U \ + DS:resolvable_fromhost:GAUGE:600:0:U \ + DS:dnsbl:GAUGE:600:0:U \ + DS:fcrdns:GAUGE:600:0:U \ + DS:spf:GAUGE:600:0:U \ + DS:check_spamhelo:GAUGE:600:0:U \ + DS:uribl:GAUGE:600:0:U \ + DS:dmarc:GAUGE:600:0:U \ + DS:total_denied::GAUGE:600:0:U \ + DS:spam_denied::GAUGE:600:0:U \ + DS:other_denied::GAUGE:600:0:U \ + DS:spam_queued::GAUGE:600:0:U \ + DS:queued::GAUGE:600:0:U \ + DS:total::GAUGE:600:0:U \ + RRA:AVERAGE:0.5:1:12 \ + RRA:AVERAGE:0.5:1:72 \ + RRA:AVERAGE:0.5:1:288 \ + RRA:AVERAGE:0.5:6:336 \ + RRA:AVERAGE:0.5:24:372 \ + RRA:AVERAGE:0.5:288:365 \ + RRA:MAX:0.5:1:12 \ + RRA:MAX:0.5:1:72 \ + RRA:MAX:0.5:1:288 \ + RRA:MAX:0.5:6:336 \ + RRA:MAX:0.5:24:372 \ + RRA:MAX:0.5:288:365 \ + RRA:MIN:0.5:1:12 \ + RRA:MIN:0.5:1:72 \ + RRA:MIN:0.5:1:288 \ + RRA:MIN:0.5:6:336 \ + RRA:MIN:0.5:24:372 \ + RRA:MIN:0.5:288:365 \ + +# qmail.rrd : stats connexions email sortant local et distant + +# nombre et raisons de connexions refusées ou acceptées et file d'attente +rrdtool create /var/lib/sme9admin/qmail.rrd -s 300 \ + DS:local_failure:GAUGE:600:0:U \ + DS:local_deferral:GAUGE:600:0:U \ + DS:local_success:GAUGE:600:0:U \ + DS:local_total:GAUGE:600:0:U \ + DS:remote_failure:GAUGE:600:0:U \ + DS:remote_deferral:GAUGE:600:0:U \ + DS:remote_success:GAUGE:600:0:U \ + DS:remote_total:GAUGE:600:0:U \ + DS:local_queue:GAUGE:600:0:U \ + DS:remote_queue:GAUGE:600:0:U \ + RRA:AVERAGE:0.5:1:12 \ + RRA:AVERAGE:0.5:1:72 \ + RRA:AVERAGE:0.5:1:288 \ + RRA:AVERAGE:0.5:6:336 \ + RRA:AVERAGE:0.5:24:372 \ + RRA:AVERAGE:0.5:288:365 \ + RRA:MAX:0.5:1:12 \ + RRA:MAX:0.5:1:72 \ + RRA:MAX:0.5:1:288 \ + RRA:MAX:0.5:6:336 \ + RRA:MAX:0.5:24:372 \ + RRA:MAX:0.5:288:365 \ + RRA:MIN:0.5:1:12 \ + RRA:MIN:0.5:1:72 \ + RRA:MIN:0.5:1:288 \ + RRA:MIN:0.5:6:336 \ + RRA:MIN:0.5:24:372 \ + RRA:MIN:0.5:288:365 \ + + + echo -e "Creation of rrds files :\t\t[OK]" --- smeserver-sme9admin-1.5/root/etc/e-smith/sql/init/sme9admin.email 2014-12-24 07:41:01.000000000 +0100 +++ smeserver-sme9admin-1.5/root/etc/e-smith/sql/init/sme9admin 2016-12-08 23:18:19.000000000 +0100 @@ -39,3 +39,77 @@ #si c'est une freshinstall on cree les rrd sh /usr/share/doc/smeserver-sme9admin/create-rrd.sh fi + if [[ ! -f /var/lib/sme9admin/qpsmtpd.rrd ]]; then + # si le rrd qpsmtpd existe pas (nouveauté SME9) + rrdtool create /var/lib/sme9admin/qpsmtpd.rrd -s 300 \ + DS:check_basicheaders:GAUGE:600:0:U \ + DS:check_goodrcptto:GAUGE:600:0:U \ + DS:clamav:GAUGE:600:0:U \ + DS:karma:GAUGE:600:0:U \ + DS:tls_failed:GAUGE:600:0:U \ + DS:rhsbl:GAUGE:600:0:U \ + DS:check_earlytalker:GAUGE:600:0:U \ + DS:resolvable_fromhost:GAUGE:600:0:U \ + DS:dnsbl:GAUGE:600:0:U \ + DS:fcrdns:GAUGE:600:0:U \ + DS:spf:GAUGE:600:0:U \ + DS:check_spamhelo:GAUGE:600:0:U \ + DS:uribl:GAUGE:600:0:U \ + DS:dmarc:GAUGE:600:0:U \ + DS:total_denied:GAUGE:600:0:U \ + DS:spam_denied:GAUGE:600:0:U \ + DS:other_denied:GAUGE:600:0:U \ + DS:spam_queued:GAUGE:600:0:U \ + DS:queued:GAUGE:600:0:U \ + DS:total:GAUGE:600:0:U \ + RRA:AVERAGE:0.5:1:12 \ + RRA:AVERAGE:0.5:1:72 \ + RRA:AVERAGE:0.5:1:288 \ + RRA:AVERAGE:0.5:6:336 \ + RRA:AVERAGE:0.5:24:372 \ + RRA:AVERAGE:0.5:288:365 \ + RRA:MAX:0.5:1:12 \ + RRA:MAX:0.5:1:72 \ + RRA:MAX:0.5:1:288 \ + RRA:MAX:0.5:6:336 \ + RRA:MAX:0.5:24:372 \ + RRA:MAX:0.5:288:365 \ + RRA:MIN:0.5:1:12 \ + RRA:MIN:0.5:1:72 \ + RRA:MIN:0.5:1:288 \ + RRA:MIN:0.5:6:336 \ + RRA:MIN:0.5:24:372 \ + RRA:MIN:0.5:288:365 + fi + if [[ ! -f /var/lib/sme9admin/qmail.rrd ]]; then + # nombre et raisons de connexions refusées ou acceptées et file d'attente + rrdtool create /var/lib/sme9admin/qmail.rrd -s 300 \ + DS:local_failure:GAUGE:600:0:U \ + DS:local_deferral:GAUGE:600:0:U \ + DS:local_success:GAUGE:600:0:U \ + DS:local_total:GAUGE:600:0:U \ + DS:remote_failure:GAUGE:600:0:U \ + DS:remote_deferral:GAUGE:600:0:U \ + DS:remote_success:GAUGE:600:0:U \ + DS:remote_total:GAUGE:600:0:U \ + DS:local_queue:GAUGE:600:0:U \ + DS:remote_queue:GAUGE:600:0:U \ + RRA:AVERAGE:0.5:1:12 \ + RRA:AVERAGE:0.5:1:72 \ + RRA:AVERAGE:0.5:1:288 \ + RRA:AVERAGE:0.5:6:336 \ + RRA:AVERAGE:0.5:24:372 \ + RRA:AVERAGE:0.5:288:365 \ + RRA:MAX:0.5:1:12 \ + RRA:MAX:0.5:1:72 \ + RRA:MAX:0.5:1:288 \ + RRA:MAX:0.5:6:336 \ + RRA:MAX:0.5:24:372 \ + RRA:MAX:0.5:288:365 \ + RRA:MIN:0.5:1:12 \ + RRA:MIN:0.5:1:72 \ + RRA:MIN:0.5:1:288 \ + RRA:MIN:0.5:6:336 \ + RRA:MIN:0.5:24:372 \ + RRA:MIN:0.5:288:365 + fi