If part of the alignment issue is vertical, which means if the bolt holes are off much so are the ports, then milling is the only proper option. People have elongated holes in the intake to get the bolts started, but that doesn't fix the port alignment issue.
I like to lay the intake on the assembled long block without a gasket. If everything lines up correctly that way, you will need to mill the intake gasket surface or the intake port head surface the same amount as the gasket thickness you will use. If the ports & bolt holes don't line up without a gasket, then I try to estimate the milling difference needed,+ or -, the gasket thickness.
I found it very difficult to get ports aligned perfectly even after milling because they don't allow any gasket matching on the heads or intake in the class I race in. There are also production tolerances, core shift, etc. in OEM and aftermarket parts that work against you. That includes the little bit that an intake can be moved forward and backwards.