feat!: remove non-functional Yahoo API verifier - #198
Merged
Conversation
The Yahoo API verifier has been broken since ~2025-12: the endpoint it posted to, /account/module/create?validateField=userId, now returns 404. Its test panicked and, until AfterShip#196, took the rest of the suite down with it. Investigation of Yahoo's current pages shows the underlying capability is gone, not merely relocated. Three independent flows were checked: - Signup, old per-field validation: endpoint is 404. - Signup, current page: a Next.js App Router single form POST to /account/create with no separate availability check; the only way to probe a username is to submit a full registration. - Forgot-password / find-username: also a single form POST guarded by a browser-fingerprint field, and it asks for a *recovery* email rather than the address under test. There is no public path left to determine whether a Yahoo address exists, so this follows the precedent of AfterShip#113 (Gmail verifier removal). BREAKING CHANGE: EnableAPIVerifier(YAHOO) is removed. The exported YAHOO constant is gone and EnableAPIVerifier now returns an error for every vendor. The smtpAPIVerifier interface and the apiVerifiers dispatch remain as an extension point for future vendors. Verified with go build/vet, golangci-lint (0 issues), and the full suite (go test -race -covermode atomic): ok, 89.5% coverage, no panics. This is the first clean run since December. Refs AfterShip#195 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
mzcaptainyang
approved these changes
Aug 24, 2026
Also corrects the v1.4.0 entry's link text: it read AfterShip#76 while pointing at pull/88. AfterShip#88 is the Gmail/Yahoo API support PR; AfterShip#76 is DisableCatchAllCheck, already referenced correctly under v1.3.3. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
hodge1997
approved these changes
Aug 24, 2026
NeoCN
added a commit
that referenced
this pull request
Aug 24, 2026
Resolves conflicts in verifier.go introduced by #198 (Yahoo API verifier removal): - imports: keep "net" (needed for *net.Resolver), drop "net/http" which became unused once the YAHOO case left EnableAPIVerifier. - Verifier struct: take main's updated apiVerifiers comment and keep this branch's new resolver field. Verified: go build, go vet, golangci-lint (0 issues), and the full suite (go test -race -covermode atomic) pass -- ok, 89.4% coverage.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Removes the Yahoo API verifier, which has been non-functional since ~December 2025.
Follows the precedent of #113 (Gmail verifier removal).
Closes #195.
Why
The endpoint the verifier posts to —
/account/module/create?validateField=userId— nowreturns 404. Before #196 its test also panicked and took the rest of the suite down with
it.
I checked whether it could simply be repointed at a current endpoint. It can't — Yahoo has
removed the "does this address exist" capability from every public flow, not just moved it.
Details and evidence are in #195; in short:
POSTto/account/createwith abrowser-fp-datafingerprint field and no separate availability check (verified across all17 page chunks — no validate REST path, no server-action IDs). The only way to probe a
username is to submit a full registration.
asks for a recovery email rather than the address under test.
What changes
smtp_by_api_yahoo.go,smtp_by_api_yahoo_test.goTestCheckSMTPOK_ByApi(Yahoo-only) insmtp_test.goYAHOOconstant; thecase YAHOOinEnableAPIVerifier; the now-unusednet/httpimportsmtpAPIVerifierinterface, theapiVerifiersmap, and the dispatch insmtp.go— as an extension point for future vendorsTestCheckSMTPUnSupportedVendorstays and still passes.Breaking change
EnableAPIVerifier(YAHOO)no longer works. The exportedYAHOOconstant is removed, andEnableAPIVerifiernow returns an error for every vendor (there are no built-in vendors left).Callers using it should drop the call; addresses at Yahoo domains fall through to the normal
SMTP path, same as any other domain.
Verification
go build ./...,go vet ./...,golangci-lint run ./...(0 issues), and the full suitewith the same flags CI uses (
go test -race -covermode atomic ./...):No panics, no failures — the first clean suite run since 2025-12-09.
This also unblocks other PRs (e.g. #188) that have been carrying a red check unrelated to their
own changes.
/cc @git-hulk — this removes a public API surface (
EnableAPIVerifier(YAHOO)), so flagging fora maintainer decision.
🤖 Generated with Claude Code