diff --git a/package.json b/package.json
index 149a708b52..e2b8d8cca6 100644
--- a/package.json
+++ b/package.json
@@ -186,7 +186,7 @@
 		"multer": "1.4.2",
 		"nested-property": "4.0.0",
 		"node-fetch": "2.6.1",
-		"nodemailer": "6.4.18",
+		"nodemailer": "6.5.0",
 		"object-assign-deep": "0.4.0",
 		"os-utils": "0.0.14",
 		"p-cancelable": "2.0.0",
diff --git a/src/client/widgets/server-metric/cpu-mem.vue b/src/client/widgets/server-metric/cpu-mem.vue
index f1c31d7cdf..ad9e6a8b0f 100644
--- a/src/client/widgets/server-metric/cpu-mem.vue
+++ b/src/client/widgets/server-metric/cpu-mem.vue
@@ -120,7 +120,7 @@ export default defineComponent({
 			if (this.stats.length > 50) this.stats.shift();
 
 			const cpuPolylinePoints = this.stats.map((s, i) => [this.viewBoxX - ((this.stats.length - 1) - i), (1 - s.cpu) * this.viewBoxY]);
-			const memPolylinePoints = this.stats.map((s, i) => [this.viewBoxX - ((this.stats.length - 1) - i), (1 - (s.mem.used / this.meta.mem.total)) * this.viewBoxY]);
+			const memPolylinePoints = this.stats.map((s, i) => [this.viewBoxX - ((this.stats.length - 1) - i), (1 - (s.mem.active / this.meta.mem.total)) * this.viewBoxY]);
 			this.cpuPolylinePoints = cpuPolylinePoints.map(xy => `${xy[0]},${xy[1]}`).join(' ');
 			this.memPolylinePoints = memPolylinePoints.map(xy => `${xy[0]},${xy[1]}`).join(' ');
 
@@ -133,7 +133,7 @@ export default defineComponent({
 			this.memHeadY = memPolylinePoints[memPolylinePoints.length - 1][1];
 
 			this.cpuP = (stats.cpu * 100).toFixed(0);
-			this.memP = (stats.mem.used / this.meta.mem.total * 100).toFixed(0);
+			this.memP = (stats.mem.active / this.meta.mem.total * 100).toFixed(0);
 		},
 		onStatsLog(statsLog) {
 			for (const stats of [...statsLog].reverse()) {
diff --git a/src/client/widgets/server-metric/mem.vue b/src/client/widgets/server-metric/mem.vue
index eab23c1be2..83aa71aa09 100644
--- a/src/client/widgets/server-metric/mem.vue
+++ b/src/client/widgets/server-metric/mem.vue
@@ -45,10 +45,10 @@ export default defineComponent({
 	},
 	methods: {
 		onStats(stats) {
-			this.usage = stats.mem.used / this.meta.mem.total;
+			this.usage = stats.mem.active / this.meta.mem.total;
 			this.total = this.meta.mem.total;
-			this.used = stats.mem.used;
-			this.free = this.meta.mem.total - stats.mem.used;
+			this.used = stats.mem.active;
+			this.free = this.meta.mem.total - stats.mem.active;
 		},
 		bytes
 	}
diff --git a/src/daemons/server-stats.ts b/src/daemons/server-stats.ts
index 57691fbc00..bc1da5eef6 100644
--- a/src/daemons/server-stats.ts
+++ b/src/daemons/server-stats.ts
@@ -28,7 +28,7 @@ export default function() {
 		const stats = {
 			cpu: roundCpu(cpu),
 			mem: {
-				used: round(memStats.used),
+				used: round(memStats.used - memStats.buffers - memStats.cached),
 				active: round(memStats.active),
 			},
 			net: {
diff --git a/yarn.lock b/yarn.lock
index 17b6adcac4..a2e691da4a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6995,10 +6995,10 @@ node-releases@^1.1.70:
   resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
   integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
 
-nodemailer@6.4.18:
-  version "6.4.18"
-  resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.18.tgz#2788c85792844fc17befda019031609017f4b9a1"
-  integrity sha512-ht9cXxQ+lTC+t00vkSIpKHIyM4aXIsQ1tcbQCn5IOnxYHi81W2XOaU66EQBFFpbtzLEBTC94gmkbD4mGZQzVpA==
+nodemailer@6.5.0:
+  version "6.5.0"
+  resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.5.0.tgz#d12c28d8d48778918e25f1999d97910231b175d9"
+  integrity sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==
 
 nofilter@^2.0.0:
   version "2.0.0"