There doesn’t seem to be a way to mark a message as ‘not spam’, after having previously marked it as spam.
Running version 5.908
K9 does not have an option/ability to mark a message as spam (hence no ability to undo that either).
How are you “marking a message as spam”?
@Unaligned_Coder Welcome to the forum.
You “unspam” a message by manually moving it back to a different folder.
K-9 does not do any heuristic on the mails. If you mark a mail as spam and receive the exact same message repeatedly, K-9 will not “auto spam” the copies.
This only works in conjunction with your mail server. If it is able to, it will analyse what you put into the spam folder. Then the server (not K-9) can learn from the mails and move future mails automatically.
However, you must prepare corresponding rules on the server. This is a bit tricky as K-9 only moves the mail into the spam folder. It does not mark the mail with a spam marker. Thus, many server-side rules cannot apply (e.g., move to spam if spam index is 5* or above).
A clarification on this - K9 doesn’t have filtering capabilities so doesn’t, on its own, move mail to the spam (or any other) folder. Rather, it displays what is there - put there manually by the user or filtering done by the server or another client - on the server. With K9 the user can manually move messages between folders under an account, which is how, in the context of K9, you would “mark” a message as spam, or not-spam. How that impacts the “training” of spam filtering on your server or another client are separate issues.