From 7288e380eee0db9b4536073b0fa30cecc8ff2544 Mon Sep 17 00:00:00 2001 From: Dorian Niemiec Date: Tue, 17 Sep 2024 07:12:23 +0200 Subject: [PATCH] fix: improve the email domain validation by rejecting MX records pointing to unresolvable domains --- app/api/subscribe/route.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/api/subscribe/route.ts b/app/api/subscribe/route.ts index e5f282f..1c80542 100644 --- a/app/api/subscribe/route.ts +++ b/app/api/subscribe/route.ts @@ -74,7 +74,24 @@ export async function POST(req: NextRequest) { let isEmailHostValid = false; try { const mxRecords = await dns.resolveMx(emailDomain); - if (mxRecords.length > 0) isEmailHostValid = true; + if (mxRecords.length > 0) { + for (let i = 0; i < mxRecords.length; i++) { + try { + const aRecords = await dns.resolve4(mxRecords[i].exchange); + if (aRecords.length > 0) { + isEmailHostValid = true; + break; + } + } catch (err) {} + try { + const aaaaRecords = await dns.resolve6(mxRecords[i].exchange); + if (aaaaRecords.length > 0) { + isEmailHostValid = true; + break; + } + } catch (err) {} + } + } } catch (err) {} if (!isEmailHostValid) { return NextResponse.json(