--- a/cbp/modules/Greylisting.pm
+++ b/cbp/modules/Greylisting.pm
@@ -292,7 +292,7 @@
 						UPDATE
 							@TP@greylisting_autowhitelist
 						SET
-							LastSeen = ?
+							LastSeen = GREATEST(LastSeen, ?)
 						WHERE
 							TrackKey = ?
 						',
@@ -409,7 +409,7 @@
 		UPDATE 
 			@TP@greylisting_tracking
 		SET
-			LastUpdate = ?
+			LastUpdate = GREATEST(LastUpdate, ?)
 		WHERE
 			TrackKey = ?
 			AND Sender = ?
@@ -532,8 +532,10 @@
 										(TrackKey,Added,Comment)
 									VALUES
 										(?,?,?)
+									ON DUPLICATE KEY UPDATE
+										Added = LEAST (Added, ?)
 									',
-									$key,$sessionData->{'UnixTimestamp'},$blacklist
+									$key,$sessionData->{'UnixTimestamp'},$blacklist,$sessionData->{'UnixTimestamp'}
 								);
 								if (!$sth) {
 									$server->log(LOG_ERR,"[GREYLISTING] Database insert failed: ".
@@ -573,6 +575,8 @@
 				(TrackKey,Sender,Recipient,FirstSeen,LastUpdate,Tries,Count)
 			VALUES
 				(?,?,?,?,?,1,0)
+			ON DUPLICATE KEY UPDATE
+				Tries = Tries + 1
 			',
 			$key,$sessionData->{'Sender'},$sessionData->{'Recipient'},$sessionData->{'UnixTimestamp'},$sessionData->{'UnixTimestamp'}
 		);
@@ -782,8 +786,11 @@
 										(TrackKey,Added,LastSeen,Comment)
 									VALUES
 										(?,?,?,?)
+									ON DUPLICATE KEY UPDATE
+										Added = LEAST (Added, ?),
+										LastSeen = GREATEST (LastSeen, ?)
 									',
-									$key,$sessionData->{'UnixTimestamp'},$sessionData->{'UnixTimestamp'},$whitelist
+									$key,$sessionData->{'UnixTimestamp'},$sessionData->{'UnixTimestamp'},$whitelist,$sessionData->{'UnixTimestamp'},$sessionData->{'UnixTimestamp'}
 								);
 								if (!$sth) {
 									$server->log(LOG_ERR,"[GREYLISTING] Database insert failed: ".awitpt::db::dblayer::Error());
--- a/cbp/tracking.pm
+++ b/cbp/tracking.pm
@@ -176,7 +176,7 @@
 	
 					# Record tracking info
 					$sth = DBDo('
-						INSERT INTO @TP@session_tracking 
+						REPLACE INTO @TP@session_tracking
 							(
 								Instance,QueueID,
 								UnixTimestamp,
--- a/cbp/modules/Quotas.pm
+++ b/cbp/modules/Quotas.pm
@@ -267,7 +267,7 @@
 						@TP@quotas_tracking
 					SET
 						Counter = Counter + ?,
-						LastUpdate = ?
+						LastUpdate = GREATEST(LastUpdate, ?)
 					WHERE
 						QuotasLimitsID = ?
 						AND TrackKey = ?
@@ -287,8 +287,11 @@
 							(QuotasLimitsID,TrackKey,LastUpdate,Counter)
 						VALUES
 							(?,?,?,?)
+						ON DUPLICATE KEY UPDATE
+							LastUpdate = GREATEST(LastUpdate, ?),
+							Counter = Counter + ?
 						',
-						$qtrack->{'QuotasLimitsID'},$qtrack->{'TrackKey'},$qtrack->{'LastUpdate'},$newCounters{$qtrack->{'QuotasLimitsID'}}
+						$qtrack->{'QuotasLimitsID'},$qtrack->{'TrackKey'},$qtrack->{'LastUpdate'},$newCounters{$qtrack->{'QuotasLimitsID'}},$qtrack->{'LastUpdate'},$newCounters{$qtrack->{'QuotasLimitsID'}}
 					);
 					if (!$sth) {
 						$server->log(LOG_ERR,"[QUOTAS] Failed to insert quota_tracking item: ".awitpt::db::dblayer::Error());
@@ -430,7 +433,7 @@
 										@TP@quotas_tracking
 									SET
 										Counter = Counter + ?,
-										LastUpdate = ?
+										LastUpdate = GREATEST(LastUpdate, ?),
 									WHERE
 										QuotasLimitsID = ?
 										AND TrackKey = ?
--- a/cbp/modules/Accounting.pm
+++ b/cbp/modules/Accounting.pm
@@ -280,7 +280,7 @@
 					SET
 						MessageCount = MessageCount + ?,
 						MessageCumulativeSize = MessageCumulativeSize + ?,
-						LastUpdate = ?
+						LastUpdate = GREATEST(LastUpdate, ?)
 					WHERE
 						AccountingID = ?
 						AND TrackKey = ?
@@ -302,10 +302,17 @@
 							(AccountingID,TrackKey,PeriodKey,MessageCount,MessageCumulativeSize,LastUpdate)
 						VALUES
 							(?,?,?,?,?,?)
+						ON DUPLICATE KEY UPDATE
+							MessageCount = MessageCount + ?,
+							MessageCumulativeSize = MessageCumulativeSize + ?,
+							LastUpdate = GREATEST( LastUpdate, ?)
 						',
 						$atrack->{'AccountingID'},$atrack->{'TrackKey'},$atrack->{'PeriodKey'},
 						$newCounters{$atrack->{'AccountingID'}}->{'MessageCount'},
 						$newCounters{$atrack->{'AccountingID'}}->{'MessageCumulativeSize'},
+						$atrack->{'LastUpdate'},
+						$newCounters{$atrack->{'AccountingID'}}->{'MessageCount'},
+						$newCounters{$atrack->{'AccountingID'}}->{'MessageCumulativeSize'},
 						$atrack->{'LastUpdate'}
 					);
 					if (!$sth) {
@@ -456,7 +463,7 @@
 								@TP@accounting_tracking
 							SET
 								MessageCumulativeSize = MessageCumulativeSize + ?,
-								LastUpdate = ?
+								LastUpdate = GREATEST(LastUpdate, ?)
 							WHERE
 								AccountingID = ?
 								AND TrackKey = ?
