Depends on the kind of metal. If it's your typical steel or aluminum building I would suggest DTM (direct to metal) paint. If you're not comfortable with using that, you can use Rust-Oleum. Oil based paint is your safest bet as it will hold out rust better than a latex. With aluminum you would be ok using a latex but steel rusts and latex paint eventually allows the rust to come through the paint film. Now, if this is a galvanized metal bldg, well, that requires a whole different primer, etc.
If it is in the budgets, I would use a self etching metal primer. You have to cleanup rust and all of course. I guess I would lean toward using a solvent based alkyd finish too but over a decent primer, I would not shy away from a nice waterbased acrylic if you live in state where oil finishes are hard to find.
You might need a rust converter or inhibitor over any fasteners in the siding. And if they are an unlike metal to the siding you probably have some inescapable electrolytic reaction going on. Generally speaking different metals, and especially when exposed to water or water vapor, do not like each other much. Age old water heater fitting problem comes to mind as does a copper printing plate I hung as signage for an artist friend once.
Copper printing plate, brass screws, lead anchors in the masonry. No too metals are touching each other thanks to nylon sleeves for the screws, plastic washer and much as I hate it, some silicon.
You probably do not have the luxury and fasteners are corroding?