On the BMW E46, a common problem is that the door seal tends to bow out and cause wind noise and leakage. BMW is aware of the issue. To fix the problem, you must get a factory door seal replacement and install it on your vehicle. It's not difficult to do; and once it's done, the leaks should go away.
Pull off the factory door seal with your hands. There is a gap in the seal at the bottom of the door, so the easiest way to do it is to pull the seal out via that gap and just pull all the way around.
Start applying the replacement seal at the bottom of the door, and in the centre, where the original split in the seal was located. Press the new seal into place with your hands, and start working it around the door frame.
Pry back any plastic panels that are in your way using the flathead screwdriver. Then you can tuck the seal behind the panel just like the factory did it.
Continue working your way around the panel until you complete the seal at the bottom of the door. Double-check for tightness, and shut the door to be sure that it closes tight and seals well.