What phishing is and how to spot it
Phishing is a message posing as a sender you trust so that you hand over a password, a code or money with your own hands. You cannot spot it by whether it looks professional; you can spot it with a fixed sequence of four questions.
- Lesson 4 of 12
- Beginner
- Free, no signup
The first question, because it is the only one the message cannot influence
Were you expecting this message?
Everything inside the message loses its standing
- do not travel by any link inside it
- the phone number inside it belongs to the message too
- open the site or app yourself and look there
- if the news is real it is in your own account too
Ask the other three questions anyway
- is it rushing you or giving a normal deadline?
- is the domain after the last dot the one you think it is?
- does it want a password, a code or a one-time code? it ends there
- from a colleague but out of character? confirm on a second route
The right branch does not make a message safe. Even one you were expecting stops right there if it asks for a password or a code.
Last checked: Facts and tool names in this lesson are re-checked against their sources on this date.
Why paying more attention does not solve phishing
Phishing does not attack your computer. It attacks the order in which you make decisions. There is no break-in involved: a message arrives, puts you in a state where thinking is hard, and then asks you to do something you would not normally do.
Every phishing message carries three things at once. A pretext that is plausible, an authority that is familiar, and an urgency that removes the time to think. Your account will be suspended, your order was rejected, you have until tonight. The urgency is not decoration; it is the tool itself.
Let us drop one misconception right away. For years people were told the sign of phishing is bad language and spelling mistakes. That sign no longer works. Fluent, error-free text costs nothing today and anybody can produce it. If your detection depends on the quality of the writing, you have staked it on precisely the thing that is easiest to fix.
Our position: spotting phishing is not a feeling, it is a procedure. A careful person still gets caught on a good day, because on a bad day nobody is paying attention. What works on the bad day too is a fixed sequence of questions, run the same way every time, even when the message came from a familiar address.

