Is it safe to salt a MAC? Say that I define a scheme where the salt is public and is MAC-ed with the message:

$k = KDF(password, salt)$
$tag = MAC_k(salt || message)$

Is it safe to salt the MAC this way? Assume that the salt is public and can be modified by an attacker.
Safe, yes, but it doesn't really give you anything.  The only use for a salt is to mitigate precomputation attacks against a password.  Since it is public, it gives you no extra MAC security.  By the property of the MAC, no adversary can forge one without knowing the key, and by the security of your KDF (which includes the salt) no one should be able to get the key.  So, it is pretty much pointless.