The four questions, asked in order
The order here is half the work. The questions run from cheapest to most expensive, meaning from the one you can answer without opening any link to the one that takes some checking. If the first question answers it, the rest are not needed.
One: was I expecting this? This is the only question the message itself cannot influence. An invoice for something you never ordered, a parcel you never sent, an account warning from a site where you have no account. If the answer is no, everything in the message loses its standing from that moment, including its links and the phone number written inside it.
Two: is it rushing me? Real organisations give deadlines and several routes for anything important. A threat to close the account tonight, a fine that multiplies with delay, a discount that ends within the hour: all of them do one job, which is to shut the thinking window. Urgency alone proves nothing, but once it is added to the first question the answer is nearly always clear.
Three: does the link go where it claims? This question needs a skill, and it is in the next section. The text of a link can be anything; what matters is the destination domain.
Four: is it asking for something that must never be given? A short list with no exceptions: passwords, two-factor codes, the code on the back of a bank card, one-time payment codes, recovery codes, and remote access to your device. No bank, no operator and no support desk asks for these. If somebody does, no matter how right the rest of the message looks, it ends there.
Two situations cut the sequence short. If the answer to question four is yes, there is no need to ask the rest. And if the message came from a genuinely familiar address but the content is out of character, drop the questions and go straight to what the last section describes: contact that person through a route you chose yourself.
What keeps a message alive and what stops it right there
Must be true before you act
- you were expecting this exact message
- the deadline is normal and there is no threat
- the domain after the last dot is right letter by letter
- the Authentication-Results header shows a pass
- the same news is visible inside your own account
Any one of these ends it there
- it wants an account password or a card password
- it wants a two-factor code or a one-time payment code
- it wants a card password in order to send you money
- it wants you to install a remote access program
- it changes the account number on a payment
The right column decides on its own: one row from it is enough to reject the message, even when the whole left column checks out.
Reading the address, the skill everything comes back to
In a web address, the only part that does not lie is the domain, and a domain is read from right to left: back from the last dot. In example.com/bank the domain is example.com and bank is just a folder on that site. Anybody can create any folder.
The three shapes that claim the most victims all trade on that one point. First, the real name as a subdomain: something like bankname.example.com, where the eye sees the familiar name and does not read the actual domain that sits after the last dot. Second, the real name as a path: example.com/bankname/login. Third, a domain that differs by one letter or wears a different suffix. All three look right at a glance, and a glance is all it takes.
The practical way to read one has only two steps. Find the last dot and read one word either side of it; those two pieces are the real identity of the site. The rest of the address, however long and however full of familiar words, is only what the owner of that domain typed. The full anatomy of an address and what each piece does has its own lesson in the internet and networks track, and it is worth reading before you go further here.
On a phone this is harder and we should say so: the address bar is short, long addresses are shown truncated, and holding a finger on a link does not always reveal the full destination either. The rule that still works on a phone is this: instead of checking the link, do not use the link. Open the banking app or the site yourself. If there is news, it is there too.
And one thing that rarely gets said: the padlock beside the address has nothing to do with the honesty of the site. That padlock only says the connection is encrypted, and a fake page can be encrypted just as easily. The padlock means nobody in the middle is reading what you say; it does not say who is at the other end.
The patterns seen most often in Iran
Local phishing messages come in a handful of fixed templates, and recognising the template is more useful than memorising examples. The examples change every month; the templates have held for years. We reproduce the actual text of none of them here, because the aim is recognition, not construction.
The banking template. The claim: something is wrong with your account or card. The ask: log into a gateway to verify your identity or reactivate. The structural tell: a page asking for the card number, the second password and the code from the SMS all in one form. A real bank gateway never collects all of that from a non-bank page, and does not ask for your internet banking password either.
The benefit and shares template. The claim: a payment is due to you, a subsidy, shares or a refund. The ask: register your banking details so it can be deposited. The structural tell: no organisation needs your card password in order to send you money. An account number is enough to deposit; the password is only needed to withdraw. That one sentence disables the entire template.
The parcel and customs template. The claim: a package is waiting and a small fee is outstanding. The ask: pay the small amount through a link. The structural tell: the amount is deliberately trivial so that you do not think it is worth checking, while what they actually want is the card details, not that amount.
The workplace template. The claim: a message from a colleague or a manager, usually in a perfectly ordinary tone. The ask: change the account number on a payment, or open a file. This template is the most dangerous because it carries none of the tells above. The only thing that stops it is the habit of confirming through a second route: calling that person on a number you already had.
One point about SMS that gets asked constantly: the sender name or number you see on the screen is not evidence. Even when it is the usual number, a new message lands in the same conversation thread and looks familiar. The rule that covers both cases is simple: never reach your bank from inside a message.
Who the sender really is, and what the email itself gives away
The From line of an email is text the sender typed. Exactly like the sender name on a paper envelope: anything can be written there. That is why three mechanisms were built so the receiving server can check whether the mail really came from that domain, and it writes the outcome into the headers of that same message.
SPF says which servers are allowed to send on behalf of this domain. DKIM puts a cryptographic signature on the message itself, checked against a public key published in DNS. DMARC says what the receiver should do when those two do not work out: nothing, put it in spam, or refuse it outright. How they work has its own lesson in that same internet and networks track; here we only want the security consequence.
The practical consequence is this: in any email you can open the Authentication-Results header and see what the receiving server concluded. If it says spf=fail or dkim=fail or dmarc=fail, the message made a claim it could not back. That is a solid signal and it takes seconds to see.
Now the most important sentence in this section, and one that is said almost nowhere: all three passing does not prove honesty. These three mechanisms answer one question and only that one: did this message really come from this domain? Somebody who registers a lookalike domain this morning can have all three records right by the evening, and from then on their mail arrives with a clean pass. So a pass means the sender owns this exact domain, and you still have to read for yourself whether that domain is the one you think it is or the one with a letter changed.
So the right order is: look at the header first, because a fail ends the matter there. If it passed, then compare the domain that passed, letter by letter, with the real one. The second step cannot be handed to any system; that is exactly where a human eye is required.
I clicked; what to do now, in order
First, something reassuring that also happens to be true: opening a page, on its own, is usually not a big event. The danger starts where you typed something or opened a file. So the first job is to know exactly what you did.
If the page merely opened and you entered nothing: close it and that is the end of it. There is no need to shut down the machine or cancel a bank card.
If you entered a password: log into that service by a different route, not by the link; type the address yourself or open the official app. Change the password, and if the same password was used elsewhere, change it there too. Then, in the settings of that account, look at the active sessions and sign every other device out. The order matters: while somebody has a live session open, changing the password alone does not throw them out.
If you entered a two-factor code as well: assume somebody is inside the account right now. Go through the route above quickly and regenerate the recovery codes immediately, since the old ones may have been seen.
If you gave card details: call the bank, on the number printed on the back of the card and not the one that was in the message, and block the card. Speed genuinely matters here.
And if this happened on a work account: tell whoever runs the site or the network the same minute, however embarrassing it feels. Delay is the thing that turns a small mistake into an incident, because in that gap somebody can message the rest of your colleagues from your account.
The order to follow after you typed a password
-
1
Change the password by another route
Type the address yourself or open the official app, not the link from that message.
-
2
Close the active sessions
In the account settings, sign out of every device. Without this step the first one is incomplete.
-
3
Regenerate the recovery codes
If a two-factor code was entered too, this step is immediate and does not wait.
-
4
Tell whoever needs to know
The bank for a card, and whoever runs the site or network for a work account. Delay is the most expensive part.
Step two is the one usually skipped, and it is where things stay broken: until the live session is closed, changing the password throws nobody out.
The fast path, with AI
Everybody says check the sender address, when the sender address is typed by the sender. What almost no user does, and what takes two minutes, is reading the verdict the receiving server already wrote and stored inside the message. Email headers are deliberately ugly and nobody has the patience for them; which is exactly why a language model does honest work here: turning a technical block into a sentence. A fast, cheap model of the Flash class is enough, and our current pick is listed in this site AI section.
- In your email service, open the original source of the message. In Gmail it is called show original, in most others view source.
- Copy only the header block, not the body of the message. If your own address or a client name appears in the headers, delete it there.
- Ask the model what spf, dkim and dmarc each came out as, and which domain each of them authenticated.
- Compare the domain that was authenticated with the real one, letter by letter, yourself. This is the last step and it is not handed to the model.
Copy-ready recipe
The prompt, with the header block attached:
These are the headers of an email. The body was deliberately not sent.
Answer only from these headers and guess nothing:
1) What did spf, dkim and dmarc each come out as? pass, fail or none?
2) Which exact domain did each of them authenticate? Quote the domains
verbatim.
3) Is the domain that dkim signed the same as the domain written in
From, or different?
4) If a result is not present in these headers, say it is not there;
do not invent a reason for it.
Finish with one sentence: which domain this message has proved it came
from. Do not comment on whether that domain is trustworthy; that is my job.
Before you trust the output: Here is the most important limit on this path, and without it the exercise is more dangerous than not doing it: all three passing only proves the message came from the domain it claimed. A lookalike domain registered this morning has all three in place by tomorrow, and its result is a pass too. So this path answers one question and hands you the second: is that domain the one you think it is? The second limit is simpler: do not put the body of the message into a chat, especially if a client name, an amount or personal details are in it. The headers are enough for this job.
AI in this kind of work
On this topic AI has two sides, and the honest thing is that both are real. The useful side is reading technical material an ordinary user never reads: email headers, the structure of a long address, the text of a terms page. The other side is that the same capability has made a flawless phishing message cheap to write and has disabled the one tell we spent years teaching people.
Tools that actually help
- Gemini For turning a block of email headers into one sentence, on its fast, cheap model. Google own page says the Gemini web app runs in over 230 countries and territories, and Iran is not on that list.
- Claude For when you want a long address or a terms text explained piece by piece. Iran is on neither of Anthropic two supported-countries lists, and we read that on their own page.
- ChatGPT The same two jobs. We make no claim about access from Iran: OpenAI supported-countries page returns 403 to this server.
Where it backfires
The first risk has to be said without softening: the bad language tell is dead. Spotting phishing by spelling errors and clumsy translation was taught for years and no longer works, because producing fluent, error-free text has become effectively free. If the training you give your colleagues still stands on that tell, change the training; the structural tells in this lesson, not expecting the message, urgency, the domain and the request for a secret, none of them go away when the writing improves. The second risk is asking a model is this phishing? It will answer and the answer will look confident, while it has opened no link and checked no domain; worse, lookalike domains blur into the real ones in training data. The third risk is about you: a suspicious message that arrived for you is usually full of real information, from a client name to an invoice amount, and putting it into a public chat means sending that information to another company; whether content is retained or feeds training depends on the plan and settings of that service, and the companies write it down, including on Google privacy page for the Gemini apps.
Sources: Google: Gemini Apps privacy Where you can use the Gemini web app Anthropic supported countries
Where this advice stops
The four questions in this lesson were built for mass campaigns and that is where they do the most work. Where they fall short is a targeted attack: a message that knows the name of your real project, arrives at the right moment, and is sent from the genuine account of a colleague who was compromised first. That message passes all four questions, because everything about it is true. The only thing left in that situation is the habit of confirming through a second route before any money moves or any account number changes. The second boundary is the tooling: browser warnings and spam filters work from lists of what is already known, and a page built an hour ago is on no list yet, so the absence of a warning proves nothing. And the third: this lesson protects a person, not an organisation; there, team training and a reporting route that shames nobody matter more than any technical setting.
From our own work
We run seven domains on this server and we configured all seven for sending mail ourselves. On 2026-09-07 we read all three records for all seven domains from public DNS, and all three were present on all seven. What that work taught us is exactly the sentence written in the fourth section of this lesson: standing these records up is three DNS records and one afternoon. Somebody registering a lookalike domain puts up precisely the same three, and from the next day their mail arrives with a clean pass. A second point came out of the same check and it includes us: the DMARC policy across our seven domains is not the same. Three sit at quarantine, one at reject, and three are still at none, meaning report only and do nothing. That is not an excuse but a decision: moving a domain from none to reject without reading the reports first risks dropping our own real email. So these records are a dial the domain owner turns, not a seal of approval somebody handed them. Any reader can see the same thing on our domain and on their own bank domain with one dig command.
Real follow-up questions
I only opened the link and typed nothing; has something happened?
In most cases no. A page that merely opened and took nothing from you has usually done nothing beyond learning that the link was opened. Two situations are exceptions: if a file was downloaded and run after it opened, or if your browser and operating system have gone a long time without updates. If neither applies, close the page and carry on.
The SMS came from the bank usual number; can it still be fake?
The name or number you see on the screen is not evidence, and we will not claim exactly when it can be forged, because we have not measured that ourselves. What stays true regardless is this: never reach your bank from inside an SMS. Open the banking app or its site yourself; if there really is a problem, it is written there too.
Do antivirus or browser warnings not stop phishing?
They catch a share of it, and that share is worth having, but both work from lists of addresses already known. A phishing page built today is on no list until somebody reports it. So seeing a warning is a strong signal, while not seeing one proves nothing.